转载---点击打开链接
原子哥的开发板例程《实验4 串口实验》中,是利用特殊数据(回车符)来确定结束的,所以必须在发送数据后再发送一个回车符(比如说有的项目中一帧数据中中间要是有回车符就没法用了),其实STM32单片机的接收不定长度字节的数据有种比较方便的方法,那就是利用STM32单片机的IDLE中断,可以接收不定长字节的数据。 ①IDLE中断什么时候发生? IDLE就是串口收到一帧数据后,发生的中断。其实就是接收一次发来的数据收完以后产生的中断。 ②如何配置好IDLE中断?
Ⅱ中断函数中判断标志位if(USART_GetITStatus(USART1, USART_IT_IDLE) != RESET) //空闲总线中断 ③特别注意 清除标志位不是 直接往USART_SR寄存器的第四位写0,这位是只读的,清除他应该是软件序列清除该位(先读USART_SR,然后读USART_DR)。 Temp_Clear_IDLE=USART1->SR; Temp_Clear_IDLE=USART1->DR;//清除USART_IT_IDLE位 最后附上自己的工程,在原子哥的工程上改的,和原子哥的功能一样,只不过是可以不用加结束符0x0d 0x0a。 实验串口(空闲中断)点击打开链接 |
-
293.16 KB, 下载次数: 349