Keil开发与STM32Cube开发的差异点总结(未完待续)

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没有开优化。

相关推荐
不悔哥5 天前
开源OV-Watch:怎么做一个智能手表
单片机·开源·嵌入式
XiHongShi20165 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
优信电子5 天前
AIT1001 非接触式红外测温模块 STM32 驱动开发实战:从引脚到代码全解析
stm32·嵌入式·温度传感器·红外测温·非接触式测温·ait1001
深圳老胡5 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
wuyk5555 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
女神下凡5 天前
嵌入式设计的各种存储芯片的硬件/软件设计规范,非常全面。
arm开发·单片机·嵌入式硬件
梅梅9665 天前
一款mipi转lvds的lcd调试(LT8912B)
单片机·计算机外设·电脑·显示器·pd芯片
开发笔记-阿牛5 天前
蓝牙音乐灯拆解,又一次拆到蓝牙音乐灯芯片CK6865L
人工智能·单片机·嵌入式硬件·音视频·音频
从零开始的嵌入式之旅6 天前
day47
arm开发·经验分享·笔记·嵌入式硬件
恒锐丰科技林技术员6 天前
EG1164 高压大电流升压同步整流芯片解析
经验分享·嵌入式硬件·硬件工程