gpt4 book ai didi

stm32 - 回调函数在 stm32 Hal 库中是如何工作的?

转载 作者:行者123 更新时间:2023-12-02 00:36:11 33 4
gpt4 key购买 nike

众所周知,Hal Lib 提供了一些回调函数来管理硬件中断。但我不知道它们是如何工作的?

事实上,我正在使用HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)这个函数来接收其他设备的数据并检查这些数据。所以我使用usart中断来接收它们。

但是我不知道回调函数什么时候执行,是取决于接收缓冲区的长度还是数据的缓冲区?

我猜当接收到一个字符时会触发硬件中断,但回调函数将在接收缓冲区已满后执行。

PS:我是用stm32-nucleo-f410开发板和AT命令设备通信的,小白。(很抱歉我的英语不好!)非常感谢。

最佳答案

当接收函数中指定的数据量(HAL_UART_Receive_IT 的第三个参数)时,将调用您所指的回调。你是正确的,每次接收到一个字符时都会调用 UART 中断服务例程 (ISR),但是当使用库内部发生的 HAL 并且不需要由你管理时。每次调用 ISR 时,将接收到的字符移动到您通过 HAL_UART_Receive_IT 的第二个参数提供的数组中,当达到调用指定的字符数时,将调用回调该 ISR(因此请确保不要做任何需要花费太多时间才能完成的事情 - ISR 应该很短,而 HAL 库中的 ISR 已经很长了,无法处理所有可能的用例)。

此外,如果您发现即使向外围设备发送了足够的数据也没有触发回调,请确保中断确实已启用 - HAL_UART_Receive_IT 函数实际上并未启用中断,必须在外设初始化期间完成。

关于stm32 - 回调函数在 stm32 Hal 库中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49479148/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com