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

相关推荐
Dev_XH13 小时前
【成品设计】基于单片机的家用智能浇花系统的设计与实现
stm32·单片机·嵌入式硬件·物联网
意法半导体STM3214 小时前
【官方原创】LAT1717 STM32N6 如何使用单个XSPI驱动双片相同HyperRAM
stm32·单片机·嵌入式硬件·mcu·stm32n6·hyperram
木子单片机14 小时前
基于单片机的直流电机调速系统设计
单片机·嵌入式硬件·51单片机·nosql·keil
Zwawa15 小时前
两根线怎么挂住一堆设备:I2C 协议原理
c语言·单片机·嵌入式
倔强的胡萝卜18 小时前
基于STM32F103C8T6的温度报警器设计
stm32·单片机·嵌入式硬件
缘来是你远去是我18 小时前
ZYNQ 系列芯片中断机制详解:类型、处理过程与中断处理函数
单片机·嵌入式硬件
Zw-awa18 小时前
两根线怎么挂住一堆设备:I2C 协议原理
stm32
LCG米20 小时前
STM32 定时器主从模式输出精确脉冲数实测:TRGO 触发链拆解、多发一脉冲根因与干净停止时序落地
stm32·单片机·嵌入式硬件·嵌入式
青梅味猪大肠20 小时前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
FakeOccupational20 小时前
【电路笔记 STM32】RTC配置:晶振选择+闹钟Configuration+中断设置
笔记·stm32·实时音视频