ThinkNotes

Simple is not easy | 化繁为简,知易行难

0%

STM32--从0创建项目和设计架构

STM32–从0创建项目和设计架构

野火STM32 F4创建项目:

https://doc.embedfire.com/mcu/stm32/f4/hal_general/zh/latest/doc/chapter10/chapter10.html

STMF0创建项目:

(1)芯片型号启动创建

image-20240722151016542

(2)配置时钟和各外设

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

image-20240722151602583

配置外设和GPIO有技巧:先配置外设(connectivity项,SPI,UART,I2C…),配好后会自动配置外设占用的GPIO;而独立的GPIO功能(一般作为debug pin)在外设配完后再补充。

外设pin脚可以设置标签,便于不看电路原理图就知道是做什么用,但是注意要保留pin本身的含义:

image-20240722152839824

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

image-20240722160043740

(3)生成MDK-ARM项目

项目架构

CubeMX项目要想可维护,后期能通过GUI方式更新配置同时不破坏用户自定义代码,有两种方式:

  • 在GUI生成代码内加User代码,即User Begin ~ User End的代码区域
  • 创建独立的代码文件夹,和GUI创建的项目代码完全隔离。用户代码要使用GUI生成的函数和数据只引用GUI的外设头文件

以下是使用独立代码文件夹的方式:

(1)Keil打开GUI自动创建的项目(包含USB middleware),首先配置好编译链接烧录等配置。

image-20240722163031991

(2)添加自定义文件夹的.c文件

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

image-20240722164837416

(3)添加自定义文件夹的.h头文件

在项目option里加头文件路径

image-20240722165046119

image-20240722165206164