
我利用定时器更新中断实现软件计时,定时时间是固定的按照{10ms, 20ms,650ms, 50ms,50ms}周期性进行的。由于下一次的计时时间是需要在定时器的中断处理函数中更新的,定时器没有使能自动重装载功能,而是在每次的定时器中断函数中先关闭定时器,再执行装载值更新,再启动定时器。但是,项目中在某个定时期间,进行了flash操作,导致了装载值没有及时更新,定时器计数到装载值后,定时器继续计数直到u32溢出,期间不再产生更新中断,个人尝试了将中断函数放在RAM中执行,防止flash操作期间无法执行中断,但是也无法避免,请问如何避免这种情况。 |
STM32MP135D的TIM2使用ETR作为外部时钟时,无法使用PE15作为输入
定时器使用DMA突发传输功能时,传入指针从常量数组改为变量数组后,传输功能异常。测试官方用例一样,是何原因?
分享一个PWM+DMA的BUG
STM32的TIM触发SPI的DMA发送使用NSS时MSSI的问题
使用STM32捕获PWM时同时捕获2个通道时会出现捕获的频率值不准确的问题
HRTIM 变频控制输出的第一个周期频率异常
PWM+DMA求助
怎么在不用中断的情况下,测量霍尔编码器的数据
STM32G070RET6,中断优先级配置没有效果
STM32G474 利用高精度HRTIM怎么捕获外部波形计算波形频率,想用STM32Cube配置工程代码,网上查了很多资料,没有看到这个用法。希望大神指导一下。
在FLASH操作期间,无法响应中断,和函数放在哪里执行没有关系,只能想其他的方法进行弥补。
这样不依赖于软件。
现在你的定时器中断是基于更新事件,计数器重装是硬件实现的,除非你工作在单脉冲模式
或手动停止,只要发生溢出,计数器肯定会自动重装进行计数。
具体到你这里,即使因为FLASH编程,导致中断没有及时来处理,计数器的计数与重装是不会被影响的。
充其量,计数器溢出后会按照之前的旧值重装后继续计数,怎么会有你所说的继续计数到u32溢出呢?
u32是什么意思?STM32常规定时器里除个别TIMER外,绝大部分还是16位的。
只要你开启了相关中断,当中断发生时没有来得及处理,相关中断请求标志,即UIF标志还是存在的,
怎么会有不再产生更新中断的说法呢?