嵌入式学习笔记 - 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配置,也就是串口底层硬件配置。

相关推荐
想要入门的程序猿11 小时前
摄影测量学习()
数码相机·学习
智慧景区与市集主理人11 小时前
巨有科技:市集笔记内容分发,低成本打造本地流量曝光矩阵
大数据·笔记·科技
worilb11 小时前
Spring Cloud 学习与实践(13):使用 Seata 解决分布式事务问题
分布式·学习·spring cloud
渣渣灰飞12 小时前
MySQL 系统学习 第四阶段:MySQL 高级 第一节:索引(Index)
数据库·学习·mysql
IDIOSF12 小时前
Apple Notes Liberator:把 Apple Notes 里的笔记搬出来
笔记·其他
普普通通的一名码农12 小时前
TPS6120芯片说明
驱动开发·笔记·芯片手册
星子yu12 小时前
【学习】怎么学好数据结构
数据结构·学习
~kiss~13 小时前
MoE的痛点:离散路由
学习
Amazing_Cacao13 小时前
CFCA精品可可工艺师初级校准:暴力破解机器黑盒,实现物理参数与最终风味的精准对齐
笔记·学习
阿米亚波13 小时前
【EVE-NG 实战】防火墙基础(VLAN · VRRP · NAT · ACL · 静态路由)
运维·网络·笔记·网络协议·计算机网络·网络安全·运维开发