1:先配置端口:
GPIO_Init(LEDS_PORT, ( TX ), GPIO_MODE_OUT_PP_LOW_FAST);
GPIO_Init(LEDS_PORT, ( RX ) , GPIO_MODE_IN_PU_NO_IT );
注意:在开始的时后程序写完后一直出现接收不到数据,在网上问了许多人,然后才发先原来是没有把,接收端口配置成接收状态,也有人说不用配置,直接用就接收到数据,但是我的实在实现不了。
2:函数初始化:
void Uart_Init(void)
{
//UART1_DeInit();
UART1_Init((u32) 9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1,
UART1_PARITY_NO , UART1_SYNCMODE_CLOCK_DISABLE , UART1_MODE_TXRX_ENABLE);
UART1_ITConfig(UART1_IT_RXNE_OR,ENABLE );
UART1_Cmd(ENABLE );
}
注意:这个初始化的函数应在时钟函数初始化之后,因为Uart_Init():在调用时使用了关于时钟的一些参数,因为我们经常会在工程中切换函数,这样会对发送和接收数据造成影响。。
3 :接收 ,我么可以在主函数中接收,也可以在串口中断中接收数据。。
@far @interrupt void UART_RI (void)
{
disableInterrupts();
if(UART1_GetITStatus(UART1_IT_RXNE )!= RESET)
{
Res =UART1_ReceiveData8()-0x30;
}
//UART1_SendByte( keycounter);
UART1_SendByte(1);
UART1_SendByte(2);
UART1_SendByte(3);
UART1_SendByte(4);
//data_Analysis_1();
enableInterrupts();
}
这是我在使用时遇到的一些问题