STM32–从0创建项目和设计架构
野火STM32 F4创建项目:
https://doc.embedfire.com/mcu/stm32/f4/hal_general/zh/latest/doc/chapter10/chapter10.html
STMF0创建项目:
(1)芯片型号启动创建

(2)配置时钟和各外设
这里参考已有的其他stm32f0项目,用CubeMX打开两个项目,在GUI对照配置新项目自动生成代码。要特别注意时钟的配置,如果使用外接晶振,和具体开发板环境有关。

配置外设和GPIO有技巧:先配置外设(connectivity项,SPI,UART,I2C…),配好后会自动配置外设占用的GPIO;而独立的GPIO功能(一般作为debug pin)在外设配完后再补充。
外设pin脚可以设置标签,便于不看电路原理图就知道是做什么用,但是注意要保留pin本身的含义:

在配置pin功能如果有感叹号表示有部分功能和其他模块冲突,例如UART1的流控功能和USB冲突(红色),由于UART1并不开启流控,此处不需要管。

(3)生成MDK-ARM项目
项目架构
CubeMX项目要想可维护,后期能通过GUI方式更新配置同时不破坏用户自定义代码,有两种方式:
- 在GUI生成代码内加User代码,即User Begin ~ User End的代码区域
- 创建独立的代码文件夹,和GUI创建的项目代码完全隔离。用户代码要使用GUI生成的函数和数据只引用GUI的外设头文件
以下是使用独立代码文件夹的方式:
(1)Keil打开GUI自动创建的项目(包含USB middleware),首先配置好编译链接烧录等配置。

(2)添加自定义文件夹的.c文件
这里的Group一般以文件夹结构命名,Files只是.c源文件,头文件.h不是在这里添加

(3)添加自定义文件夹的.h头文件
在项目option里加头文件路径

