(1)创建结构体,如果需要将该结构体重新写入Flash,则可以在首尾端添加MagicStartNum和MagicEndNum。是为了作为Flash是否被擦除过的标记,前后都加是为了防止在擦除到一半后被断电。
(2)在编程中,如果用到经常需要被修改的定值时,需要用宏定义,即为了方便修改,也为了方便他人阅读。
(3)在需要成块状存储不同类型的数据时,struct是个非常好的选择。
(4)所有的配置均以宏定义代替,方便理解及修改
(5)在配置软件资源时,可公用的函数,可以直接用宏定义代替,不同定义间可以用“##”来连接,实现代码公用
(6)配置定时器:先定义一个寄存器结构体--->然后将这个结构体指向一个定时器基地址--->对结构体进行操作即可
(7)配置通用GPIO:当需要将多个IO口进行相同配置时,可以将配置代码定义成宏定义,然后预留接口,通过“##”连接成宏定义的样子,实现代码公用
(8)创建一个指针指向FLASH的空地址
判断该地址以及该地址后需要的区域是否全部为0xFF,若不是,则说明重新有写入配置信息,读出来后配置Modbus;若是,则说明第一次上电,执行全部存储数据到FLASH
(9)在开发时,尽量降低代码的重复率&#