MounRiver调试进HardFault_Handler,正常跑正常。 是啥情况啊

研究了三天,坑的确不少。 

1、首先多个项目一个程序打开,乱成一团,一不小心还会删掉全部文件。 强开两个程序,有时也傻傻的,几个项目也在一个程序里面打开。 太难受。

2、不知道怎么Define

3、不知道怎么查Track(崩都不知道哪里崩的)。  


今天加了ADC+DMA+中断,调试老是进硬件故障中断。 但是不调试,直接上电跑呢,RTOS的任务都正常的(调试是不正常的)。

加了这几个,也不知道有没有关系。

void NMI_Handler(void) __attribute__((interrupt(/*"WCH-Interrupt-fast"*/)));

void HardFault_Handler(void) __attribute__((interrupt(/*"WCH-Interrupt-fast"*/)));

void SVC_Handler(void) __attribute__((interrupt(/*"WCH-Interrupt-fast"*/)));

void PendSV_Handler(void) __attribute__((interrupt(/*"WCH-Interrupt-fast"*/)));

void DMA1_Channel1_IRQHandler(void) __attribute__((interrupt(/*"WCH-Interrupt-fast"*/)));


中断函数声明,有的需要带WCH-Interrupt-fast,有的又需要注释。 根据什么来的呢?

您好,关于你标注1的反馈,该情况我们会向MounRiver开发工程师反馈,感谢你的反馈建议;关于你标注2的情况,不知道你所说的不知道怎么define是什么意思,可以具体说明一下;关于你说的调试进HardFault问题,可以将工程发送至我的邮箱(lzs@wch.cn),这边看一下。

关于你咨询的中断函数声明问题,当使用硬件压栈的中断函数需要使用 MRS 或者其提供的工具链进行编译且中断函数需要采用__attribute__((interrupt("WCH-Interrupt-fast")))声明,其用于保证中断执行完成之后程序正常运行。若不添加此函数,中断执行完成之后,中断执行之前保存的信息将不会被返回,中断会被认为一个正常程序继续执行下去,但中断之后并没有程序,从而导致程序出现类似跑飞状况。添加此函数,中断执行完成之后,中断执行之前保存的信息将会被返回,从而程序可以继续正常执行。使用软件压栈的中断函数采用__attribute__((interrupt()))声明。具体可参考下列链接手册3.4小节,如下图。

手册链接:http://www.wch.cn/downloads/QingKeV4_Processor_Manual_PDF.html 

image.png




只有登录才能回复,可以选择微信账号登录