|
我利用定时器更新中断实现软件计时,定时时间是固定的按照{10ms, 20ms,650ms, 50ms,50ms}周期性进行的。由于下一次的计时时间是需要在定时器的中断处理函数中更新的,定时器没有使能自动重装载功能,而是在每次的定时器中断函数中先关闭定时器,再执行装载值更新,再启动定时器。但是,项目中在某个定时期间,进行了flash操作,导致了装载值没有及时更新,定时器计数到装载值后,定时器继续计数直到u32溢出,期间不再产生更新中断,个人尝试了将中断函数放在RAM中执行,防止flash操作期间无法执行中断,但是也无法避免,请问如何避免这种情况。 |
stm32 定时器外部时钟1的TI1FP1及TI2FP2的设置问题
STM32F1定时器中触发信号TRC的来源及选择配置是怎么样的
STM32G474VET6如何配置HRTIM的中心对齐模式
使用CubeMx第二次生成的代码编译时报错
无刷电机PWM输出配置
STM32G474 HRTIM 推挽模式下 关闭死区 在比较寄存器较小的情况下,存在输出脉宽直接到100%
HAL_TIM_IC_Start_DMA的回调函数是HAL_TIM_IC_CaptureCpltCallback吗?为什么进不去?
STM32MP135D的TIM2使用ETR作为外部时钟时,无法使用PE15作为输入
如何利用TIM1触发HRTIM TIMA生成频率为20Hz的100ns脉冲波?
STM32G473RC timer8的CCDS bit, Capture/Compare DMA selection.
微信公众号
手机版
在FLASH操作期间,无法响应中断,和函数放在哪里执行没有关系,只能想其他的方法进行弥补。
这样不依赖于软件。
现在你的定时器中断是基于更新事件,计数器重装是硬件实现的,除非你工作在单脉冲模式
或手动停止,只要发生溢出,计数器肯定会自动重装进行计数。
具体到你这里,即使因为FLASH编程,导致中断没有及时来处理,计数器的计数与重装是不会被影响的。
充其量,计数器溢出后会按照之前的旧值重装后继续计数,怎么会有你所说的继续计数到u32溢出呢?
u32是什么意思?STM32常规定时器里除个别TIMER外,绝大部分还是16位的。
只要你开启了相关中断,当中断发生时没有来得及处理,相关中断请求标志,即UIF标志还是存在的,
怎么会有不再产生更新中断的说法呢?