STM32程序串口DMA初始化时进入hardfault_handler()

低级错误导致:

原来自己的工程里串口用的中断方式,

从官方历程复制串口的DMA程序到自己的工程里,

结果一执行到DMA初始化,就hardfault_handler(),反复重启。

初始化函数里调用了HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)这个函数

程序执行到这里就会复位。

原因竟然是没有更新MSP初始化函数。这HAL库挺坑人的,一个串口初始化还分两部分,经常忽略还有一个MSP初始化函数要修改。

串口使用DMA方式时,MSP函数对DMA做了初始化,中断方式的MSP初始化自然不会初始化DMA,所以一调用前面那个函数就hardfault_handler()复位了!!!!

相关推荐
Deacde_ZY23 分钟前
【控制波形如何COPY并无痛使用】
单片机·嵌入式硬件
仰泳之鹅2 小时前
【51单片机中断】
单片机·嵌入式硬件·51单片机
happygrilclh2 小时前
STM32 定时器主从模式配置解析
stm32·单片机·嵌入式硬件
王光环4 小时前
STM32H743IIT6_ADC采集误差分析与ADC_DMA
stm32·单片机
芯眼4 小时前
STM32启动文件详解(重点)
java·开发语言·c++·stm32·单片机·mybatis
长流小哥5 小时前
STM32 ADC+DMA+TIM触发采样实战:避坑指南与源码解析
stm32·单片机·嵌入式硬件·keil5
道亦无名5 小时前
STM32控制电机
stm32·单片机·嵌入式硬件
happygrilclh6 小时前
STM32的ADC模块中,**采样时机(Sampling Time)**和**转换时机(Conversion Time),获取数据的时机详解
stm32·单片机·嵌入式硬件
真的想上岸啊6 小时前
学习51单片机02
嵌入式硬件·学习·51单片机
sword devil9007 小时前
STM32F407VET6实战:CRC校验
stm32·单片机·嵌入式硬件