CubeMX stm32MP157串口中断配置踩坑总结

一、RCC初始化卡死

原因:由于时间太短没有延时就开始检测标志位HAL_OK是否被置位。故进入了Error_Handler(); 但是这里面啥都没有还有个死循环故当标志位检测不到时卡进死循环。

解决方法

  1. 注释 Error_Handler();
      if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
      {
        //Error_Handler();
      }
  2. 循环执行初始化,直道初始化成功
      if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
      {
        while(1){if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) break;}
      }
    

二、CubeMX HSE晶振配置出错

stm32MP157固定为24Mhz,如果在CubeMX 时钟树中修改为其他数值,在串口输出时则会出现乱码。

三、HAL库实现接收中断逻辑

//1.使能串口全局中断
HAL_NVIC_EnableIRQ(UART4_IRQn); 

/*2.使能接收中断
HAL_UART_Receive_IT函数是用户自定义一个缓冲区(即参数pData),
接受一定数量(由参数Size决定)的字符存入缓冲区中。同时,
参数Size还决定着进入回调函数的频率,即每接收Size个字符,
就进入一次回调函数。需要注意的是,Size只决定进入回调函数的频率,
而不能影响进入接收中断的频率,无论Size是多少,每接收完成一个字符
都会进入一次接收中断。*/
HAL_UART_Receive_IT(&huart4, pData, Size); 

/*3.触发串口中断
当发生中断时,会进入void UART4_IRQHandler(void)函数*/
void UART4_IRQHandler(void) //弱定义 一般定义在it.c文件

/*4.触发中断识别函数(识别属于哪种中断)
UART4_IRQHandler会调用HAL_UART_IRQHandler(&huart4);函数
识别到属于接受中断*/
HAL_UART_IRQHandler(&huart4)

/*5.调用接受中断函数*/
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

/*6.触发接受中断回调函数
HAL_UART_Receive_IT函数会根据设定的Size大小从而调用HAL_UART_RxCpltCallback函数
在HAL_UART_RxCpltCallback函数里面我们可以实现串口接收数据处理,如数据回显*/
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *uartHandle) //弱定义

四、HAL库实现发送中断逻辑

对HAL_UART_Transmit_IT函数函数的理解:

用于启用串口发送中断。当发送完成时,HAL_UART_TxCpltCallback回调函数将被调用,可以在这里添加你的自定义逻辑。

// 初始化串口
MX_USART2_UART_Init();

// 启用串口发送中断
HAL_UART_Transmit_IT(&huart2, (uint8_t *)"Hello, World!\r\n", 15);

// 串口发送中断回调函数
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
    if (huart->Instance == USART2)
    {
        // 串口2的发送中断回调
        // 在这里添加你的逻辑
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值