单片机型号:STM32L053R8T6
本文介绍使用printf向串口输出数据的方法,具体如下:
1、根据原理图确认使用哪路串口进行printf输出,并在config.h文件予以声明,程序如下:
/**
配置调试信息
*/
#define DEBUG_UART 2 //指定调试端口号
2、建立该串口类,从CMiniUART继承,初始化该串口,程序如下:
#ifndef UART_COMMUNICATION_H_
#define UART_COMMUNICATION_H_
#include "mini_uart.h"
#ifdef __cplusplus
extern "C"{
class CUartCommunication:public CMiniUART
{
public:
CUartCommunication(void);
};
}
#endif
#endif
#include "include.h"
CUartCommunication::CUartCommunication(void):CMiniUART(2, 9600, 0) {}
3、包含相应头文件,并在HAL.h中声明相应的成员变量。
#ifndef HAL_INCLUDE_H_
#define HAL_INCLUDE_H_
#include "uart_communication.h"
#include "hal.h"
#endif
class CHAL
{
public:
CUartCommunication UartCommunication;
CLed Led;
};
4、如果希望接收数据,还需在定时器中断和串口中断中,加入相应的处理函数,程序如下:
void CommonTimer_InterruptFunction(void)
{
static uint16_t count = 0;
if (count >= 1000)
{
count = 0;
Target.bMilliSecond_1000 = true;
}
else
{
count++;
}
if (count % 100 == 0)
{
Target.bMilliSecond_100 = true;
}
if (count % 10 == 0)
{
Target.bMilliSecond_10 = true;
}
Target.HAL.UartCommunication.TimerInterruptFunction();
}
void UART2_InterruptFunction(void)
{
Target.HAL.UartCommunication.UARTInterruptFunction();
}
5、完成上述程序后,就可以调用printf函数了,样例程序如下:
while(1)
{
Target.HAL.Led.Turn();
DebugOutput("Hello worldn");
Target.Delayms(1000);
#if IWDG_MODE != 0
Target.Iwdg.Refresh();
#endif
}
6、查看效果
上一篇:STM32开发笔记87: SX1268驱动程序设计(设置为STDBY模式)
下一篇:STM32开发笔记85: SX1268驱动程序设计(芯片唤醒)
推荐阅读最新更新时间:2024-10-22 15:19
设计资源 培训 开发板 精华推荐
- 用于电容器充电器的 LT8410 升压转换器的典型应用电路
- LTC3417A-2 的典型应用 - 双路同步 1.5A/1A 4MHz 降压型 DC/DC 稳压器
- LT8611 的典型应用 - 具有电流检测和 2.5 uA 静态电流的 42V、2.5A 同步降压型稳压器
- 【训练营】dogdogdog
- DC1669B,基于 LTM4627EV 的演示板,15A 降压稳压器
- MPC5748G安全以太网网关参考设计
- 使用 LTC3459 和 LTC1844 的基于 SuperCap 的备用电源
- LT6656ACS6-2.048、2.048V 微控制器电压基准和稳压器的典型应用
- LT1777,具有成本效益的电源从 10V28V 输入产生 5V
- TS39100C 1A超低压差稳压器典型应用电路