STM32项目开发中超级实用的技巧
所有的热爱都要不遗余力,真正喜欢它便给它更高的优先级,和更多的时间吧!
关于STM32其它文章请点击这里: STM32单片机
一. 利用软启动打补丁
有时候系统莫名挂掉,如遇到内存溢出。如下已经进入了HardFault_Handler()
首先当然要找到原因,停止调试后,可以看到最后进入HardFault_Handler()的最后代码,一般是以下两种情况:
- 内存溢出或者访问越界。这个需要自己写程序的时候规范代码。
- 堆栈溢出。增加堆栈的大小。
而时间紧急,又是偶然的bug,可以用以下顶一顶:
/**
* @brief This function handles Hard fault interrupt.
*/
void HardFault_Handler(void)
{
while (1)
{
NVIC_SystemReset();
}
}
在HardFault_Handler()中增加软件重启命令NVIC_SystemReset(), 可以让它起死回生。而就算暂时没发现错误,发布后也可以在各种错误中加入此条指令来增加系统的稳定性。(当然要是重启对系统无影响的那种)
同时呢,也可以增加看门狗,来增加系统稳定性,正常程序中不停的喂狗,一旦卡死,停止喂狗,就可以重启了。
二. 优化等级尽量选择不优化
如果内存够用,在keil中那就选择不优化吧,我已经被系统优化整过几次了。选择 “Level 0" 即可,Level 3是最高优化!
三. 合理利用开关总中断
__set_PRIMASK(1); //关总中断
__set_PRIMASK(0); //开总中断
//__disable_irq(); //关总中断
//__enable_irq(); //开总中断
未完待续…
关于STM32其它文章请点击这里: STM32单片机