您好,欢迎来到六九路网。
搜索
您的当前位置:首页STM32Cubemx+STM32F405+串口printf打印无效及串口疑难杂症

STM32Cubemx+STM32F405+串口printf打印无效及串口疑难杂症

来源:六九路网

前言:串口配置很简单,此文章只更新无法打印解决方案及疑难杂症。

一、无法进入中断

添加开启接收中断函数


  /* USER CODE BEGIN 2 */
	//开启接收中断
	//1:单字节接收即产生中断	&aRxBuffer:缓冲区
	HAL_UART_Receive_IT(&huart3, (uint8_t *)&aRxBuffer, 1);
	//Uart3_RxBuff:buff长度多字节接收才产生中断  Uart3_RxBuff为接收缓冲区
	//HAL_UART_Receive_IT(&huart3, Uart3_RxBuff, sizeof(Uart3_RxBuff));
  /* USER CODE END 2 */

二、printf死机

此处需勾选

下方贴上重定向代码

/**
  * 函数功能: 重定向c库函数printf到DEBUG_USARTx
  * 输入参数: 无
  * 返 回 值: 无
  * 说    明:无
  */
int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, 0x00ff);
  return ch;
}
// HAL_UART_Transmit 是同步函数,会阻塞直到数据发送完毕。
//HAL_UART_Transmit_IT 是异步函数,会立即返回,数据发送完成后会触发中断回调函数
/**
  * 函数功能: 重定向c库函数getchar,scanf到DEBUG_USARTx
  * 输入参数: 无
  * 返 回 值: 无
  * 说    明:无
  */
int fgetc(FILE *f)
{
  uint8_t ch = 0;
  HAL_UART_Receive(&huart3, &ch, 1, 0xffff);
  return ch;
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务