经验总结
weixin_43067198
这个作者很懒,什么都没留下…
展开
-
因芯片容量引起的程序不运行解决记录
今天折腾一下午解决一个主控程序未运行的问题。最终结论是芯片容量不足。具体方法记录如下:1.点开小魔法棒查看芯片的容量2.双击工程打开.map文件查看内存分配情况从图上可以看到中间的划线部分有个很大内存的分派(0x15000),因为heap_4引发,而heap_4为FreeRTOS部分,所以去修改FreeRTOS中的堆分配的配置。3.原分配大小现将该值改小。现0x20015c30+0x00002000明显大于图1中的0x20000000+0x10000。所以程序不能正常运行。设置数值可以通过原创 2021-03-17 17:43:14 · 329 阅读 · 0 评论 -
记一次解决HardFault_Handler
今又一次遇到hardfault_handler。本来用的好好地程序在ina220里添加了一个电流传感器后突然出现这个问题。一开始打算按照网上的方法通过堆栈之类的东西来定位出错的代码,结果发现在进入中断时,我的LR寄存器内容与网络上显示的进入中断时情况不同,反而类似正常运行时的值。于是有抓到了大佬过来解惑。 一开始请教大佬问进入中断后定位错误代码的方法,大佬平常使用的就是网络上最通用的方法,直接通过Call Stack Window 弹出“Call Stack + Locals”对话框。然后在对话框中原创 2021-01-28 13:55:58 · 429 阅读 · 0 评论 -
IIC时钟频率影响读取传感器问题
调试一个IPMC已经快两个月了,这期间IIC读取温度传感器和电流传感器一直没有得到应答。最后发现是IIC时钟频率的问题;一般来说频率越高,传感器不应答的可能性越大; 同时延时函数是单纯的for循环,for循环的时间和CPU主频有关,从今天代码查看的位置好像就是之前设置晶振的位置。 然后写个流水账记录一下今天一天的调试解决过程 1.逻辑分析仪抓模拟iic发现有正常发送从机地址,可是完全无应答。(顺带发现逻辑分析仪的解码错误概率还挺大) 2.求助项目经理,得到线索;主控程序有使用iic读取传原创 2021-01-27 17:10:39 · 977 阅读 · 1 评论 -
关于使用ADC测量内部电压犯的蠢
GD32测量内部电压时,因为觉得官方函数实在过于复杂(其实就是看不懂),所以写的寄存器版本。测试的电压标准为12V,但测试结果大概都在1.8~1.9。最后比对成品代码发现是没有考虑两个电阻的分压……又一次蠢到了自己。果然乘以分压比例后得到正确结果。...原创 2020-11-23 11:00:49 · 939 阅读 · 0 评论 -
不要随便更改keil配置
记录人生第一次切实参与研发任务原创 2021-01-05 17:42:41 · 219 阅读 · 0 评论 -
关于INA226测电流、电路图
用IIC总线来读INA226传感器中分压电流寄存器的值。其中涉及到一个校准寄存器的赋值cal,这个值和pin9(IN-)、pin10(IN+)之间的分压电阻有关。手册中cal的计算方法如下: Maximum Expected Current是pin9、pin10之间可能测到的最大电流,除以2的15次方后得到的Current_LSB直观来看就是电流精度——15位对应15个梯度。Rshunt是外部分流器——两引脚间电阻的值 这次的开发板上INA226部分的电路图如下: 一开始我只看到了pin9、原创 2020-11-24 11:09:16 · 12003 阅读 · 5 评论