使用STM32CubeIDE开发STM32F103与STM32WB55裸机编程所需头文件咨询
STM32裸机寄存器开发所需引入的文件清单
STM32的寄存器定义体系和AVR单头文件全包的开发模式逻辑完全对齐,只是按照CMSIS规范拆分为内核层、芯片外设层、启动文件三类固定文件,不需要引入HAL/LL库的冗余代码,即可实现直接操作寄存器、自研驱动的开发需求。
通用必选CMSIS内核层文件
这部分文件对应Cortex-M内核本身的寄存器定义,是两款芯片开发都需要引入的基础文件:
core_cm3.h:为STM32F103(Cortex-M3内核)提供内核外设寄存器定义、内联汇编指令封装core_cm4.h:为STM32WB55(Cortex-M4应用内核)提供内核外设寄存器定义、内联汇编指令封装cmsis_compiler.h:编译器适配层,对接STM32CubeIDE内置GCC工具链的语法兼容system_stm32<系列>.c/h:对应芯片的基础时钟初始化实现,仅完成内核启动后的时钟树基础配置,不包含任何外设初始化逻辑
芯片专属外设寄存器定义头文件
这部分就是完全对标AVR中iom328.h/iom2560.h的核心文件,完整覆盖对应芯片的全部外设寄存器地址、位域定义,引入后即可直接操作寄存器开发LL层驱动:
- 针对STM32F103:根据实际选型的芯片容量,引入匹配的
stm32f103xb.h/stm32f103xe.h该头文件内完整定义了F103全系列GPIO、USART、SPI、I2C、定时器、ADC、NVIC、中断向量的寄存器基地址、位掩码,和AVR的iom系列头文件功能完全一致
- 针对STM32WB55:引入
stm32wb55xx.h该头文件内完整定义了WB55应用侧(Cortex-M4)的全部外设、射频接口、低功耗模块的寄存器定义,引入后不需要额外依赖其他外设寄存器头文件
启动源文件必选项
这部分文件对应AVR的启动汇编逻辑,负责初始化栈空间、配置中断向量表、跳转主函数入口,是裸机程序运行的必备文件:
- STM32F103:根据芯片容量匹配引入
startup_stm32f103xb.s/startup_stm32f103xe.s汇编启动文件 - STM32WB55:引入
startup_stm32wb55xx_cm4.s汇编启动文件(WB55的Cortex-M0+核为射频专用核,用户应用开发默认跑在Cortex-M4核上,无需引入M0+侧启动文件)
开发配置注意点
- 开发过程中不需要引入任何HAL库、LL库的源码,上述文件引入后即可完全对标AVR的裸机开发逻辑
- 需要在工程预定义宏中添加对应芯片的选型标识(如
STM32F103XB、STM32WB55xx),相关头文件会自动匹配对应的寄存器定义范围,避免编译报错
内容的提问来源于stack exchange,提问作者Kunal
相关产品推荐
相关产品推荐

