您的位置 首页 IC

根据STM32中调试与串口之间的信息传输

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

问题:在运用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;

}

 

//示例函数中运用了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。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/347516.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部