初学STM8,用的是IAR,写了一小段程序,主循环里LED1闪烁,定时中断里使LED2闪烁,在debug模式下用STLINK调试运行很正常。遂用release模式编译,再用STVP写入芯片,运行结果大不相同,LED1常亮,LED2不亮。
TIM1定时中断部分:
#pragma vector=TIM1_OVR_UIF_vector
__interrupt void TIM1_OVR_UIF(void)
{
LED2_FLASH;
TIM1_SR1 = 0;
}
主循环部分:
while(1)
{
delay(50000);
LED1_FLASH;
delay(50000);
}
然后修改程序,在主循环LED1后去掉delay(50000),再用release编译下载后运行,结果是LED1不亮,LED2闪烁,闪烁频率是正确的设置值。
百思不得其解,IAR的debug和release编译出来的代码不一样。正在研究区别在哪里。 |