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单片机

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值