자세한 이론 내용은 책 참조... 정리하는데 시간이 너무 지나감
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_USART_Tx_Pin;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIO_USART,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_USART_Rx_Pin;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIO_USART,&GPIO_InitStructure);
}
void USART1_Init(void)
{
USART_InitTypeDef USART_InitStructure;
/*USARTx configured as follow:
-BaudRate : 115200 baud
-Word Length = 8bits
-One Stop Bit
-No parity
-Hardware flow control disabled (RTS and CTS signals)
-Receive and transmit enabled
*/
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx|USART_Mode_Tx;
//Configure the USARTx
USART_Init(USART1, &USART_InitStructure);
//Enable the USART1
USART1->CR1 |= CR1_UE_Set;
}
typedef struct
{
__IO uint16_t SR;
uint16_t RESERVED0;
__IO uint16_t DR;
uint16_t RESERVED1;
__IO uint16_t BRR;
uint16_t RESERVED2;
__IO uint16_t CR1;
uint16_t RESERVED3;
__IO uint16_t CR2;
uint16_t RESERVED4;
__IO uint16_t CR3;
uint16_t RESERVED5;
__IO uint16_t GTPR;
uint16_t RESERVED6;
} USART_TypeDef;
UART : CPU에서 나오는 신호레벨(TTL)
RS-232 : SP
P240. Reference Table180 참조
BaudRate
:Tx/Rx baud=fck/(16*USARTDIV)
ex)Baudrate 115200으로 잡을 경우
DIV_Mantissa=39=0b100111=0x27
DIV_Fraction=16*0.625=10=0xA
USARTDIV=0x27A
WordLength
#define USART_WordLength_8b ((uint16_t)0x0000)
#define USART_WordLength_9b ((uint16_t)0x1000)
StopBits
#define USART_StopBits_1 ((uint16_t)0x0000)
#define USART_StopBits_0_5 ((uint16_t)0x1000)
#define USART_StopBits_2 ((uint16_t)0x2000)
#define USART_StopBits_1_5 ((uint16_t)0x3000)
Parity
#define USART_Parity_No ((uint16_t)0x0000)
#define USART_Parity_Even ((uint16_t)0x0400)
#define USART_Parity_Odd ((uint16_t)0x0600)
HadwafeFlowControl
#define USART_HardwareFlowControl_None ((uint16_t)0x0000)
#define USART_HardwareFlowControl_RTS ((uint16_t)0x0100)
#define USART_HardwareFlowControl_CTS ((uint16_t)0x0200)
#define USART_HardwareFlowControl_RTS_CTS ((uint16_t)0x0300)
USART_Mode
#define USART_Mode_Rx ((uint16_t)0x0004)
#define USART_Mode_Tx ((uint16_t)0x0008)
#define CR1_UE
void SerialPutChar(uint8_t c){
USART_SendData(USART1,c);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}
USART_FLAG_TXE : 송신을 할 수 있는 상태인지 검사
새로운 명령
apbclock = HSI_Value
CR2_STOP_CLEAR_Mask
USART_StopBits
CR1_CLEAR_Mask
USART_WordLength
USART_Parity
USART_Mode
'중도연재종료 > CORTEX M3' 카테고리의 다른 글
Get Character (0) | 2013.06.14 |
---|---|
당분간 정지 (0) | 2013.06.14 |
UART_ Hello World 찍기_1 (0) | 2013.06.08 |
GPIO_Init (0) | 2013.05.25 |
Key가 눌린것 알아채기 (0) | 2013.05.24 |