STM32 HAL库 串口中断如何选取正确的回调函数

最近比赛在将祖传代码从标准库改为hal库,中间涉及到好多开关标志位的动作,但是hal库高度封装让我找一个回调函数都老是找不明白,于是就尝试自己阅读一下hal库的回调函数代码,结合gpt的指导,理清楚了串口部分回调函数的调用区别。

HAL_UARTEx_RxEventCallback(huart, huart->RxXferSize);

 HAL_UART_RxCpltCallback(huart);

首先是根据xxxxit.c函数里面一直进入到UART_Receive_IT函数

函数结尾就有关于这两个函数选择的if判断 根据ReceptionType来区分使用哪一个回调函数,那么自然而然就会想到这个标志位在哪里设置,因为hal库调用有关中断的接收函数一般我都会在中断回调函数结尾重新开启接收,这也是hal库很让我不适应的点就在于每次函数执行完成会自己关中断,所以我就点进了使用IDLE类型的DMA传输和接收的串口函数中,果然看到了关于ReceptionType变量的设置,设置为了IDLE类型,IT模式就是标准类型,大家感兴趣可以自己点进去源码里面看看


这算是我第一次去研究偏底层的源码实现,之前老是说要去看但是又畏难感觉看不懂,希望这是我学习源码学习底层的第一步,加油!

                                                                                                        ——一个时常焦虑的大二菜鸡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值