STM32F4新建最小工程笔记

STM32F4新建最小工程笔记

笔记整理,有笔误还请看官指正,鄙人学识尚浅小小菜狗,看官勿喷

2024.9.29记

以stm32f427 IIH6芯片为例,新建工程(寄存器版本)(最基础最少的必要工程文件)

文件夹目录以习惯为主,目的是分类明确

1、新建文件夹stm32project

新建工程->选择芯片->选择工程文件夹

1

2

3

上面新建完成后自动生成的文件

2、从ST官方固件库移植启动文件等必要文件

新建文件夹startup (存放启动文件等必要文件)和user (存放main.c等文件)

4

startup文件夹中,分别包含

(1)startup_XXX.s启动文件

固件库路径...\ST固件库F4-v1.80\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm,选择对应芯片的启动文件即可

(2)core.XXX.c 文件(可新建CMSIS文件夹存放)

core_XXX.h等几个文件是 CMSIS核心文件,提供进入M4内核接口由ARM公司提供,所有的CM4内核的芯片都适用。

固件库路径...\ST固件库F4-v1.80\STM32F4xx_DSP_StdPeriph_Lib_V1.8.0\Libraries**CMSIS\Include**

(3)系统文件

system_stm32f4xx.h是片上外设接入层系统头文件。主要用来申明设置系统以及总线时钟相关的函数。源文件对应为system_stm32f4xx.c。

stm32f4xx.h是STM32F4片上外设访问层头文件,主要是系统寄存器定义申明以及包装内存操作。

以上则是工程最基础文件,可以直接进行寄存器操作。

另外固件库的说明参考链接 STM32F4xx固件库的说明及使用_stm32f4固件库-CSDN博客

3、keil5添加分组及魔术棒设置

点击分组按钮,建立分组,添加必要文件( .s启动文件,选芯片对应的,仅一个,否则会报错)

5

在user文件夹添加main.c文件,最简格式内容

6

魔术棒设置

打开魔术棒,点击C/C++,添加需要的头文件路径

Define宏定义中添加 STM32F427_437xx (好像是不同芯片定义名格式不太一样,具体上网查询)

(不写的话,#include "stm32f4xx.h" 头文件会找不到报错)

7

点击Output选项卡,勾选create HEX File,点击生成文件路径(最好新建一个文件夹,专门存放这些生成输出文件,看着不那么乱,如图新建OBJ文件夹)

8

4、保存并编译

编译成功,以上便是最小基础工程(寄存器版本工程)的内容。

基于标准库的工程和基于HAL库的工程,本质上也是在此基础上(HAL库更为方便些)。

9

2024.9.30接着补充,实操验证部分

硬件是STM32F427IIH6,大疆A板(手里目前就这一块板子)下载器是PWlink2(性价比蛮高的,9块9)

5、先看硬件图(经典点灯,寄存器操作)

10

11

12

A板有两个自定义LED,以PE11为例,进行以下操作

原理图可见,PE11置低电平灯亮,高电平灯灭

6、再看数据手册和写程序(寄存器直接操作)

直接亮出程序,再一一解释

13

(1)RCC AHB1 外设时钟使能寄存器

RCC->AHB1ENR = 0x00000010;   //使能

A板的GPIO口在总线AHB1上(有的芯片是在AHB2上,这个要看手册,看手册好习惯)

14

15

RCC->AHB1ENR寄存器从手册可以看出,PE11口,是位4,使能置1

因此,32位2进制,转成16进制结果为0x00000010。

(2)GPIO 寄存器

(f427这还挺麻烦,分的比较细,不像f103简单点)

(2-1)GPIO 端口模式寄存器 (GPIOx_MODER)

GPIOE->MODER寄存器从手册可以看出,PE11口,是位23、22,通用输出置01

因此,32位2进制,转成16进制结果为0x00400000。

16

(2-2)GPIO 端口输出类型寄存器 (GPIOx_OTYPER)

GPIOE->OTYPER寄存器从手册可以看出,PE11口,是位11,输出推挽置0

因此,32位2进制,转成16进制结果为0x00000000。

17

18

(2-3)GPIO 端口输出速度寄存器 (GPIOx_OSPEEDR)

GPIOE->OSPEEDR寄存器从手册可以看出,PE11口,是位23、22,这里选择50Mhz,置10

因此,32位2进制,转成16进制结果为0x00800000。

19

(2-4)GPIO 端口输出数据寄存器 (GPIOx_ODR)

GPIOE->ODR寄存器从手册可以看出,PE11口,是位11,高电平置1,低电平置0

因此,32位2进制,转成16进制,高电平0x00000800,低电平0x00000000。

20

以上就是寄存器操作,如何参考手册写程序的部分。

7、烧录程序验证

打开魔术棒->debug->设置CMSIS-DAP(pwlink2是这样的,根据自己的下载器来选择)->打开setting

->debug->选在下载方式SW

另外在flash download选项卡中勾选reset and run(复位并执行)

21

最后就是烧录程序,点灯成功!

posted @ 2026-05-08 14:12  f12138  阅读(54)  评论(0)    收藏  举报