串口调试是我们在开发单片机系统时常用的一种手段,我们可以通过重写stdio函数库中的printf函数实现这一点。
这次我使用CubeMX进行配置,编程IDE用的是keil,开发板是正点原子阿波罗。示例如下:
1.开启usart2
这里记得要注意对应的引脚。
2.在project manger中生成keil工程
3.编辑工程
①把Target选项卡里的Use MircoLIB选项勾上
②引用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 */
⑥烧录程序再找个串口助手
大概就是这样了,如果有其他问题就检查一下串口号对不对,然后打开设备管理器看看USB转串口CH340驱动装没装。