一、报错
1.未发现选择目标
原因:硬件连接存在问题
解决方案:将数据线重新插拔或更换接口、数据线
2. 烧录终止
原因:烧录前未点击仿真器复位按钮
解决方案: 进行烧录前点击仿真器复位按钮(下载过程中不能按)
注:是点击仿真器复位按钮不是点击板子上的按钮。
3.编译器在尝试链接程序时找不到名为 main
的函数定义
原因: 未知(多种原因可造成该问题:定义缺失、链接器的设置......)
解决方案:
1.Project--->option--->C/C++Compiler--->output中的generate debug information选项勾上。
2.project--->options--->linker里面的format设成debug了
3.更换设备尝试(电脑)
4.内存爆炸
Error[e16]: Segment XDATA_Z (size: 0x1d90 align: 0) is too long for segment definition. At least 0x210 more bytes needed.
原因:变量定义问题,数据量过大,定义的XDATA_Z段(外部数据段)的大小超出了其在内存中分配的空间。
解决方案:
1.优化程序——减少全局变量和静态变量
2.修改XDATA大小(不建议,可能导致硬件不支持)
3.将数据定义成const的,这样数据就会被放到flash里。
二.实用小技巧
1.Erase flash
擦除设置:可以避免原先存储的内容干扰新程序
2.Rebuild All
首次打开一个项目并进行编译时或修改多个文件后,使用Rebuild All。
Rebuild All是对整个工程进行清理、重新编译、链接,耗费时间较长。
与Rebuild All相关的操作还有两个:
- Compile:只对当前打开的C文件进行语法检查,而不进行链接。这在你只需要检查单个文件的语法时很有用。
- Make:对工程所有打开的C文件进行语法检查和链接,但只编译有改动的文件或设置变动的文件。这在你修改了少量文件并希望快速看到结果时很有用。
3.PAN ID
多个协调器同时工作,解决终端匹配错误问题。
注:若周围存在一样的ID号则协调器组网时ID自动修改。烧录终端时ID号是多少那么终端就会接入该ID号的网络。(有效范围内确保唯一性)
点赞+收藏,探索不迷茫!