一般来讲配置好串口后,输入以下代码,在while(1)中输入printf("XX\r\n");运行后就可以打印XX:

int fputc(int ch, FILE *f)
{
    HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 2);//huart1需要根据你的配置修改
    return ch;    
}

但是我的HAL运行不可以,串口助手没有任何反应。,尝试以下代码添加到stm32f4xx_hal.c中,重定向printf

#include "stdio.h"// 这个头文件需要在使用到printf的地方调用
#if SYSTEM_SUPPORT_OS
#include "includes.h"                      
#endif

#if 1
#pragma import(__use_no_semihosting)             
               
struct __FILE 
{ 
    int handle; 
}; 

FILE __stdout;       

void _sys_exit(int x) 
{ 
    x = x; 
} 

int fputc(int ch, FILE *f)
{     
    while((USART1->SR&0X40)==0);
    USART1->DR = (uint8_t) ch;      
    return ch;
}
#endif

主函数部分

发送信息
  while (1)
  {
    /* USER CODE END WHILE */
            printf("XX\r\n");
            HAL_Delay(1000);
    /* USER CODE BEGIN 3 */
      }

实验结果可以正常运行。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐