HAL_MspInit 函数的主要作用是进行 MCU相关的硬件初始化操作。例如我们要初始化某些硬件,我们可以硬件相关的初始化配置 写在HAL_MspDeinit 函数中。这样的话,在系统启动后调用了 HAL_Init 之后,会自动调用硬件初始化函数。 实际上,我们在工程模板中直接删掉 stm32f1xx_hal_msp.c 文件也不会对程序运行产生任何影响...
当我们需要移植程序到 STM32F1平台的时候,我们只需要修改 HAL_PPP_MspInit 函数内容而不需要修改 HAL_PPP_Init 入口参数内容。 在HAL库中,几乎每初始化一个外设就需要设置该外设与单片机之间的联系,比如IO口,是否复用等等,可见,HAL库相对于标准库多了MSP函数之后,移植性非常强,但与此同时却增加了代码量和代码的...
1、复制stm32f2xx_hal_msp_template.c,参照该模板,依次实现用到的外设的HAL_PPP_MspInit和 HAL_PPP_MspDeInit。 2、复制stm32f2xx_hal_conf_template.h,用户可以在此文件中自由裁剪,配置HAL库。 3、在使用HAL库时,必须先调用函数:HAL_StatusTypeDef HAL_Init(void)(该函数在stm32f2xx_hal.c中定义,也就意...
外设系统级初始化/解除初始化回调函数(用户代码的第二大部分:对于 MSP 的处理):HAL_PPP_MspInit()和HAL_PPP_MspDeInit例如:__weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)。在 HAL_PPP_Init() 函数中被调用,用来初始化底层相关的设备(GPIOs, clock, DMA, interrupt)。 处理完成回调函数:HAL_PPP_Pr...
外设系统级初始化/解除初始化回调函数(用户代码的第二大部分:对于MSP的处理):HAL_PPP_MspInit()和HAL_PPP_MspDeInit**。 例如:__weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)。在HAL_PPP_Init()函数中被调用,用来初始化底层相关的设备(GPIOs, clock, DMA, interrupt)。
同样,MSP函数又可以配合句柄,达到非常强的移植性: 代码语言:javascript 复制 voidHAL_UART_MspInit(UART_HandleTypeDef*huart); 3、Callback函数 类似于MSP函数,个人认为Callback函数主要帮助用户应用层的代码编写。 还是以USART为例,在标准库中,串口中断了以后,我们要先在中断中判断是否是接收中断,然...
void HAL_UART_MspInit(UART_HandleTypeDef *huart);void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);在这些函数中,只需要调用初始化时定义的句柄UART1_Handler就好。02MSP函数 MSP: MCU Specific Package 单片机的具体方案 MSP是指和MCU相关的初始化,引用一下正点原子的解释,个人觉得说的很明白:我们要初...
1.外设系统级初始化/解除初始化回调函数:HAL_PPP_MspInit()和HAL_PPP_MspDeInit。例如:__weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)。在HAL_PPP_Init() 函数中被调用,用来初始化底层相关的设备(GPIOs, clock, DMA, interrupt)
1.外设系统级初始化/解除初始化回调函数(用户代码的第二大部分:对于MSP的处理):HAL_PPP_MspInit()和HAL_PPP_MspDeInit例如:__weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)。在HAL_PPP_Init() 函数中被调用,用来初始化底层相关的设备(GPIOs, clock, DMA, interrupt) ...
1. 外设系统级初始化/解除初始化回调函数(用户代码的第二大部分:对于MSP的处理):HAL_PPP_MspInit()和 HAL_PPP_MspDeInit** 例如:__weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)。在HAL_PPP_Init() 函数中被调用,用来初始化底层相关的设备(GPIOs, clock, DMA, interrupt) ...