请问USART中断的两种函数有什么区别?

2019-07-14 18:30发布


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
vywyefswer
1楼-- · 2019-07-15 19:17
看名字就知道区别了,或者看源代码就知道在USART_IRQHandler中会调用HAL_UART_TxCpltCallback
cmh25
2楼-- · 2019-07-15 21:35
 精彩回答 2  元偷偷看……
jfuwre
3楼-- · 2019-07-16 01:07
cmh25 发表于 2018-8-17 09:10
谢谢,     请问一下HAL_UART_TxCpltCallback 这个函数如果写在  IRQHander函数外面,当发送信息的时候,会进入那个函数?如果只会触发IRQHander 函数 ,意思就是说HAL_UART_TxCpltCallback只有在IRQHander函数中才有效吗?

肯定是在USART_IRQHandler里面调用了这个函数,才会执行。。。不调用执行个毛线。。。HAL_UART_TxCpltCallback就是个普通的函数。。。只是HAL库为了统一API才提供的一个接口而已。。。当然了也是为了彻底分开底层和上层。。。
guanrui1202
4楼-- · 2019-07-16 02:54
Callback函数是留给客户的接口,可以自己写,另外一个就不需要自己改动了。
60user61
5楼-- · 2019-07-16 03:32
除非有很特殊的控制,一般不需要在USART_IRQHandle函数中写代码。
直接在其他代码文件中重定义一个HAL_UART_TxCpltCallback函数来实现中断处理就可以了。
zhouxk
6楼-- · 2019-07-16 07:34
USART_IRQHandler是中断服务函数,对应中断向量的跳转执行入口;
HAL_UART_TxCpltCallback是发送回调函数,回调函数是中断服务程序的实现。也就是在USART_IRQHandler中调用HAL_UART_TxCpltCallback,当然也可以调用别的函数,比如中断收等。回调函数只是为了方便跨平台移植,脱离硬件操作。就像在操作系统移植中需要对应器件在相应系统下的BSP包一样,BSP把低层驱动活干了,操作系统中调用接口就可以了。

可以没有回调函数,但不能没有中断服务函数。直接在中断服务函数中处理中断事件,相当于裸跑的话,那么在中断服务函数中调用一条中断回调函数,就相当于在操作系统下处理中断事件,操作系统并不关心中断具体是怎么处理的,只关心能不是得到正确的数据和期待的结果。

一周热门 更多>