- 博客(7)
- 收藏
- 关注
原创 RT1052下不进去程序,显示internal commad error
这个问题发生在我把中断函数都放到ITCM以后,原因很简单:1. ITCM中的中断函数位于0x00000000以后,所以如果有空指针覆写这块区域就会导致进入HardFault这种中断时程序跑飞,BootLoader不停地重启导致调试口不能用,所以下不进去。解决办法:修改一下启动方式,比如USB或者串口启动在进行下载。...
2022-05-20 10:34:26
631
原创 RT1052不停重启问题的解决
开发过程遇到了不断重启的问题,排除看门狗硬件问题后排查问题如下:1.首先是算法有问题,当优化等级提升至-o1以上时会产生空指针,写空指针是本次问题的根本原因。诱因:1. 我将所有中断函数放到了ITCM里,且在MPU中没有设置ITCM区域为只读区域,导致算法在写空指针的时候将ITCM里的code全都覆写掉了。2. 当数据写到超出ITCM的大小的时候引发了HardFault中断,此时ITCM中的中断函数已经无效了,PC指针跳转至此的时候属于程序跑飞了,所以会触发复位。使用ITCM时务必保
2022-05-20 10:17:50
996
原创 cJSON使用记录
如下cJSON的结构体,用于描述一个键值对,在cJSON的API里Object和item都是用这个结构体描述。但是item包含了名字,Object没有名字,就用大括号括起来。/* The cJSON structure: */typedef struct cJSON{ /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem
2022-04-12 09:57:40
3801
原创 ARM STM32F107 的启动过程拷贝分析记录
心血来潮学习一下分散加载,把所有代码放到RAM执行。得确保sysinit和_main在FLASH中,否则无法进行运行前代码的拷贝工作。(从FLASH将内容拷贝到RAM是在_main中完成的,由编译器自动生成的代码)看一下.map文件,理解一下复制过程。首先看一下FLASH里的内容:可以看到我把.s和systeminit的内容放到了FLASH里,保证进入c的main之前完成前期准备工作。在FLASH里有一个叫Region$$Table 的section,这是一个表,用来描述怎样从.
2022-04-07 10:52:04
1228
原创 STM32F107 LWIP 接入阿里云MQTT
记录一下自己的开发历程。照常使用CUBEMX打开ETH,FREERTOS,LWIP(开启DHCP,DNS),阿里云的MQTT服务器是动态的,需要根据url得到ip。在阿里云官网下载MQTT的SDK将SDK导入工程。其中freertos_port.c是底层依赖按照LinkSDK/demos/mqtt_basic_demo.c的官方例程进行修改。/* * 这个例程适用于`Linux`这类支持pthread的POSIX设备, 它演示了用SDK配置MQTT参数并建立连接, 之后创建2
2022-03-17 09:32:48
6607
9
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人