HAL_UART_Receive_IT 这个接收中断函数是在哪里调用 ??
请教下,关于这个 HAL_UART_Receive_IT接收中断函数,是在主循环里面调用还是中断 HAL_UART_IRQHandler 里面调用 ???
这个函数只是用来开启中断接收的,接收完成后,中断函数会调用相应的接收回调函数 liuyu-419812 发表于 2015-12-26 10:02
这个函数只是用来开启中断接收的,接收完成后,中断函数会调用相应的接收回调函数 ...
这个刚刚试了一下,需要在主循环里面不停的调用才行,但是如果主循环程序比较大,此时如果串口接收的数据量比较大,就貌似不怎么好了,接收数据会丢失,而且程序貌似会假死, hpdell 发表于 2015-12-26 12:28
这个刚刚试了一下,需要在主循环里面不停的调用才行,但是如果主循环程序比较大,此时如果串口接收的数据 ...
在主循环之前调用一次,开启中断接收,然后在中断回调函数里调用,这样接收完成一次后,在开启下一次 楼上的说的才是正确的。 HAL_UART_Receive_IT 开启以后,可以通过判断RxXferCount个数,来判断是否接收完成。RxXferCount=0时,接收完成数据,这时处理数据,再重新开启接收。 本帖最后由 hpdell 于 2015-12-27 16:54 编辑
安 发表于 2015-12-26 13:57
HAL_UART_Receive_IT 开启以后,可以通过判断RxXferCount个数,来判断是否接收完成。RxXferCount=0时,接收 ...
你好,你说的这个方法,是在已知的情况下,但是如果我不知道串口有多少个数据来时,该如何是好啊 ????
还有感觉这个 串口中断接收数据,数据量大了后,实时性貌似没有那么好了啊 ?? 有什么比较好的方法没有 ?
HAL_UART_Receive_IT一般除第一次在主函数调用后其他都是在中断函数调用的,且是每次接收一个字节,可以参考下博客:http://blog.csdn.net/anobodykey/article/details/44959527
HAL_UART_Receive_IT();
do{
延时;}while(接收完毕); 一般都是一个字节接收然后中断中调用再次接收
页:
[1]
2