STM32 HAL库多个串口的回调函数执行不到

2019-07-14 15:37发布

我使用的STM32的两路串口收发,两个串口接收中断处理有问题,我现在的处理方式是这样的
/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
        {
                if(huart == &huart2)
        {
                                uRX_buf[RX_cont++] = RX_buf;
//                HAL_UART_Transmit_DMA(&huart2, uTX_buf, 8);
                                if(RX_cont>63)
                                {
                                        RX_cont=0;
                                }
                }
else        if(huart == &huart4)
        {
                                uRX_buf[RX_cont++] = RX_buf4;
                                if(RX_cont>63)
                                {
                                        RX_cont=0;
                                }
//                        HAL_UART_Receive_IT(&huart4,&RX_buf4,1);//¡ä??¨²?¨®¨º¨¹?D??

                }

仿真看的确实是进了中断了,但是回调函数中的 else        if(huart == &huart4)执行不到,有么有用过的大神给点提示吧,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
siyu922
2019-07-16 02:12
UserMen 发表于 2018-11-29 21:03
楼主这么写没有毛病
我做的项目里面区分串口也是这么写的
if(huart == &huart4)

是的,这么写确实没毛病您给提供的思路我看了下,应该也是可行的就是把接收中断 的字符个数设置成1 每次进中断后需要重新再开启中断,相对来说比较麻烦一些 我换成了DMA 接收模式,设置成连续模式拉,应该能方便点,而且一般数据处理我不放在中断回调函数里面,这样对中断时效性有影响我在MAIN 里面处理的。非常感谢您能够给我提供思路。希望以后能多交流。

一周热门 更多>