STM32-HAL库(快速入门)-1-工程创建

本文指导学习者如何使用HAL库快速入门STM32F407ZGT6开发,涵盖cubemx配置、外设初始化、时钟配置和项目设置等内容,适合有一定基础的学生在短时间内开始STM32项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

适合学习过标准库和一些简单操作的同学转至HAL库,不会写的太细,想仔细学习建议看正点原子140小时的详细教学视频

考虑到stm32库函数学习的繁琐与备赛时间紧张之间的矛盾,我打算用HAL库来快速入门操作stm32,并且由于学校开启了为期三周的课设实验周,所以我打算将这个系列在三周内更完,内容包括stm32f4常用外设的使用和f1两轮平衡小车的pid调节

代码文件:

链接:https://pan.baidu.com/s/17yKo4c2FzqKtiXnXRQfy8g?pwd=hjv7 
提取码:hjv7 

目录

一、cubemx和固件库安装

二、新建工程

1.选择(ACCESS TO MCU SELECTOR)进入芯片类型选择

2.选择我们使用的stm32f407zgt6芯片

3.基础配置

Ⅰ.Pin-configuration

Ⅱ.Clock-configuration

Ⅲ.Project-configuration

Project

Code Generator

Advanced Settings

Ⅳ.Tool

4.生成代码

三、新建文件夹解析

Core:

Drivers

MDK-ARM

ioc


 

一、cubemx和固件库安装

跳过

二、新建工程

1.选择(ACCESS TO MCU SELECTOR)进入芯片类型选择

2.选择我们使用的stm32f407zgt6芯片

3.基础配置

可以看到,cubemx的界面还是相当清晰明了的,先简单介绍一下,基于篇幅原因后续再展开介绍

Ⅰ.Pin-configuration

System Core:配置系统内核里的外设

        DMA:直接存储器访问。可以不经过CPU直接把一块区域的数据直接复制到另一块区域中,这样就节省了CPU的资源,让CPU做一些更复杂的工作。

        GPIO:通用输入输出端口。可以理解为一个电平点,你可以让它输出高电平or低电平

        IWDG:独立看门狗。如果系统故障一段时间,它会自动另系统复位

        NVIC:中断管理系统。可以管理每一个需要中断的线

        RCC:时钟配置

        SYS:配置debug模式

        WWDG:窗口看门狗

Analog:        包含ADC and DAC功能配置

Timers:        32最nb的外设——定时器

Connectivity:      一些与其他外部设备交流的方法,包括CAN,I2C,SPI,USART等通信

pin中,基础配置只需要配置RCC和SYS即可

RCC:高速时钟和低速时钟均选择使用外部晶振

               master clock output选择后在一个引脚可以同步输出时钟,暂时不需要勾选

SYS:配置使用串口进行debug

Ⅱ.Clock-configuration

配置32时钟,32的程序是一步一步进行的,那怎么个节奏来执行呢?就通过时钟来配置,若1hz频率,那代码里的代码就是1秒执行一行,这里我们直接配置上F4的最高速168M,不同芯片下面都会有提示最大的是什么

输入168,回车,会提示是否需要自动配置,我们选择ok,系统就会自动配置分频器达到168M

Ⅲ.Project-configuration

Project

project中可设置项目名称、路径、IDE 类型

toolchain/ide :由于我们用的是keil,所以选择mdk-arm版本最新即可,下面全部默认

Code Generator

第一部分:

1. 复制所有的库文件到工程目录中;2. 只复制必须的库到工程目录中

电脑速度快选1,如果电脑较卡选2

第二部分:

每个外设有单独的 .c/.h 文件,即将外设的配置文件单独配置成两个文件供我们调用,初学者必选

Advanced Settings

可选 HAL 库和 LL 库(HAL 编译后文件大,LL 编译后文件小)一般全HAL

Ⅳ.Tool

不用动

4.生成代码

单击generate code

可选择打开路径或直接打开工程或close关闭不做操作

三、新建文件夹解析

Core:

存放了CubeMX生成的外设代码文件

Drivers

存放了HAL库文件、芯片内核文件。

MDK-ARM

存放了Keil的工程入口文件、调试文件、编译输出文件等。

ioc

点击可以回到cubemx配置工程

进入MDK-ARM后则可以找到uvprojx文件,单机后则可进入cubemx新建的程序之中

新建成功,可以找到main函数进行编程了

注意:

main中要在user code begin和user code end之间编写才不会在重新配置cubemx之后被清除掉

有什么问题可以直接在底下评论

 

### STM32 HAL教程与使用指南 #### 1. STM32 HAL简介 STM32 HAL是由ST公司提供的硬件抽象层软件,旨在简化开发者对微控制器硬件资源的访问过程[^2]。通过一组标准化的应用程序接口(API),HAL允许开发者无需深入了解底层寄存器配置即可实现复杂的功能。 #### 2. 学习资料推荐 对于希望深入学习STM32 HAL的开发者而言,《STM32 HAL开发实战指南——F103系列》是一份详尽的学习材料[^1]。这份文档不仅覆盖了理论知识,还提供了丰富的实践案例供读者参考。此外,《STM32 HAL入门指南-附示例代码》也是一本非常实用的手册,其中包含了多个具体实例帮助理解HAL的工作原理及其主要组件。 #### 3. 主要功能模块介绍 以下是STM32 HAL的一些核心组成部分以及它们的作用: - **GPIO (General Purpose Input/Output)** 提供通用输入输出端口的操作函数,用于设置引脚模式、读取状态或驱动外部设备等。 - **ADC (Analog-to-Digital Converter)** 支持模拟信号数字化转换的相关操作,适用于传感器数据采集场景。 - **UART (Universal Asynchronous Receiver Transmitter)** 实现串行通信协议的支持,便于与其他外设交换信息。 - **TIM (Timer)** 控制定时器单元的行为,可用于生成PWM波形或者测量时间间隔等功能。 #### 4. 开发环境搭建 为了能够顺利开展基于HAL的编程工作,需完成如下准备工作: - 安装最新的Keil MDK或其他兼容IDE; - 下载并导入官方发布的固件包至工程目录下; - 配置正确的芯片型号及相关参数选项。 下面展示了一个简单的LED闪烁实验代码片段作为示范: ```c #include "stm32f1xx_hal.h" void SystemClock_Config(void); static void MX_GPIO_Init(void); int main(void){ HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); while(1){ HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); // 切换PA5管脚电平 HAL_Delay(500); // 延时500ms } } /** * @brief 初始化GPIO */ static void MX_GPIO_Init(void){ __HAL_RCC_GPIOA_CLK_ENABLE(); // 启用GPIOA时钟 GPIO_InitTypeDef gpio_init_structure; gpio_init_structure.Pin = GPIO_PIN_5; // 设置目标引脚为第5号位 gpio_init_structure.Mode = GPIO_MODE_OUTPUT_PP;// 输出推挽模式 gpio_init_structure.Pull = GPIO_NOPULL; // 不带上下拉电阻 gpio_init_structure.Speed = GPIO_SPEED_FREQ_LOW;// 工作速度低档位 HAL_GPIO_Init(GPIOA,&gpio_init_structure); // 执行初始化动作 } ``` 以上代码实现了最基本的周期性点亮熄灭连接在指定IO上的发光二极管效果[^1]。 #### 5. 注意事项 当利用这些参考资料进行自学时,请务必确认所使用的教材版本是最新的,并且遵循作者给出的各项指导说明以获得最佳体验成果[^1]。如果遇到技术难题,则可以通过查阅官方论坛帖子或是加入QQ群组寻求解答途径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值