看HAL库的中断函数

我们都知道HAl库在使用过程中绕来绕去,好多回调函数。下面对普通函数和回调函数进行简单解释。

对普通函数的调用:

调用程序发出对普通函数的调用后,程序执行立即转向被调用函数执行,直到被调用函数执行完毕后,再返回调用程序继续执行。从发出调用的程序的角度看,这个过程为“调用-->等待被调用函数执行完毕-->继续执行”

对回调函数调用:

调用程序发出对回调函数的调用后,不等函数执行完毕,立即返回并继续执行。这样,调用程序执和被调用函数同时在执行。当被调函数执行完毕后,被调函数会反过来调用某个事先指定函数,以通知调用程序:函数调用结束。这个过程称为回调(Callback),这正是回调函数名称的由来。

其实上面对回调函数解释有点牵强,同时执行不妥,并行处理任务 但关键也在于处理完任务后无等待 进而有并行的概念 HAL库调用回调函数 进入用户编写的回调函数 只有等回调执行完毕 或有更高优先级的中断被触发才会打断当前执行 所以标准库不存在并行处理,HAL库同样。

比如串口回调。

voidHAL_UART_IRQHandler(UART_HandleTypeDef*huart);

voidHAL_UART_TxCpltCallback(UART_HandleTypeDef*huart);    //发送回调

voidHAL_UART_TxHalfCpltCallback(UART_HandleTypeDef*huart);

voidHAL_UART_RxCpltCallback(UART_HandleTypeDef*huart);    //接收回调

voidHAL_UART_RxHalfCpltCallback(UART_HandleTypeDef*huart);

voidHAL_UART_ErrorCallback(UART_HandleTypeDef*huart);

voidHAL_UART_AbortCpltCallback(UART_HandleTypeDef*huart);

voidHAL_UART_AbortTransmitCpltCallback(UART_HandleTypeDef*huart);

voidHAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef*huart);

其实我们也可以在中断函数里添加一个既可以了。

还有我们常用的滴答定时器中断函数,详解一下。

进去看一下。

每次中断+1计数。

我们再看经常用的HAL_Delay(100)函数。

这个滴答定时器中断函数经常用,自己写一个,作为一个时标或者心跳。

其他中断函数雷同。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 3
收藏 1
关注 192
成为作者 赚取收益
全部留言
0/200
  • ruohan 2022-03-18 13:28
    回调函数能不能讲具体点, 一直搞不懂是怎么完成串口回调的。
    回复