你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 7801|回复: 6

STM32F103 printf /scanf的重定向问题

[复制链接]

2

主题

7

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-7-23 08:35:19 | 显示全部楼层 |阅读模式
 想通过对STM32串口重定向实现在C中的printf /scanf功能,自己在网上也看了许多,但是由于自己薄弱的C基础,对我来说很不容易理解。路过也看到要用到下面两个函数,有高手能直接给我组织一下吗?最好让我打开就能用。
int fputc(int ch, FILE *f)
{
 USART_SendData(USART1, (u8) ch);
  while(!(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == SET))
  {
  }
return ch;
}
 
int fgetc(FILE *f)
{
  while(!(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET))
  {
  }
 return (USART_ReceiveData(USART1));
}
 
回复

使用道具 举报

23

主题

195

回帖

0

蝴蝶豆

初级会员

最后登录
1970-1-1
发表于 2014-7-24 14:39:17 | 显示全部楼层

RE:STM32F103 printf /scanf的重定向问题

循环没加基数吗....
回复 支持 反对

使用道具 举报

24

主题

514

回帖

6

蝴蝶豆

金牌会员

最后登录
2019-4-8
发表于 2014-7-25 22:46:53 | 显示全部楼层

RE:STM32F103 printf /scanf的重定向问题

int fgetc(FILE *f)
{
  while(!(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET))
  {
     
  }
  printf("USART_ReceiveData(USART1)");
}
这样可以吗?
回复 支持 反对

使用道具 举报

2

主题

7

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2014-7-26 08:45:28 | 显示全部楼层

回复:STM32F103 printf /scanf的重定向问题

回复第 3 楼 于2014-07-25 22:46:53发表:
int fgetc(FILE *f)
{
while(!(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET))
{

}
printf("USART_ReceiveData(USART1)");
}
这样可以吗?
我感觉这两个底层函数应该没什么问题,我找到过Printf的重定向
**********************************************************************
#ifdef __GNUC__
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
 
#endif /* __GNUC__ */
PUTCHAR_PROTOTYPE
{
  USART_SendData(USART1, (uint8_t) ch);
 while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
  {}
  return ch;
}
**********************************************************************
这个加上串口配置运行是没问题的。PUTCHAR_PROTOTYPE函数也和我帖子上的那fputc(),尝试着用它的方法也这样搞,但是C语言基础薄弱,组织不出来。
 
 

 
回复 支持 反对

使用道具 举报

2

主题

7

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2014-7-26 08:48:59 | 显示全部楼层

回复:STM32F103 printf /scanf的重定向问题

回复第 2 楼 于2014-07-24 14:39:17发表:
循环没加基数吗....
是循环就是在等串口收发寄存器的空和满的标志位,应该没问题。
 
回复 支持 反对

使用道具 举报

91

主题

4603

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2014-7-29 01:43:10 | 显示全部楼层

RE:STM32F103 printf /scanf的重定向问题

那是不是没有设定转出呢
回复 支持 反对

使用道具 举报

6

主题

462

回帖

0

蝴蝶豆

金牌会员

最后登录
2019-12-28
发表于 2014-7-30 22:30:22 | 显示全部楼层

RE:STM32F103 printf /scanf的重定向问题

这样改应该就行了
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (u8) ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
return ch;
}
int fgetc(FILE *f)
{
  while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE==RESET));
return (USART_ReceiveData(USART1));
}
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版