[STM32F4] STM32F4系列各种驱动简述

[复制链接]
 楼主| Jiangxiaopi 发表于 2025-7-7 14:02 | 显示全部楼层 |阅读模式
背景
入行嵌入式软件已经两年多的时间,发现每天都是在不停的赶进度做新功能模块,没有机会回头看看自己两年来的成绩,所以我准备重新梳理一下ST的F4与H7系列MCU的驱动,外设以及常用模块等教程也算回顾一下,后期还会有ESP32等教程。下面是简单的梳理一下STM32F4的一些常用的驱动,后面会详细的介绍每种驱动的编写过程。

STM32F4驱动开发基础
STM32F4系列微控制器基于ARM Cortex-M4内核,广泛用于嵌入式开发。驱动开发通常涉及外设配置、寄存器操作和库函数调用。

开发工具准备

IDE选择:Keil MDK、IAR Embedded Workbench或STM32CubeIDE(免费)。
库支持:HAL库(STM32CubeMX生成)、LL库(轻量级),标准库 或直接寄存器操作。
调试工具:ST-Link、J-Link等调试器。
关键外设驱动教程

GPIO驱动

配置输入/输出模式(推挽、开漏等)。
示例代码(HAL库):
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);


UART通信

配置波特率、数据位、校验位。
中断/DMA模式传输数据。
示例代码(中断接收):
UART_HandleTypeDef huart1;
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
HAL_UART_Init(&huart1);
HAL_UART_Receive_IT(&huart1, rx_buffer, 1);


SPI驱动(如OLED屏)

配置主从模式、时钟极性和相位。
示例代码(发送数据):
SPI_HandleTypeDef hspi1;
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
HAL_SPI_Transmit(&hspi1, tx_data, sizeof(tx_data), HAL_MAX_DELAY);


I2C驱动(如EEPROM)

配置时钟速度、地址模式。
示例代码(读取数据):
I2C_HandleTypeDef hi2c1;
hi2c1.Instance = I2C1;
hi2c1.Init.ClockSpeed = 100000;
HAL_I2C_Mem_Read(&hi2c1, DEVICE_ADDR, MEM_ADDR, I2C_MEMADD_SIZE_8BIT, rx_data, size, timeout);


定时器(PWM、输入捕获)

PWM输出配置:
TIM_HandleTypeDef htim3;
htim3.Instance = TIM3;
htim3.Init.Prescaler = 84-1; // 1MHz时钟
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);


进阶驱动开发
DMA应用

用于高速数据传输(如ADC采样、UART收发)。
示例(ADC DMA采样):
ADC_HandleTypeDef hadc1;
DMA_HandleTypeDef hdma_adc1;
HAL_ADC_Start_DMA(&hadc1, adc_buffer, buffer_size);


调试与优化
逻辑分析仪:验证SPI/I2C时序。
STM32CubeMonitor:实时监控变量。
低功耗模式:配置停机模式或待机模式。
资源推荐
官方文档:STM32F4参考手册(RM0090)。
社区:STM32中文论坛、GitHub开源项目(如STM32F4xx_HAL_Driver)。
书籍:《STM32库开发实战指南》。
通过以上方法和示例,可以快速掌握STM32F4的外设驱动开发。实际开发中建议结合STM32CubeMX生成初始化代码,再手动优化关键逻辑。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_63918227/article/details/149022758

LOVEEVER 发表于 2025-7-29 23:40 | 显示全部楼层
非常不错的资源资料
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

224

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部