a: HAL_ADC_MspInit()使能ADC时钟,设置时钟源, 使能ADC Pin,设置为输入模式,可选 DMA,中断 b:HAL_ADC_MspDeInit() 与 HAL_ADC_MspInit()作用相反,用来关闭ADC,可选 DMA,中断 2 配置ADC参数,详细参数描述参考ADC属性定义。通过HAL_ADC_Init()来加载参数 3 配置ADC通道,包括使用的通道,采样时间等 HAL_ADC...
a: HAL_ADC_MspInit()使能ADC时钟,设置时钟源, 使能ADC Pin,设置为输入模式,可选 DMA,中断 b:HAL_ADC_MspDeInit() 与HAL_ADC_MspInit()作用相反,用来关闭ADC,可选 DMA,中断 2 配置ADC参数,详细参数描述参考ADC属性定义。通过HAL_ADC_Init()来加载参数 3 配置ADC通道,包括使用的通道,采样时间等 HAL_ADC_...
可见,HAL 库相对于标准库多了MSP函数之后,移植性非常强,但与此同时却增加了代码量和代码的嵌套层级。可以说各有利弊。 同样,MSP 函数又可以配合句柄,达到非常强的移植性: 登录后复制voidHAL_UART_MspInit(UART_HandleTypeDef *huart); 3 Callback函数 类似于 MSP 函数,个人认为 Callback 函数主要帮助用户应用层...
对应的底层复位函数HAL_TIM_Base_DeInit是在函数HAL_TIM_Base_MspDeInit里面被调用的,也是弱定义的。 当然,用户也可以自己初始化,不限制必须在两个函数里面实现。 定时器外设的基本参数配置完毕后还不能使用,还需要配置GPIO、时钟、中断等参数,比如下面配置TIM1使用PA8做PWM输出。 代码语言:javascript 代码运行次数:...
函数HAL_DeInit里面调用的HAL_MspDeInit一般在文件stm32h7xx_hal_msp.c里面做具体实现,主要用于底层初始化,跟函数HAL_Init里面调用的HAL_MspInit是一对。当前此函数也在文件stm32h7xx_hal.c里面,只是做了弱定义。 使用举例: 此函数的使用比较简单,需要调用的时候直接调用即可。
2)调用HAL_MspDeInit函数,对底层硬件初始化进行复位。HAL_MspDeInit也在stm32h7xx _hal.c文件里面做了弱定义,并且与HAL_MspInit函数是一对存在。HAL_MspInit函数负责对底层硬件初始化,HAL_MspDeInit函数则是对底层硬件初始化进行复位。这两个函数都是需要用户根据自己的需求去实现功能,也可以不使用。
就是说MSP的作用是把某个外设的接口资源给具体化了,比如对于串口外设,就是指定串口具体的接口引脚状态(包含引脚的位置、电气属性等等)以及外设与CPU的接口(外设与CPU的接口就是特殊功能寄存器的映射地址,也就是告诉CPU要操作哪个外设只要操作相应地址的寄存器就可以了)。
HAL_PPP_MspDeInit** 例如:__weak void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)。在HAL_PPP_Init() 函数中被调用,用来初始化底层相关的设备(GPIOs, clock, DMA, interrupt) 处理完成回调函数:HAL_PPP_ProcessCpltCallback*(Process指具体某种处理,如UART的Tx),例如:__weak ...
对应的底层复位函数HAL_LPTIM_MspDeInit是在函数 HAL_LPTIM_DeInit里面被调用的,也是弱定义的。 当然,用户也可以自己初始化,不限制必须在两个函数里面实现。 定时器外设的基本参数配置完毕后还不能使用,还需要配置GPIO、时钟、中断等参数,比如下面配置LPTIM1使用PD13做PWM输出。 代码语言:javascript 代码运行次数:0 ...