访问手机版页面
你的位置:老古开发网 > STM32单片机 > STM32单片机的USART > 正文  
基于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。

标签:Printf,串口,STM32,
来源:网络整理 作者:工程师飞燕 时间:2018/6/21 7:53:00
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐