STM32开发笔记86:使用printf向串口输出数据

发布者:科技徜徉最新更新时间:2020-03-06 来源: eefocus关键字:STM32  printf  串口  输出数据 手机看文章 扫描二维码
随时随地手机看文章

单片机型号: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  printf  串口  输出数据 引用地址:STM32开发笔记86:使用printf向串口输出数据

上一篇:STM32开发笔记87: SX1268驱动程序设计(设置为STDBY模式)
下一篇:STM32开发笔记85: SX1268驱动程序设计(芯片唤醒)

推荐阅读最新更新时间:2024-10-22 15:19

基于STM32printf串口数据输出
该方法适用于STM32,实现了使用printf等标准C流函数输出数据的办法,极大的减少了输出串口数据时所需要做的数据处理。 实现原理 在C库中,printf()等输出流函数都是通过fputc()这个函数实现的,所以我们通过重映射的方式,修改这个函数的定义使它输出在STM32的寄存器中,便可以实现使用printf()函数在STM32串口上输出数据的功能。 Keil环境 重映射 在STM32的Keil开发环境中,C的库函数有两种实现方式 使用标准的C函数库 就是我们平常在PC Window平台上用的C库函数,此库的的优点在于实现的功能全面。但是由于这个库基本上是专为PC设计的,故而如果在嵌入式芯片中调用时将会使得工程文件变
[单片机]
基于<font color='red'>STM32</font>的<font color='red'>printf</font><font color='red'>串口</font><font color='red'>数据</font><font color='red'>输出</font>
STM32开发笔记86:使用printf串口输出数据
单片机型号: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 CUart
[单片机]
<font color='red'>STM32</font>开发笔记86:使用<font color='red'>printf</font>向<font color='red'>串口</font><font color='red'>输出</font><font color='red'>数据</font>
什么是串口通信?基于STM32printf打印输出
  前言:平时我们进行c语言编程的时候会经常用到printf函数进行打印输出,来调试代码。可是这个printf函数C库已经帮我们实现好了,通常只需要直接调用即可,但是如果在一个新的开发平台,如果库没有帮我们实现好,比如STM32开发板,那么我们怎么实现printf打印输出呢?   首先我们来了解一下串口通信!   1、什么是串口通信?   串口通信(Serial Communication),是指外设和计算机间,通过数据信号线、地线等,按位进行传输数据的一种通讯方式。   串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。   2、串口通信协议   在串口通信中,常用的协议包括RS-232、R
[单片机]
什么是<font color='red'>串口</font>通信?基于<font color='red'>STM32</font>的<font color='red'>printf</font>打印<font color='red'>输出</font>
基于STM32从零写操作系统系列---将printf指向串口输出
为什么需要printf? 首先,这个printf不是标准C中的printf,这个printf是自己参考标准库实现的。只是简单地完成了打印输出int,long long int, unsigned int, unsigned long long int, float, double和十六进制数等功能。主要用于在以后的学习中,输出变量、寄存器等的数据,便于调试程序。 1.函数调用中的参数传递 根据《Procedure Call Standard for the ARM ® Architecture》(文章结尾有下载分享)这个文档可知,标准规定在寄存器(r0-r3)和堆栈中传递参数。对于采用少量参数的子程序,仅使用寄存器,大大减少了
[单片机]
基于<font color='red'>STM32</font>从零写操作系统系列---将<font color='red'>printf</font>指向<font color='red'>串口</font><font color='red'>输出</font>
stm32 keil实现串口printf输出中文字符
添加如下代码,可以GNUC的方式实现 #ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker- Libraries- Small printf set to 'Yes') calls __io_putchar() */ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif /* __GNUC__ */ int main() { whil
[单片机]
关于STM32串口printf输出调试信息问题
1,遇到的问题(使用HAL库) 在STM32使用过程中,我们程序调试时一般都会用到printf重定向串口输出调试信息来进行程序开发调试,从网上我们找到了重定向的代码部分加入到串口代码文件中,如下: UART_HandleTypeDef husart_printf; #ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker- Libraries- Small printf set to 'Yes') calls __io_putchar() */ #define PUTCHAR_PROTOTYPE int __io_
[单片机]
STM32输出调试信息-printf重定向到串口
在STM32调试过程中常常需要将调试信息输出到串口,然后通过串口助手查看输出的调试信息。一般来说,串口输出的是指定长度的十六进制字节,对于想打印的调试信息来 说,略显灵活性不足。这时候如果可以将printf重定向到串口输出,则能很好的解决这个问题。 关于printf重定向的方法有很多种,这里只讨论一种我认为相对简单实用的方法。其主要方法步骤如下: 1、配置STM32的串口,确保STM32能输出数据到串口调试助手。 void USART5_Init(void) { USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure;
[单片机]
IAR +STM32实现printf()输出串口
  搜索互联网上,关于此类问题的解决文章资料也比较丰富,不过按照其思路还是遇到了不少问题。   首先,贴代码,大部分代码都是类似的方案,重写putchar或者fputc函数。 #ifdef USE_IAR #define PUTCHAR_PROTOTYPE int putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch,FILE *f) #endif PUTCHAR_PROTOTYPE{ HAL_UART_Transmit(&huart1, (char *)(&(ch)), 1, 10); return ch
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved