原帖
https://bbs.21ic.com/viewthread.php?tid=172906&highlight=%E6%B8%85%E9%99%A4%2B%E4%B8%AD%E6%96%AD%2B%E6%A0%87%E5%BF%97
也没有了结的,现在偶也遇到了。
环境:STM32L152RB(就是STM32L-Discovery的硬件环境),IAR 6.40.1.3812
问题描述:TMR2 向上计数,自动重载方式写LED闪烁,定时器溢出频率1Hz(已经用轮询方式验证其工作正常),换用中断方式编写时,清除TIM2_SR.UIF标志位的语句似乎不能放置在中断服务函数最后一句,如下:
void TIM2_IRQHandler (void)
{
GPIOB_ODR ^= 0x000000C0;
TIM2_SR &= ~(0x0001); //换到后面就出错
__no_operation();
__no_operation();
}
CPU工作时钟采用内部HSI,经锁相环到32MHz,Flash采用64位宽取指,Flash等待周期按照DS的要求进行设置,内核电压1.8V
个人感觉似乎与取指有关,因为资料太多,未能找到相关支持论据,请大家指教。 |