一直注意：交付的时候，APP1区要做写保护。
/*2025_08_06
485中断接收架构： UART + DMA + 空闲中断（IDLE） 
不使用HAL_UART_RxCpltCallback，因为他是自动跳转的，主动触发的回调是用于固定长度的，对于空闲中断不定长的数据是用自定义函数。
*/

/*2025_08_10版本 
补全06 10 的应答参数
缩小堆空间
Stack_Size		EQU     0x400
Heap_Size      EQU     0x200
*/

/*2025_08_12版本
Stack_Size		EQU     0x400
Heap_Size      EQU     0x250

控制台命令按照文档改完
*/

*/2025_08_14版本


升级标志位：
起始帧里：
0100：	文件大小存到缓存体，存到数据库2区；
0200：	文件大小存到缓存体，存到数据库2区；
	
结束帧里：
0100：	验证APP缓存区计算和收到的MD5码16字节是否一致，一致表示APP缓存区的数据接收和写入的没问题。
	
0200：	验证APP缓存区计算和收到的MD5码4字节是否一致，一致表示APP缓存区的数据接收和写入的没问题。

校验通过，则将APP缓存区数据复制到APP2区。
计算一遍APP2区MD5是否和APP数据缓存区一致，以确保复制过程没问题。

MD5码存到缓存体，存到数据库2区；

写入APP缓存区之后，验证MD5通过后，将	iapLoadStatus 置300；重启;
重启之后，
读取 iapLoadStatus 置了0 ，则继续运行APP1
读取 iapLoadStatus 置了2 ，则跳转到APP2运行。
读取 iapLoadStatus 置了300，
则开始擦除APP2区，然后将APP缓存区数据复制到APP2区	，
复制完之后校验APP2区MD5码是否正确，如果错误则 ubootback = 401，iapLoadStatus =0;
如果正确则 ubootback = 0, iapLoadStatus = 2，重启;

ubootback = 400 的情况是，是程序运行在APP2区，但是每次重启后发现是由看门狗导致的复位次数超过了5次，
则置 ubootback = 400;iapLoadStatus = 0,重启后会回到APP1运行。

收到回退到APP1指令时，将 ubootback = 1, iapLoadStatus =0,重启。

升级成功次数增加在哪里判断		
*/

*/2025_08_15版本
将标定结构体划到业务结构体里
每次控制台修改数据库的时候也要将对应的结构体刷新掉
数据库初始化到结构体的时候将标定的结构体参数也都初始化上。

要做的事：
2025/08/15
Modbus 06 和 10 改结构体数据后要同步到数据库。
增加滑动窗口以及传感器数据存到队列的时间节奏


*/

/*2025/08/20版本
修复IAP升级的一些小问题

要做的事：
硬件版本要在开始时强制写入
*/

