在stm32单片机上实现串口打印

本文详细介绍了如何在正点原子阿波罗开发板上,通过CubeMX配置并利用KeilIDE进行串口调试,包括启用USART2、修改stdio函数、重写printf和getc函数以及检查驱动安装。
摘要由CSDN通过智能技术生成

串口调试是我们在开发单片机系统时常用的一种手段,我们可以通过重写stdio函数库中的printf函数实现这一点。

这次我使用CubeMX进行配置,编程IDE用的是keil,开发板是正点原子阿波罗。示例如下:

1.开启usart2

204fa59f925a4bf38f5a08f0a0fba208.png

这里记得要注意对应的引脚。

2.在project manger中生成keil工程

3.编辑工程

①把Target选项卡里的Use MircoLIB选项勾上

0b0ab2cfc1024a97a107bb053ea66fae.png

②引用stdio头文件

/* USER CODE BEGIN Includes */
#include <stdio.h>
#include "LED.h"
/* USER CODE END Includes */

LED是笔者为了配合调试写了个点灯的程序,不必理会。

④利用串口transmit重写printf函数

/* USER CODE BEGIN 4 */
int fputc(int ch, FILE* f)
{
    HAL_UART_Transmit(&huart2, (uint8_t*)&ch, 1, HAL_MAX_DELAY);
    return ch;
}

int fgetc(FILE* f)
{
    uint8_t ch;
    HAL_UART_Receive(&huart2, (uint8_t*)&ch, 1, HAL_MAX_DELAY);
    return ch;
}
/* USER CODE END 4 */

⑤在while循环附近写调试代码

  while (1)
  {
		LED0_OFF;
		printf("LED0_OFF!\r\n");
		HAL_Delay(500);
		LED0_ON;
		printf("LED0_ON!\r\n");
		
		HAL_Delay(50);
		
		LED1_OFF;
		printf("LED1_OFF!\r\n");
		HAL_Delay(500);
		LED1_ON;
		printf("LED1_ON!\r\n");
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

⑥烧录程序再找个串口助手

a3c76b623a104f00b326ee1729867e72.png 大概就是这样了,如果有其他问题就检查一下串口号对不对,然后打开设备管理器看看USB转串口CH340驱动装没装。

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值