STM32中MspInit的一些知识

这篇具有很好参考价值的文章主要介绍了STM32中MspInit的一些知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在书本上以及网上总结了一些关于Msp函数的知识

在学习HAL库的过程中,总是会看到MspInit和MspDeInit,书本上只是说这是回调函数,但是关于这个函数有什么用,为什么要有这个函数,却说的很少,于是我就上网找了一些资料,在结合一下书本上的说法,就有了这一篇笔记。

这篇笔记有可能会随着我的水平的提升而进行迭代。

MSP:MCU Specific Package,即MCU特定程序包,也称MCU具体方案

因为MspDeInit用的很少,所有这里只介绍MspInit

可以通过两个说法来了解带有MspInit的函数的主要作用

①存放外设使用到的GPIO、CLOCK、NVIC、DMA等外设的初始化(驱动)代码。

②针对具体的MCU型号的某个功能进行硬件初始化。

这种函数的名称基本都是HAL_PPP_MspInit()和HAL_PPP_MspDeInit(),PPP代表任意外设,这种函数通常会被他们的上一级函数HAL_PPP_Init()调用。

搞这样一个HAL_PPP_MspInit()函数出来,是为了把针对具体的MCU型号的某个功能进行硬件初始化的代码独立出来,方便移植。

例如,我们想把程序从F1移植到F4,那我们只需要修改HAL_PPP_MspInit()里面的内容,其他的地方不变。

再说一下函数执行的大概流程

①执行HAL_PPP_Init(),如HAL_USART_Init(),进行一些与具体硬件无关的初始化设置,比如波特率、奇偶校验位等(此时初始化的内容与具体的MCU型号无关,在不同的MCU上都是一样的)

②HAL_PPP_Init()会调用HAL_PPP_MspInit(),如HAL_USART_MspInit(),进行一些与具体硬件有关的初始化设置,比如具体的GPIO引脚(此时初始化的内容会因为具体的MCU型号的不同而不同)

在C语言中,关键字 "__weak" 用于修饰函数,表示该函数是一个弱函数(weak function)。弱函数是指,如果用户重新定义了这个函数,那么会执行用户定义函数而忽略弱函数。

MspInit()函数通常有两个,一个是HAL库自带的,由关键字 "__weak" 修饰,是弱函数,另一个是用户重新实现的。例如HAL_Init()调用的HAL_MspInit()。

在文件stm32f4xx_hal.c中有使用"__weak" 定义的HAL_MspInit()

mspinit,c语言,单片机,stm32

同时,在用户文件stm32f4xx_hal_msp.c内,又重新定义了这个函数

mspinit,c语言,单片机,stm32

此时,HAL_Init()调用的HAL_MspInit()就是用户重新实现的那个文章来源地址https://www.toymoban.com/news/detail-774645.html

到了这里,关于STM32中MspInit的一些知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32单片机(一)STM32简介

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月10日
    浏览(57)
  • STM32单片机(二)STM32环境搭建

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月10日
    浏览(59)
  • STM32单片机开发-01 STM32介绍

    通过野火开发板学习单片机 从内核上分有Cortex-M0、M3、M4 和M7 F1 代表了基础型,基于Cortex-M3 内核,主频为72MHZ F4 代表了高性能,基于Cortex-M4 内核,主频180M。 数据手册:用于芯片选型和设计原理图 参考手册:用于编程时查阅 Icode总线 – 该总线讲M3内核的指令总线与闪存指令

    2024年01月21日
    浏览(57)
  • GD32单片机和STM32单片机的对比分析

    GD32单片机和STM32单片机都是基于Arm Cortex-M3/M4内核的32位通用微控制器,广泛应用于各种嵌入式系统和物联网领域。两者之间有很多相似之处,但也有一些不同之处,本文将从以下几个方面对比分析两者的特点、优势和开发成本。 GD32单片机采用的是二代的M3/M4内核,而STM32单片

    2024年02月16日
    浏览(57)
  • STM32单片机学习3--STM32控制键盘

    单片机型号:STM32F103C8T6 开发环境:Keil5 4种输入模式 上拉输入模式:在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为1,高电平(与Vdd相连的为上拉电阻); 下拉输入模式:在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为0,低电平(与Vss相连的为下拉电

    2024年02月10日
    浏览(55)
  • 【STM32】STM32单片机结构及部件原理

    STM32是目前比较常见并且多功能的单片机,要想学习STM32,首先要去了解它的基本构成部分以及各部分的原理。 单片机型号:正点原子STM32F103ZET6 目录 STM32内部结构总览图: 2.内部结构解析         1.内核 :STM32F103ZET6采用的是 ARM Cortex-M3 处理器,内核可以理解为单片机 处

    2023年04月08日
    浏览(46)
  • STM32单片机学习4--STM32控制八段码

    数码管:实际上是多个LED按照一定顺序排列,并加上遮罩所构成的元件。 八段码一般会引出9个引脚,其中7个引脚显示数字(或某些字母),1个显示小数点,1个作为片选端。 根据连接方式的不同,数码管分为 共阳 和 共阴 。 共阳在这端输出低电平时点亮,高电平时会熄灭

    2024年01月23日
    浏览(46)
  • 【单片机】STM32单片机的各个定时器的定时中断程序,标准库,STM32F103

    高级定时器和普通定时器的区别(https://zhuanlan.zhihu.com/p/557896041): TIM1是高级定时器,使用的时钟总线是RCC_APB2Periph_TIM1,和普通定时器不一样。 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用

    2024年02月07日
    浏览(55)
  • 【单片机】STM32单片机,定时器的输入捕获,基于捕获的频率计,STM32F103

    下面的定时器都具有输入捕获能力: 查看另一篇文章:https://qq742971636.blog.csdn.net/article/details/131471539 外部计数频率计的缺点:需要两个定时器配合,最高能测量的频率是否有限制我没具体尝试。 基于捕获的频率计的缺点:最高能测量的频率有限制。 TIM3_CH1 PWM PA6 10KHZ。 输入

    2024年02月14日
    浏览(52)
  • STM32-01-认识单片机

    单片机是什么? 单片机:Single-Chip Microcomputer,单片微型计算机,是一种集成电路芯片。 下面是电脑与单片机的对应关系: 单片机的特点? 体积小:5mmx5mm 功耗低:mA级 集成度高:IO、TIM、AD、DA 使用方便:C、Debug 拓展灵活:IIC、SPI、FSMC 单片机有什么用? 仪器仪表:电源、

    2024年02月03日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包