代码:
程序执行会一直输出b。 执行完TIM4_CR1 |= 0x01,执行i = 2 * 6会跳到0x3f4地址,而不是顺序执行下去,这是什么原因导致的? |
如需获得 stm8s103K3 等器件的更多信息,请点击链接或 点击此处 联系在线客服!
你的向量表地址为什么会改成0x9000呢? STM8 的复位后向量固定在0x8000, 除非你前面有IAP的代码。 否则发生中断后,PC跑到0x8000到0X8080区间对应的入口找到不正确的地址就会跑飞。 如果没有IAP应用,不要改变向量表的地址哦。
补充:不使能TIM4更新中断或恢复程序起始地址为0x8000,程序就能正常运行.
看来可能跟TIM4的中断有关,你在初始化外TIM4后在使能更新中断前,对更新事件的中断请求位做个清零看看。 就像这样操作: TIM4_TimeBaseInit(TIM4_PRESCALER_128, TIM4_PERIOD); TIM4_ClearFlag(TIM4_FLAG_UPDATE); TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
你的向量表地址为什么会改成0x9000呢? STM8 的复位后向量固定在0x8000, 除非你前面有IAP的代码。 否则发 ...
哦哦,明白了。感谢!
补充:不使能TIM4更新中断或恢复程序起始地址为0x8000,程序就能正常运行. ...
有人提醒你了。 你那个中断矢量表地址是不能轻易改的。
有人提醒你了。你那个中断矢量表地址是不能轻易改的。
[md]嗯嗯,感谢解答