|
我利用定时器更新中断实现软件计时,定时时间是固定的按照{10ms, 20ms,650ms, 50ms,50ms}周期性进行的。由于下一次的计时时间是需要在定时器的中断处理函数中更新的,定时器没有使能自动重装载功能,而是在每次的定时器中断函数中先关闭定时器,再执行装载值更新,再启动定时器。但是,项目中在某个定时期间,进行了flash操作,导致了装载值没有及时更新,定时器计数到装载值后,定时器继续计数直到u32溢出,期间不再产生更新中断,个人尝试了将中断函数放在RAM中执行,防止flash操作期间无法执行中断,但是也无法避免,请问如何避免这种情况。 |
HAL_TIM_OC_SetConfigChannel 因 override_state 参数触发断言报错
在 STM32Cube 中配置正交编码器模式
stm32H723 tim23和tim24 中间对齐模式无效
stm32H723 tim23和tim24是不是不支持中间对齐模式?
用电位器调节 PWM 频率
stm32H723 tim1和tim23 tim24同步的问题
stm32n657的TIM8定时器
向 “HAL_RTC_GetTime” 函数传递的第一个参数出现指针类型不兼容警告
无法从编码器模式下的 TIM1 获取计数值
定时器输出PWM控制电机的问题
微信公众号
手机版
在FLASH操作期间,无法响应中断,和函数放在哪里执行没有关系,只能想其他的方法进行弥补。
这样不依赖于软件。
现在你的定时器中断是基于更新事件,计数器重装是硬件实现的,除非你工作在单脉冲模式
或手动停止,只要发生溢出,计数器肯定会自动重装进行计数。
具体到你这里,即使因为FLASH编程,导致中断没有及时来处理,计数器的计数与重装是不会被影响的。
充其量,计数器溢出后会按照之前的旧值重装后继续计数,怎么会有你所说的继续计数到u32溢出呢?
u32是什么意思?STM32常规定时器里除个别TIMER外,绝大部分还是16位的。
只要你开启了相关中断,当中断发生时没有来得及处理,相关中断请求标志,即UIF标志还是存在的,
怎么会有不再产生更新中断的说法呢?