자세한 이론 내용은 책 참조... 정리하는데 시간이 너무 지나감


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
Posted by 십자성군