基本定时器一启动就直接进中断的两种解决方式

关于基本定时器的影子寄存器的解释

  • 预分频器和自动重装载寄存器都是有影子寄存器的(预加载寄存器和影子寄存器)。
    • 重装载的寄存器中的预加载寄存器是:只要确定了预加载寄存器,那么后续的值会先到预加载寄存器中,等待counter溢出了之后,才会加载到影子寄存器中直接给counter。如果没有勾选预加载寄存器的话,后续的值会直接到影子寄存器中,影子寄存器会实时同步到counter中去。有没有预加载寄存器就是有没有缓存,有的话,需要等待到溢出的时候,其中的值才会实时同步到。没有话,只要改变了重装载中的值,那么就会实时同步到counter。——我们默认是没有的,如果寄存器ARPE是0的话(默认为0),那么就是没有缓存,同步更新;如果这个寄存器是1的话,那么就是有缓存,就不能同步更新。
    • 而预分频器中也是有影子寄存器: 预分频器值寄存器TIMx_PSC存在影子寄存器,所以在定时器启动后更改TIMx_PSC的值并不会立即影响当前定时器的时钟频率。要等到下一个更新事件(UEV)发生时才会生效。 总之需要记住,预分频器自动有缓存的功能,只有经过一次更新之后,其频率才能进入到影子寄存器中,然后输出出去,其和上述的重装载寄存器类似,也有一个预分频的寄存器当做是缓存,而这个缓存是一定存在的,是没有控制寄存器的位数来控制的。

关于基本定时器中两个控制寄存器位的用法以及基本定时器一启动就直接进中断的两种解决方式

  • 在认识这两种寄存器之前呢,我们不得不有一个背景知识的了解:当我们的counter溢出的时候,会产生一次更新,这个更新是万能的,不仅可以触发中断,触发DMA输出(没学到),还可以对寄存器进行一次更新,因为这个更新的本质是溢出,溢出代表一个新的轮
是的,STM32 的定时器可以同时支持定时中断和输入捕获功能。STM32 的通用定时器(如 TIM2、TIM3、TIM4 等)具有多个通道,每个通道可以独立配置为输入捕获模式,同时定时器本身也可以配置为定时中断模式。通过合理配置寄存器和中断处理函数,可以实现这两种功能的并行运行。 在实际应用中,定时中断通常用于周期性任务的执行,例如定时采集数据或更新显示。输入捕获则用于测量外部信号的频率或脉宽,通过捕获外部事件的时间戳实现高精度测量。这两种功能在硬件层面是相互独立的,因此可以在同定时器上同时启用[^3]。 例如,在 HAL 库中,可以通过 `HAL_TIM_Base_Start_IT()` 启动定时中断,同时通过 `HAL_TIM_IC_Start_IT()` 启动输入捕获中断。在中断服务函数中,通过判断中断源可以分别处理定时中断和输入捕获事件。以下是个简化的中断处理示例: ```c void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { if (htim->Instance == htim3.Instance) { if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) { HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_9); // 处理输入捕获事件 } } } void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim->Instance == htim3.Instance) { // 处理定时中断事件 } } ``` 需要注意的是,尽管可以同时使用这两种功能,但在配置定时器时仍需考虑资源分配和中断优先级的问题。例如,定时器的预分频器(PSC)和自动重载寄存器(ARR)需要根据输入信号的频率行合理设置,以避免计数器溢出或测量误差[^4]。 ### 相关问题 1. 如何在 STM32 中配置定时器以实现定时中断? 2. 输入捕获模式在 STM32 定时器中的具体应用场景有哪些? 3. 如何解决 STM32 定时器输入捕获时计数器溢出的问题? 4. 在 STM32 中使用 HAL 库时,如何启动定时中断和输入捕获? 5. STM32 定时器的多个通道是否可以同时用于输入捕获?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值