一. 改写函数
新建一个头文件 debug_com.h
#ifndef __DEBUG_COM_H
#define __DEBUG_COM_H
#ifdef __cplusplus
extern "C" {
#endif
#include "stdio.h"
#include "usart.h"
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
#ifdef __cplusplus
}
#endif
#endif
在使用 printf 的时候,其实最终也是调用 fputc 函数进行打印,因此我们可以通过添加以下代码来达成我们的目的:
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
注意: huart1 可以根据你使用的串口进行修改
之后将该头文件放到一个文件夹(比如 debug_com )里面,再放到项目目录下
再包含该头文件,如下图所示
之后在项目中使用 #include "debug_com.h" 就可以使用 printf 了
二. printf 使用实例
打印串口1中所用到的寄存器的首地址
//包含头文件
#include "debug_com.h"
//主函数中添加
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
printf("huart1.Instance->SR %prn",&huart1.Instance->SR);
printf("huart1.Instance->DR %prn",&huart1.Instance->DR);
printf("huart1.Instance->BRR %prn",&huart1.Instance->BRR);
printf("huart1.Instance->CR1 %prn",&huart1.Instance->CR1);
printf("huart1.Instance->CR2 %prn",&huart1.Instance->CR2);
printf("huart1.Instance->CR3 %prn",&huart1.Instance->CR3);
printf("huart1.Instance->CTPR %prn",&huart1.Instance->GTPR);
HAL_Delay(1000);
printf("rn");
}
这样,我们就可以在调试助手上看到寄存器的地址值了
上一篇:STM32CubeMX之串口使用(中断方式)
下一篇:STM32CubeMx之资源(线程,队列,内存池)管理
推荐阅读最新更新时间:2024-11-07 10:36
设计资源 培训 开发板 精华推荐
- LTM4643MPY 4V 至 20V 输入、四路 1V、1.5V、2.5V 和 3.3V 输出以及比例跟踪降压稳压器的典型应用
- SPV2021-LQPF64核心板
- LTC3526BEDC 2 节电池至 3.3V 升压转换器的典型应用电路
- LTC1589 的典型应用 - 具有可编程输出范围的 14 位 SoftSpan DAC
- 带SoC配置的BGM13P Blue Gecko蓝牙模块的典型应用
- esp8266电子钟
- 具有 10V 栅极驱动器的 LTC3892EUH 高效率、双路 5V/12V 输出同步降压转换器的典型应用电路
- STEVAL-IHM039V1,采用 STM32F415 微控制器的双电机控制演示板
- 自行车车尾灯
- AM2S-0512SH30Z 12V 2瓦直流转直流转换器的典型应用