访问电脑版页面

导航:老古开发网手机版STM32单片机STM32单片机的USART

基于STM32中调试与串口之间的信息传输

导读:
关键字:
Printf,串口,STM32,

问题:在使用STM32调试时,经常使用串口发送信息,为了方便调试与串口发送信息,用printf()函数实现通过串口打印信息。

方法一:

1.添加包含printf()函数的头文件:#include “stdio.h”

2.重写 stdio.h 头文件中的 int fputc(int ch, FILE *f) 函数

int fputc(int ch, FILE *f)

{

while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);

//等待先前的字符发送完成

USART_SendData(USART1, (uint8_t) ch);

//发送字符

return ch;

}

基于STM32中调试与串口之间的信息传输

//示例函数中使用了USART1来发送消息

//实际情况可以根据硬件板来决定使用哪个串口12345678910

注意:使用while循环先等待先前的字符发送完成,避免造成字符串首字符发送丢失的问题。

3.将该函数” int fputc(int ch, FILE *f) “放在main()函数能够调用到的文件中,KEIL-》OpTIons for Target’xxx’-》Target-》Code GeneraTIon,勾选Use MicroLIB

方法二:

//加入以下代码,支持printf函数,而不需要选择use MicroLIB

#if USART_DEBUG

#pragma import(__use_no_semihosTIng)

//标准库需要的支持函数

struct __FILE

{

int handle;

};

FILE __stdout;

//定义_sys_exit()以避免使用半主机模式

_sys_exit(int x)

{

x = x;

}

//重定义fputc函数

int fputc(int ch, FILE *f)

{

while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET)

{}

USART_SendData(USART1,(uint8_t)ch);

return ch;

}

#endif 12345678910111213141516171819202122232425

使用以上任一方法,均可实现printf()函数打印字符串重定义到USART1。

来源:网络整理   作者:工程师飞燕  2018/6/21 7:53:00
栏目: [ STM32单片机的USART]

相关阅读

STM32 USART串口DMA接收和发送模式

如何采用STM32单片机串口接收数据

STM32F407的UART串口初始化

STM32单片机串口通讯故障排除处理过程

STM32f103 双串口配置和中断

STM32F4 USART配置

STM32单片机串口的定义及应用方法

STM32单片机串口波特率的计算方法解析

基于STM32单片机发送字符串的函数

STM32单片机UART发送配置的步骤及方法

STM32单片机重映射USART设计

如何利用STM32单片机串口发送字符串

基于STM32单片机的串口使用解析

如何在STM32串口通信程序中使用printf发送数据

STM32_USART输入输出讲解

什么是串口通信?基于STM32的printf打印输出

基于STM32F4单片机USART寄存器控制的设计

STM32之USART配置

STM32 普通IO口 模拟串口

STM32串口输出乱码的原因