杨桃32学习笔记,本文图片文字皆为转述
对串口发送程序进行修改位接收
编译烧录后结果为
查询方式接收程序解读
//查询方式接收
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE) != RESET){ //查询串口待处理标志位
a =USART_ReceiveData(USART1);//读取接收到的数据
printf("%c",a); //把收到的数据发送回电脑
}
使用到的固件库函数
USART_FLAG_RXNE=1表示来数据
这种方式有很大的弊端,主函数使用循环不断地查看接收标志位,
所以不常用这种方式,而是打开中断使能,把相应的程序复制到中断服务函数。
注意区分这里使用的和查询方式接收不同的获取标志位函数。
中断方式接收程序解读
void USART1_IRQHandler(void){ //串口1中断服务程序(固定的函数名不能修改)
u8 Res;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET){ //接收中断(接收到的数据必须是0x0d 0x0a结尾)
Res =USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据
printf("%c",Res); //把收到的数据以 a符号变量 发送回电脑
}
烧录验证