1.在嵌入式开发的过程中,无法通过肉眼来判断程序运行状态,所以要利用好灯的闪烁状态。
2.在灯的闪烁中,不要用Delay函数,这个会空白的占用CPU计算资源,而是应该使用系统嘀嗒时钟或者外部定时器来实现。
3.在编写代码的时候,要让各函数之间尽量保持独立,尽量少的使用全局变量(这对于系统的维护压力较大)---代码要求:低耦合、高内聚。
1.例如对于LED灯闪烁的控制,不要在每个函数中都对他进行调用显示状态(而是在系统嘀嗒时钟中调用)
2.case的条件判断要精简,define在定义变量的时候要善用偏移量,这样在控制多模块(例如多输入多输出)的时候能够节省许多定义
3.在声明变量的时候,要首先考虑能不能用表格的形式存储。这样便于维护,避免大量类似声明--此处同样使用偏移量进行定义
4.在拿到例程的时候,对于GPIO的定义需要尤其注意,不能直接盲目挪用。例如将输入GPIO配置成GPIO输出,这样对于电路来说是有一定的风险的。
5.对于中断函数本身不要有太多的修改,应该精简。可以在中断函数中对标志位进行修改,在中断函数外在对该状态进行处理。并且尽量不要在中断函数中调用其他函数,这样可能会一直处在中断状态。(此处踩过一个回想起来很傻的坑,在中断函数里面我进行bootloader跳转到application程序,这样中断向量表完全就出问题了)
6.对于SPI的发送缓冲区,需要注意不能直接修改。因为这样可能会在发送的过程中发生变化,增加了不稳定性,造成数据不正确。较为规范的做法应该是在另一个缓存区中进行修改,一次性读出。
7.对于代码优化等级的注意事项
在某模块的引擎系统开发中,发现同样的代码,但是新的工程无法正常运行,查看汇编指令运行流程,没有发现什么异常。由于新的工程v1.3.1中增加了部分代码,所以在同样的散列存储表的配置下导致代码因内存分配不足而无法编译通过最开始的尝试是增加分配内存容量,能够编译通过但是会出现无法正常运行的情况面调整代码优化等级变为level2后,代码量变小,原存储分配空间满足条件,代码也能够正常运行了。
方法论:项目开始时开启最高优先级,调试某个文件的时候单独设置最低优先级