1.使用keil开发可以用中文打印、中文编码,中文路径编译,STM32CubeIDE不行。
- 第一部分是字符编码,用STM32CubeIDE打开会发现注释和打印是乱码,有些输出到外部的中文也是会出现乱码。这个可以解决,STM32CubeIDE内置的选项是UTF8,并没有中文,可以手工输入GBK(非下拉选择),源码文件使用第三方工具改为GB2312的中文字符编码即可。


- 第二部分的中文路径问题目前没有办法,项目代码只能独立到无中文路径下面编译调试,否则编译链接,单步调试都会有问题。

2.STM32CubeIDE打印不了llu、lld的格式化输出,需要自己实现转字符串,然后拼接到需要打印的字符串。因为STM32CubeIDE用的是 libc_nano.a(newlib-nano 精简 printf)。它不支持 %ll 长度修饰符,遇到 %llu 就把解析不出来的 "l" 原样吐出、再跟上 "u"------所以打出来永远是 "lu"。屏幕字体里小写 l 看着像 1,就成了"1u"。Keil 用的 microlib 支持长长整型, Keil→CubeIDE 迁移后会冒出这个问题。
长长整型转字符串函数参考:
char g_u64txt24;
void __func_u64_to_dec(char *out, uint64_t val){
char tmp24;
uint8_t i = 0, j = 0;
if(val == 0){ out0 = '0'; out1 = 0x00; return; }
while(val > 0){
tmpi++ = (char)('0' + (uint8_t)(val % 10));
val /= 10;
}
while(i > 0){ outj++ = tmp--i; }
outj = 0x00;
}
3.使用的STM32CubeIDE编译的bin包比Keil编译的大,keil开了优化,STM32CubeIDE没有开优化。
