您好,参考该贴下面回复,注意中断函数要加中断声明
void TIM3_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
原来是这样,好的谢谢
@TECH62 请问各中断服务程序,函数名要怎么写? 在哪个资料里?
您好,可参考启动文件相关函数写法,如下图
好的,谢谢,中断服务程序入口程序已经找到了。另外有几个问题
中断服务程序必须要声明,是因为这是一个回调函数吗? STM32的中断服务程序也是要这样声明的吗?
__attribute__((interrupt("WCH-Interrupt-fast"))) 的作用是啥? "WCH-Interrupt-fast"这是你们定义的一个让编译器进行某种操作的相当于命令的意思吗?如果是的话,具体是什么意思呢?
谢谢!
您好,使用CH32V系列MCU需要加该中断声明,其他不需要。关于中断声明的解释,可以参考一下下帖解释,如下图。后续若有问题,可通过邮箱(lzs@wch.cn)和我沟通。
好的,明白了,谢谢
我看了启动文件,中断服务程序的所有回调函数入口地址都是跳转到1b执行( j 1b ), 如果不声明自己的中断处理函数,产生的中断就不会回调我们写的中断服务程序,导致程序( j 1b ),从而导致程序跑飞
@TECH62 对了,为什么中断服务程序里,还要先检查是否发生中断?难道还能有其它情况进入中断服务程序(程序跑飞?)?
void TIM3_IRQHandler(void)
{
static u8 i=0;
if (TIM_GetITStatus(TIM3, TIM_IT_Update)!=RESET) //检查TIM3中断是否发生
我去百度了一下,明白了,谢谢