STM32项目开发中超级实用的技巧(持续更新中...)


所有的热爱都要不遗余力,真正喜欢它便给它更高的优先级,和更多的时间吧!

关于STM32其它文章请点击这里:     STM32单片机


一. 利用软启动打补丁

    有时候系统莫名挂掉,如遇到内存溢出。如下已经进入了HardFault_Handler()
在这里插入图片描述
     首先当然要找到原因,停止调试后,可以看到最后进入HardFault_Handler()的最后代码,一般是以下两种情况:

  1. 内存溢出或者访问越界。这个需要自己写程序的时候规范代码。
  2. 堆栈溢出。增加堆栈的大小。

     而时间紧急,又是偶然的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单片机

猜你喜欢

转载自blog.csdn.net/qq_16504163/article/details/114223984