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_u64txt[24];
void __func_u64_to_dec(char *out, uint64_t val){
char tmp[24];
uint8_t i = 0, j = 0;
if(val == 0){ out[0] = ‘0’; out[1] = 0x00; return; }
while(val > 0){
tmp[i++] = (char)(‘0’ + (uint8_t)(val % 10));
val /= 10;
}
while(i > 0){ out[j++] = tmp[–i]; }
out[j] = 0x00;
}

3.使用的STM32CubeIDE编译的bin包比Keil编译的大,keil开了优化,STM32CubeIDE没有开优化。
在这里插入图片描述

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐