HAL库的中断处理函数与定时中断回调函数的区别

文章讨论了在读取串口数据时使用中断处理函数和定时中断回调函数的优缺点。中断处理函数适用于需要立即响应的新数据,如实时控制场景,而回调函数适合定期处理数据,如定时测量应用。选择哪种方式取决于具体需求,如需定时功能,应配置定时器中断回调函数。
摘要由CSDN通过智能技术生成

读取串口数据用中断处理函数好,还是定时中断回调函数好?

  1. 中断处理函数:当有新的数据接收到UART时,可以通过中断处理函数及时地对数据进行处理。在接收到数据时,UART会触发一个接收中断,中断处理函数会自动被调用。可以在中断处理函数中读取接收寄存器中的数据,并对其进行处理。这种方式适用于需要立即响应接收到的数据的场景,例如实时控制。(读取数组数据)

示例代码:

 

cCopy Code

void USART1_IRQHandler(void) { if (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE)) { // 读取接收寄存器中的数据并进行处理 uint8_t data = huart1.Instance->DR; // 处理数据... } }

2.回调函数:如果需要定期地处理串口数据,例如每隔一段时间或定时器溢出时,可以使用回调函数。在初始化UART时,可以注册一个回调函数,在特定事件发生时自动调用该函数。在回调函数中可以读取接收寄存器中的数据,并进行相应的处理。这种方式适用于需要按照一定时间间隔处理串口数据的场景。(定时测编码器或者测速)

示例代码:

 

cCopy Code

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if (huart == &huart1) { // 读取接收寄存器中的数据并进行处理 uint8_t data = huart1.Instance->DR; // 处理数据... } }

通过注册回调函数,当UART接收到数据时,库会自动调用该函数。在回调函数中,可以读取接收寄存器中的数据并进行相应的处理。

选择使用中断处理函数还是回调函数取决于具体需求和设计。中断处理函数适合实时响应数据的场景,而回调函数适合定期处理数据的场景。

注意:

        如果你想用中断函数来定时的话只有两个方法

1.调节定时器的时钟频率,更改预分频器(PSC)和自动重装载值(ARR)可以更改定时时间

2.改变定时器的工作模式:定时器有多种工作模式可选择,其中包括向上计数模式、向下计数模式、中央对齐模式等。不同的工作模式可以对应不同的定时需求,例如周期性定时、单次定时等。通过选择合适的工作模式,可以实现特定的定时中断功能。

所以想实现定时,还是用这个配置个中断回调函数

再通过这种方式定时好 

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值