资讯详情

【HAL库】嵌入式开发步骤

📅 2026/10/2 20:36:19 | 华诺云谱 👁 阅读
【HAL库】嵌入式开发步骤
1. GPIO1.1 GPIO引脚分布引脚主要分为特殊功能的引脚和普通IO引脚其中灰色的是普通引脚可以通过编程控制黄色的是特殊功能引脚无法通过编程控制具有独特的功能。VDD VSS用来接电源VBAT用来接备用电池BOOT0用来启动模式选择VDD VSS名字来源MOS管中电流从漏极D流向源极S为普通引脚分组为GPIOA GPIOB GPIOC GPIOD1.2 IO的复用和重映射一个IO引脚可以具备多个不同的功能例如如下的引脚可以选择多个引脚的作用单片机上的外设很多引脚会重复所以为了可以同时使用这些功能单片机具有引脚复用的功能通过复用可以使得多个外设同时工作例如下图所示复用功能重映射将冲突的复用功能映射到其他引脚上。1.3 GPIO的四种输出模式推挽开漏通用通用输出推挽通用输出开漏复用复用输出推挽复用输出开漏具体的介绍细节可以参考https://blog.csdn.net/2301_81230001/article/details/1663737281.4 GPIO的输出速度具体的介绍细节可以参考https://blog.csdn.net/2301_81230001/article/details/1663737281.5 GPIO-HAL库编程首先生成代码模板后会在main函数中进行初始化如下所示intmain(void){/* 1. HAL库底层初始化 */HAL_Init();/* USER CODE BEGIN Init */// 【时钟未升频】MCU仍在内部低速时钟慎用HAL_Delay()/* USER CODE END Init *//* 2. 配置系统主时钟HSE/PLL升到目标主频 */SystemClock_Config();/* USER CODE BEGIN SysInit */// 【时钟已经配置完成】主频正常可以使用HAL_Delay()/* USER CODE END SysInit *//* 3. 所有外设初始化 */MX_GPIO_Init();MX_USART1_Init();MX_ADC1_Init();// ...其他MX_xxx_Init()/* USER CODE BEGIN 2 */// 所有外设初始化完毕后放自己的初始化代码/* USER CODE END 2 *//* 主循环 */while(1){/* USER CODE BEGIN 3 *//* USER CODE END 3 */}}重点函数的功能函数核心作用关键限制HAL_Init()复位外设、初始化 Flash、SysTick 滴答定时器、设置中断分组⚠️系统时钟仍是默认低速不要在这里用串口、ADC 等外设HAL_Delay 不准SystemClock_Config()配置 PLL、AHB/APB 分频把系统时钟设置为 CubeMX 选定频率⚠️必须在 HAL_Init 之后所有 MX 外设初始化之前MX_GPIO_Init()开启 GPIO 端口时钟配置引脚模式推挽 / 开漏 / 输入 / 复用、上下拉、速率⚠️必须在 SystemClock_Config 之后否则 GPIO 外设时钟不生效1.6 使用bootloader清除程序如果没有选择调试接口-则单片机默认烧录一次就锁死芯片。解锁的操作过程可以参考如下链接https://docs.baud-dance.com/docs/stm32/FAQ/CompilationFailed1.7 GPIO四种输入模式输入模式核心说明典型用途要点浮空输入GPIO_NOPULL引脚不接上拉/下拉电阻电平不确定受外界干扰大外接自带上下拉的信号悬空时电平抖动一般不推荐单独使用上拉输入GPIO_PULLUP内部接上拉电阻无外部信号时默认高电平按键输入按键一端接GND按键按下→低电平松开→高电平下拉输入GPIO_PULLDOWN内部接下拉电阻无外部信号时默认低电平按键输入按键一端接VCC按键按下→高电平松开→低电平模拟输入GPIO_ANALOG关闭数字输入缓冲引脚进入模拟通道不读高低电平ADC采集模拟电压不能用GPIO_ReadPin读取只能ADC采样具体的介绍细节可以参考https://blog.csdn.net/2301_81230001/article/details/1663737282. UART2.1 UART基础知识具体的介绍细节可以参考https://blog.csdn.net/2301_81230001/article/details/1664909812.2 使用串口发送数据在CubeMX中串口具有多种工作模式串口 句柄HAL库句柄管理对应外设的结构体实例保存外设地址、配置与运行状态作为HAL库函数识别和操作外设的唯一凭证。3. IIC3.1 IIC基础知识IIC- Inter-Integrated Circuit集成电路间总线具体的介绍细节可以参考https://blog.csdn.net/2301_81230001/article/details/1663737894. 时钟系统4.1 时钟基础知识具体的介绍细节可以参考https://blog.csdn.net/2301_81230001/article/details/166788037HAL库中具有对应的时钟树图形化设置分为两部分小时钟树-主要涉及实时时钟和看门狗大时钟树- 主要涉及AHBAPB1APB2等等挂载外设。5. SPI5.1 SPI基础知识SPI Serial Peripheral Interface- 串行外设接口适用于高速双向数据传输场景具体的介绍细节可以参考https://blog.csdn.net/2301_81230001/article/details/1664909575.2 SPI与外部Flash通信首先需要选择SPI的工作方式在图形化界面有如下的选项一般单片机作为主机使用6. 中断6.1 中断的基础知识具体的介绍细节可以参考https://blog.csdn.net/2301_81230001/article/details/1667880377. 定时器7.1 基础知识具体的介绍细节可以参考https://blog.csdn.net/2301_81230001/article/details/166794087?spm1001.2014.3001.55018. ADC8.1 基础知识具体的介绍细节可以参考https://blog.csdn.net/2301_81230001/article/details/166902233?spm1001.2014.3001.55019. WDG
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑