打印
[其他ST产品]

在调整PWM占空比值时硬件错误HardFault_Handler

[复制链接]
329|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2022-10-19 15:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现象如下,调整上述代码中的设置基准(PWM信号占空比)超过一定值(CathodeWorkPar.OutRefValue数据值超过80),单片机仿真进入硬件中断,后面进行了以下测试;
1、程序分为BootLoad和APP两个部分,如果单独只烧录APP程序(更改起始地址),程序可以正常运行,给入任何占空比程序工作正常;
2、更改PWM输出通道,程序运行正常;
3、减小单片机启动文件中的堆或者栈的分配空间,程序也能恢复正常工作;这点我不太能理解,起初我是增加了栈的空间,后来测试发现不行,然后减小后发现工作正常,后保持栈空间不变减小堆空间发现也能工作正常,这是不是表示我程序的RAM溢出了啊,实际看编译结果两个程序应该只用了15k左右,选的单片机程序时20k的;
现在问题已经通过优化程序解决,就是这个问题点一直想不明白,有了解的大能麻烦指导下

使用特权

评论回复
沙发
cr315| | 2022-10-19 17:12 | 只看该作者
你这个什么芯片也不说,用的库版本也不说,软件是什么也不说,程序是怎么样的也不给,光给些简单的描述,这个怎么让各位大牛分析哦




[color=var(--default-a-next-color)][url=][/url]

使用特权

评论回复
板凳
两只袜子| | 2022-10-19 19:32 | 只看该作者
一般进入harfault中断,可以通过查询进入中断前的函数进行查找。这种情况大多是数组溢出导致。堆栈的调整,可能会导致你数组地址的变化。正好PWM用的数组溢出后进入MCU用到的空间,把数据内容给覆盖导致。

使用特权

评论回复
地板
szt1993| | 2022-10-19 21:12 | 只看该作者
我也是想说一般应该不会超出内存吧,没遇到过这个问题,设置应该没问题吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1505

主题

4522

帖子

6

粉丝