3.AT32F403A例程之-FreeRTOS+Emwin进入HardFault Handler

文章讲述了在移植雅特力AT32F403A芯片的项目中,遇到FreeRTOS和Emwin配合时HardFaultHandler异常的问题。经过一系列排查,发现问题是由于芯片内部Flash在不进行擦除操作的情况下,存储器CRC在长时间停放后发生改变,导致程序错误加载。
摘要由CSDN通过智能技术生成

项目场景:

雅特力AT32F403A芯片移植FreeRTOS+Emwin


问题描述

雅特力AT32F403A芯片,在移植FreeRTOS+Emwin的时候莫名奇妙进入HardFault Handler,表现出来的现象就是程序刚烧录进去的时候都能正常工作,但是关机放置一个晚上后,第二天开机就莫名奇妙进入HardFault Handler。

原因分析:

开始以为是内存不足雅特力AT32F403A芯片的SRAM加大到96K,
Emwin开了50K:
#define GUI_NUMBYTES 50*1024,

FreeRTOS开了10K
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 10 * 1024 ) )

后来把雅特力AT32F403A芯片的SRAM加大到224K,
Emwin开了150K:
#define GUI_NUMBYTES 150*1024,

FreeRTOS开了30K
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) )

反得试了更种内存的修改问题依然没有解决。

解决方案:

在无数次测试改进后发现雅特力AT32F403A芯片的FLASH总是有问题,后来J-Link Commander仿真看到PC飞到天上去了。
在这里插入图片描述

后来没法各种尝试,最后发现Artery ISP Multi-Port Programmer可以读取存储器CRC,抱着试一下的态度读取了存储器CRC,惊奇的发现刚烧入程序的时候存储器CRC是正常的,在关机放置一段时间后存储器CRC居然变了?这怎么回事?我程序里又没有FLASH擦除,后来用官方测试的固件1024_0x55.bin烧录到芯片,关机放置一个小时时间后存储器CRC居然又变了。所以雅特力AT32F403A芯片FreeRTOS+Emwin进入HardFault Handler的原因居然是内部FLASH出现突变,导致程序错误进入HardFault Handler

在这里插入图片描述

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suqingxiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值