历史上的今天
今天是:2025年03月06日(星期四)
2020年03月06日 | STM32开发笔记86:使用printf向串口输出数据
2020-03-06 来源:eefocus
单片机型号: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、查看效果
史海拾趣
|
IMSResearch最近发布了一份名为《中国安防产业IP趋势》的研究,目的是希望了解IP相关技术如何在安防领域应用以及发展前景等问题。该研究针对中国本土提供电子物理安防产品的系统集成商和工程商,根据他们对IP安防产品的经验,对市场进行了分析。这 ...… 查看全部问答> |
|
如题,急需Tornado 2.2.1 for PowerPC,请问什么途径可以得到?欢迎来电13971652738,王先生。… 查看全部问答> |
|
winpcap在evc下怎么使用? D:\\PROGRAM FILES\\INCLUDE\\packet32.h(53): Could not find the file airpcap.h. D:\\PROGRAM FILES\\INCLUDE\\packet32.h(62): Could not find the file dagc.h. 有这样的提示。。。找不到系统的头文件 可有谁在E ...… 查看全部问答> |
|
各位大虾: 目前正在搞WinCE下LCD驱动, 在一个现有模板的基础上,进行了简单的修改。 引脚配置 跟 LCD控制器部分的设置应该是没有什么问题的。也将屏幕的一些配置参数进行了修改,原来的是320*240,现在我用的是800 ...… 查看全部问答> |
|
我在程序中 { ...... malloc 400K字节的缓冲区 ...... free ~ } 请问如果频繁的反复以上操作会导致异常或者死机吗 我的程序 疯狂进行30次会出现异常 不知道是不是这个原因引起的… 查看全部问答> |
|
driver中调用MmAllocateNonCachedMemory向系统申请1MB空间,请问各位,怎么才能验证,申请到的空间是连续的? 我在driverentry中直接调用的MmAllocateNonCachedMemory函数,想要申请1MB空间,但不知道怎么用最简单的方式,得知空间是否连续?我是想申请1MB连续空间. … 查看全部问答> |
|
最近找工作,请问大家“IC封装测试”是干什么的呢? 主要是以下几个问题,谢谢了哈 1.工作的主要内容是什么的呢? 2.工作的前景如何,以后发展方向主要是怎样的呢? 3.行业的待遇具体怎么样呢? … 查看全部问答> |
|
请教一个关于ATmega64串口和LCD显示的问题。。。。急!!! 芯片是ATmega64,LCD(12864)接PD口,串口通信用的PE口(usart0 RXD0 TXD0)。。。单独调试串口通信,LCD显示完全正常。。。只是要把两个程序合在一起时LCD显示就出问题,原本可以显示出的字符现实不出来。串口通讯没有问题。观察板子上的发光二极 ...… 查看全部问答> |




