|
我利用定时器更新中断实现软件计时,定时时间是固定的按照{10ms, 20ms,650ms, 50ms,50ms}周期性进行的。由于下一次的计时时间是需要在定时器的中断处理函数中更新的,定时器没有使能自动重装载功能,而是在每次的定时器中断函数中先关闭定时器,再执行装载值更新,再启动定时器。但是,项目中在某个定时期间,进行了flash操作,导致了装载值没有及时更新,定时器计数到装载值后,定时器继续计数直到u32溢出,期间不再产生更新中断,个人尝试了将中断函数放在RAM中执行,防止flash操作期间无法执行中断,但是也无法避免,请问如何避免这种情况。 |
STM32CubeMX配置STM32F103C8T6 RTC分频器问题
STM32G473,PA3导致定时器定时误差过大
定时器输出PWM控制电机的问题
stm32u575 gpdma burst length=1 配置其他数值不工作
TIM 单脉冲输出后的电平如何设置?
STM32F103C8T6是否支持TIM3的PWM边沿触发AD采集
STM32G474VET6如何配置HRTIM的中心对齐模式
G474 HRTIM的6个Fault引脚能对应三个定时器的6个通道吗?
stm32 定时器外部时钟1的TI1FP1及TI2FP2的设置问题
STM32F1定时器中触发信号TRC的来源及选择配置是怎么样的
微信公众号
手机版
在FLASH操作期间,无法响应中断,和函数放在哪里执行没有关系,只能想其他的方法进行弥补。
这样不依赖于软件。
现在你的定时器中断是基于更新事件,计数器重装是硬件实现的,除非你工作在单脉冲模式
或手动停止,只要发生溢出,计数器肯定会自动重装进行计数。
具体到你这里,即使因为FLASH编程,导致中断没有及时来处理,计数器的计数与重装是不会被影响的。
充其量,计数器溢出后会按照之前的旧值重装后继续计数,怎么会有你所说的继续计数到u32溢出呢?
u32是什么意思?STM32常规定时器里除个别TIMER外,绝大部分还是16位的。
只要你开启了相关中断,当中断发生时没有来得及处理,相关中断请求标志,即UIF标志还是存在的,
怎么会有不再产生更新中断的说法呢?