2.MX生成的代码会调用HAL_UART_MspInit();来初始化UART,当然这个代码也是自动生成,不过用户可以在这个函数里面添加自己想要添加的操作,时面包括了NVIC_Configuration,DMA_Configuration等,也可以添加一些置位操作如__HAL_UART_ENABLE,__HAL_UART_ENABLE_IT等等 3.在HAL_UART_MspDeInit()中添加一些与HAL_UART_MspInit...
第二步是要配置与所使用的UART连接的GPIO口,因为任何外设想与外界交换数据都需要正确的和使用的GPIO进行绑定。 在还未介绍的Step3中,我们需要调用HAL_UART_Init()初始化UART,HAL_UART_Init()又会调用HAL_UART_MspInit()对于单片机的Msp(MCUSpecific Package 单片机的具体方案)进行配置,这里Msp就指具体配置哪个IO与U...
2.MX生成的代码会调用HAL_UART_MspInit();来初始化UART,当然这个代码也是自动生成,不过用户可以在这个函数里面添加自己想要添加的操作,时面包括了NVIC_Configuration,DMA_Configuration等,也可以添加一些置位操作如__HAL_UART_ENABLE,__HAL_UART_ENABLE_IT等等 3.在HAL_UART_MspDeInit()中添加一些与HAL_UART_MspInit...
4.stm32f4xx_hal_uart.c源文件中有HAL_UART_MspInit的弱实现 -->__weak修饰的函数其作用是将当前文件的对应函数声明为弱函数符号,如果外部文件出现相同的函数名,最终编译出来的 文件会优先指向外部文件的函数符号;因此HAL_UART_MspInit函数实现了重写。 /** * @brief UART MSP Init. * @param huart Pointer...
在usart.c文件的HAL_UART_MspInit函数中,添加如下代码,作用是打开接收、发送、以及错误检测中断:(这部分代码是HAL库里实现的,可以方便地设置中断) 中断服务程序中,如下编写,用条件编译,将原来的中断服务函数去除掉(这样代码写在user代码区,重新生成代码时也不会被cubemx删除),添加自己的中断服务函数: ...
UART_HandleTypeDefUART1_Handler; 1. 右键查看结构体成员 typedefstruct { USART_TypeDef*Instance;/*!< UART registers base address */ UART_InitTypeDefInit;/*!< UART communication parameters */ uint8_t*pTxBuffPtr;/*!< Pointer to UART Tx transfer Buffer */ ...
the HAL_UART_MspInit could be implemented in the user file } __weak是定义的一个弱函数,如果用户重新定义了这个函数,那么会优先执行用户定义的函数,可以重新定义这个函数配置与MCU级别相关的硬件初始化,这也是HAL库的优点。 所以HAL库中的初始化流程为:先初始化与MCU无关的串口协议,再初始化与MCU相关的硬件配...
HAL_UART_MspInit(huart);//此处调用 } huart->gState = HAL_UART_STATE_BUSY;/* Disable the ...
void HAL_UART_MspInit(UART_HandleTypeDef *huart);void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart); 在这些函数中,只需要调用初始化时定义的句柄UART1_Handler就好。 2、MSP函数 MSP: MCU Specific Package 单片机的具体方案 MSP是指和MCU相关的初始化,引用一下正点原子的解释,个人觉得说的很明白: ...