STM32
直播中

fdjslkjd

8年用户 1085经验值
擅长:光电显示
私信 关注
[问答]

串口非空闲中断接收有何作用

串口非空闲中断接收有何作用?
怎样去判断串口非空闲中断接收呢?

回帖(1)

张宇

2021-12-9 14:12:50
一、前言

在实际工作上,串口连续中断接收最灵活与实用。 如果项目上使用了RTOS,那么串口非空闲中断接收+消息队列就是一个完美的组合。如果项目上没有使用RTOS,那么串口非空闲中断接收+ringbuffer算法(FIFO)也是一个完美的组合。
二、CubeMX

2.1、选择串口






接着,需要打开global interrupt。





为了更加稳定,上拉USART3_RX引脚。





三、代码

3.1、main.c

__HAL_UART_ENABLE_IT()打开串口3的接收非空闲中断。





3.2、stm32f7xx_it.c

在中断回调函数里,判断是不是非空闲中断。下图摘自STM32F103项目,STM32H743的话,需要将huart3.Instance->DR改为huart3.Instance->RDR。当中断时非空闲中断时,将接收到的字符放入FIFO里,等解释串口的代码从FIFO里获取即可。(中断回调函数不能写太多代码,中断回调函数必须快进快出,保证整个系统的实时性。)


举报

更多回帖

发帖
×
20
完善资料,
赚取积分