嵌入式学习笔记 - HAL_xxx_MspInit(xxx);函数

使用cubeMX生成的HAL库函数中,所有外设的初始化函数HAL_xxx_Init(&xxxHandle)中都存在有此调用函数,此调用函数其实是对各外设模块比如UART,I2C等的底层硬件初始化,包括UART时钟,以及UART用到的GPIO的工作模式以及GPIO的相应的时钟,以及串口NVIC的配置,即初始化配置各外设的底层硬件

以串口模块为例:

一 以下为串口模块句柄结构体赋值函数,最后会引用HAL_UART_Init(&UartHandle)函数将赋值给结构体句柄的参数写入串口寄存器进行配置:

二 以下为HAL_UART_Init(&UartHandle)函数内部结构,绿色部分为将赋值给结构体句柄的参数向串口寄存器进行写入的最终实现语句,而红色语句HAL_UART_MspInit(huart)函数出现在配置串口寄存器之前:

三 以下为HAL_UART_MspInit(huart)函数的内部结构,有下图可以看出,是对UART相关的时钟以及GPIO进行配置的过程,以及NVIC配置,也就是串口底层硬件配置。

相关推荐
烤麻辣烫6 分钟前
算法--二分搜索
java·开发语言·学习·算法·intellij-idea
代码丰25 分钟前
Github高赞项目50K learn-claude-code 的学习笔记总结
笔记·学习·github
三品吉他手会点灯30 分钟前
C语言学习笔记 - 18.C编程预备计算机专业知识 - 什么是变量
c语言·开发语言·笔记·学习
被放养的研究生1 小时前
WPS 通配符神技:一键上标参考文献 + 中英文自动加空格
笔记·排版·wps·通配符
STLearner1 小时前
AI论文速读 | QuitoBench:支付宝高质量开源时间序列预测基准测试集
大数据·论文阅读·人工智能·深度学习·学习·机器学习·开源
醇氧1 小时前
WSL2(Windows Subsystem for Linux ) 从入门到实践指南
linux·运维·服务器·windows·学习
李李李勃谦2 小时前
基于鸿蒙PC多窗口特性的笔记管理工具开发实践
笔记·华为·harmonyos
阿荻在肝了2 小时前
Agent学习七:LangGraph学习-持久化与记忆二
python·学习·agent
智者知已应修善业2 小时前
【触发器种类和真值表】2023-7-5
驱动开发·经验分享·笔记·硬件架构·硬件工程
深蓝海拓2 小时前
Qt:创建一套基于HSL颜色体系的颜色库
笔记·python·qt·学习·ui