最后使能串口。
/* Enable USART */
USART_Cmd(USART1,ENABLE);
main主函数,功能是LCD显示串口接收的10个字符(如果不是ascii码则不显示),串口倒序返回接收到的10个字节。
intmain(void){/*省略初始化部分代码*/
while(1)
{
if(LCD_refresh_**){
LCD_refresh_**=0;
LCD_ShowString(0,16,receive_data);
receive_num--;
USART_SendData(USART1,receive_data[receive_num--]);
send_**=1;
}
}}
因为使能了中断,我们还需要编写中断函数。
voidUSART1_IRQHandler(void){
if(USART_GetFlagStatus(USART1,USART_FLAG_TC))
{
if(send_**==1){
if(receive_num==0){
USART_SendData(USART1,receive_data[receive_num]);
send_**=0;
receive_**=1;
}else{
USART_SendData(USART1,receive_data[receive_num--]);
}
}
USART_ClearFlag(USART1,USART_FLAG_TC);
}
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE))
{
if((receive_**)&&(send_**==0)){
receive_data[receive_num++]=USART_ReceiveData(USART1);
if(receive_num==10){
receive_**=0;
LCD_refresh_**=1;
}
}
USART_ClearFlag(USART1,USART_FLAG_RXNE);
}}
|