问题
1:
如果串口带有奇偶校验,则需要设置32的串口字长为9位数据格式才行,否则会乱码
2:
如果在ucos中使用浮点数,尽量使用__align(8) 对齐,否则串口打印浮点数会乱码,比如:
//设置任务优先级 #define TASK1_PRIO 6 //设置任务堆栈大小 #define TASK1_SIZE 256 //任务堆栈 __align(8) OS_STK TASK1_STK[TASK1_SIZE]; //任务函数 void TASK1_task(void *pdata);
3.
stm32内部有ram和rom(一般都是几百kb)
rom(flash)中的内容一般用来存储代码和一些定义为const的数据,断电不丢失,
RAM可以理解为内存,用来存储代码运行时的数据,变量等等。掉电数据丢失。
stm32内部rom(flash)也可以通过代码进行指定位置读写.
简单的说就是在烧写的时候是FLASH中的被占用的空间为:Code + RO Data + RW Data
程序运行的时候,芯片内部RAM使用的空间为: RW Data + ZI Data
4.
假如代码里定义了__align(4) u8 mem2base[MEM2_MAX_SIZE] __attribute__((at(0X68000000))); //外部SRAM内存池
则可能会增加zi data数据,因为程序会以为有外部SRAM,从而将数据存到外部SRAM
人间有真情,人间有真爱。