
2、CubeMX使用的HAL库中宏函数都是使用两个下划线加上全大写字母构成,因此程序中看见双下划线全大写的函数基本都是宏函数。普通宏替换则没有双下划线,但是是由全大写字母组成。 3、CubeMX生成的工程需要修改仿真器件,默认是使用ST_link,同时在Utilities选项卡中选择下载后执行,否则下载完需要复位才能执行,并且选择正确的芯片FLASH型号。 4、CubeMX生成的工程中更有很多msp函数,msp的全称是MCU Specific Package,没太明白这个的意思,但是在实际程序中是用来初始化外设对应管脚、时钟等的函数,通常HAL库中都有一个msp init和msp deinit函数,但是这些函数都加上了前缀:__weak,这个前缀的解释引用 __weak是一个宏,和__packed是同一种东西都是gcc的扩展属性: #define __packed __attribute__((packed)) #define __weak __attribute__((weak)) 如果这个关键字用在函数定义上面,一般情况下和一般函数没有两样。但是当有一个同名函数但是不带__weak被定义时,所有对这个函数的调用都是指向后者(不带__weak那个), 如果有两个一样的函数都用了__weak,那么真正调用那个,就要看连接器了。 ———————————————— 版权声明:哐哐哐 Quan 如有侵权请联系删除 |
【有奖体验】STM32Cube通过Clang/LLVM支持进一步简化代码开发
STM32CubeMX应用结构选择指南
经验分享 | STM32CubeMX 生成时钟获取函数的分析
兔哥的最强U5图显【000】——U5G9最小系统绘制
兔哥的ST67——【000】ST67模组订购
基于LORA的环境感知系统
经验分享 | 使用CubeMx配置NVIC时为何不见子优先级?
经验分享 | 三个 ADC 同步模式配置以及 CubeMx 错误配置的解决方法
兔哥的边缘AI【001】——DIY-STM32N6全IO扩展板
兔哥的BLE【002】-WB09最小系统板PCB设计