1. MSP 栈顶地址 当芯片配置为从主闪存启动(例如 BOOT0 = 0,BOOT1 = x)时,存储控制器会自动将起始地址 0x00000000 映射到主闪存的起始物理地址(通常是 0x08000000)。这是通过芯片内部的硬连线和一些基本的逻辑电路来实现的,这些电路会根据启动模式引脚(BOOT0 和 BOOT1)的状态来确定初始的地址映射关系。 这...
在HAL库中,几乎每初始化一个外设就需要设置该外设与单片机之间的联系,比如IO口,是否复用等等,可见,HAL库相对于标准库多了MSP函数之后,移植性非常强,但与此同时却增加了代码量和代码的嵌套层级。可以说各有利弊。 同样,MSP函数又可以配合句柄,达到非常强的移植性: voidHAL_UART_MspInit(UART_HandleTypeDef *huart)...
3.在stm32f1xx_hal_msp.c内定义了HAL_MspInit(void)函数 (也就是间接的通过stm32f1xx_hal.h文件先声明了HAL_MspInit(void)函数,再接着对其进行具体的定义,为什么要在stm32f1xx_hal.h中先声明,是因为还要在stm32f1xx_hal.c中还进行了弱定义)。 4.stm32f1xx_hal.c内弱定义了 __weak void HAL_MspInit...
当我们需要移植程序到 STM32F1 平台的时候,我们只需要修改 HAL_PPP_MspInit 函数内容而不需要修改 HAL_PPP_Init 入口参数内容。 ” 在HAL 库中,几乎每初始化一个外设就需要设置该外设与单片机之间的联系,比如IO口,是否复用等等。可见,HAL 库相对于标准库多了MSP函数之后,移植性非常强,但与此同时却增加了代码量...
MSP函数,全称为MCU支持包函数,包含MspInit的函数用于执行MCU级别的硬件初始化设置。这些函数通常由上层初始化函数调用,便于在不同型号的MCU上移植代码。stm32l4xx_hal_msp.c文件内定义了两个函数:HAL_MspInit和HAL_MspDeInit。这两个函数分别由stm32l4xx_hal.c文件中的HAL_Init和HAL_DeInit调用。HAL...
HAL_MspInit 函数的主要作用是进行 MCU相关的硬件初始化操作。例如我们要初始化某些硬件,我们可以硬件相关的初始化配置 写在HAL_MspDeinit 函数中。这样的话,在系统启动后调用了 HAL_Init 之后,会自动调用硬件初始化函数。 实际上,我们在工程模板中直接删掉 stm32f1xx_hal_msp.c 文件也不会对程序运行产生任何影响...
通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的。一般大多数都会选用标准库和HAL库,而极少部分人会通过直接配置寄存器进行开发。 网上关于标准库、HAL库的描述相信是数不胜数。可是一个对于很多刚入门的朋友还是没法很直观的去真正了解这些不同开发发...
stm32l4xx_hal_msp.c 文件 MSP,全称为 MCU support package,函数名字中 带有 MspInit 的函数,它们的作用是进行 MCU 级别硬件初始化设置,并且它们通常会被上一层的初始化函数 所调用,这样做的目的是为了把 MCU …
故这部分初始化我们称之为MSP(单片机的具体解决方案),可以看作是HAL库的承载初始化 ...
STM32HAL库与标准库的区别_浅谈句柄、MSP函数、Callback函数 最近笔者开始学习STM32的HAL库,由于以前⼀直⽤标准库进⾏开发,于是发现了HAL库⼏点好玩的地⽅,在此分享。1.句柄 在STM32的标准库中,假设我们要初始化⼀个外设(这⾥以USART为例)我们⾸先要初始化他们的各个寄存器。在标准库中,这些...