各位大侠来救救我吧,stm32中 printf重定向出错了

zqcwhy 2016-04-28 10:54:32
include<stm32f10x.h>
#include<stdio.h>

void RCC_Configuration(void); //被调用函数声明
void GPIO_Configuration(void);
void USART_InitConfiguration(void); //串口初始化
int fputc(int ch,FILE* f); //输出重定向函数

//.........输出重定向函数.........
int fputc(int ch,FILE *f)
(
/*ch送给USART1 */
USART_SendData(USART1,(uint8_t) ch); //发送一个数据
/*等待发送结束*/
while( USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
//返回ch
return (ch);
)


int main()
{
uint8_t i,data;
RCC_Configuration();
GPIO_Configuration();
USART_InitConfiguration(); //进行USART1串口初始化,
//fputc(int ch,FILE*f);
//下面进行发送数据
data='A';
for(i=0;i<8;i++)
{
USART_SendData(USART1, data); //发送一个数据
//FlagStatus Status;
data++;
while( USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET); //等待一个数据发送完成

}
printf("handsome man");

}

//...........................................................................

void RCC_Configuration(void)
{
;
}

void GPIO_Configuration(void)
{
;
}

//串口初始化函数
void USART_InitConfiguration(void)
{
USART_InitTypeDef USART_InitStructure; // 注意库里已经定义了这个结构体,声明一个结构体变量 USART_InitStructure
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No; //有无奇偶校验,设为无
USART_InitStructure.USART_HardwareFlowControl =USART_HardwareFlowControl_None; //硬件流控制,无
USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx; //发送或者接受使能
//USART_InitStructure.USART_Clock = USART_Clock_Disable; //同步模式下需要配置下面四项,异步模式不需要
// USART_InitStructure.USART_CPOL = USART_CPOL_High;
// USART_InitStructure.USART_CPHA = USART_CPHA_1Edge;
// USART_InitStructure.USART_LastBit = USART_LastBit_Enable;
USART_Init(USART1, &USART_InitStructure); //调用库中的串口初始化函数,初始化这个结构体
//进行 USART_CR1中 UE的设定,UE位控制整个USART的使能与否,调用此库函数作用就是使能串口1
USART_Cmd(USART1, ENABLE);
}


为什么加上 int fputc(int ch,FILE *f)函数,编译就出错了呢
compiling main.c...
User\main.c(53): error: #757: function "USART_SendData" is not a type name
User\main.c: USART_SendData(USART1,(uint8_t) ch); //发送一个数据
User\main.c: ^
User\main.c(53): error: #79: expected a type specifier
User\main.c: USART_SendData(USART1,(uint8_t) ch); //发送一个数据
User\main.c: ^
User\main.c(53): error: #90: function returning function is not allowed
User\main.c: USART_SendData(USART1,(uint8_t) ch); //发送一个数据
User\main.c: ^
User\main.c(53): error: #18: expected a ")"
User\main.c: USART_SendData(USART1,(uint8_t) ch); //发送一个数据
User\main.c: ^
User\main.c(53): error: #79: expected a type specifier
User\main.c: USART_SendData(USART1,(uint8_t) ch); //发送一个数据
User\main.c: ^
User\main.c(53): error: #90: function returning function is not allowed
User\main.c: USART_SendData(USART1,(uint8_t) ch); //发送一个数据
User\main.c: ^
User\main.c(55): error: #169: expected a declaration
User\main.c: while( USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
User\main.c: ^
User\main.c(57): error: #169: expected a declaration
User\main.c: return (ch);
User\main.c: ^
User\main.c(58): error: #169: expected a declaration
User\main.c: )
User\main.c: ^
User\main.c(112): warning: #1-D: last line of file ends without a newline
User\main.c: }
...全文
1377 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
天腾瑞 2016-06-23
  • 打赏
  • 举报
回复
是不是USART的库文件没有被引用
niepangu 2016-06-21
  • 打赏
  • 举报
回复
我用的IAR 没出现问题,网上的例子很多 库文件也有例子,研究一下吧
zhujinqiang 2016-06-19
  • 打赏
  • 举报
回复
printf重定向 解决了没有?
niepangu 2016-05-17
  • 打赏
  • 举报
回复
要养成看例程的习惯,3,5的库里都有,自己看看就知道你了。
e1ki0lp 2016-05-15
  • 打赏
  • 举报
回复
另外需要在keil里设置一下,楼主自行百度:MicroLIB
e1ki0lp 2016-05-15
  • 打赏
  • 举报
回复
官方的固件库里有例程,在 STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\USART\Printf
追梦的魂影 2016-05-02
  • 打赏
  • 举报
回复
把这一块代码删了,重新敲一遍,建议使用notpad++来编辑
zqcwhy 2016-04-28
  • 打赏
  • 举报
回复
本人菜鸟一个,用的是keil4环境, stm固件库是3.5.0,期待各位大侠出手相助
你想当“李逍遥”式的“大侠”吗? 这里无需计算机基础,无需编程经验,你也不必是计算机专业的在校大学生....只要爱好游戏,怀揣梦想! 有一定自主学习能力,跟着刘老师从“编程小白”修炼为游戏研发“大虾”吧!!!学习好Unity,其先决条件是一定要有稳固、扎实的编程基础!课程 《C# For Unity系列之入门篇》配套学习资料链接:http://pan.baidu.com/s/1gflxreN 密码:sou5;刘老师讲Unity学员群(2) 497429806一、热更新系列(技术含量:高级):A:《lua热更新技术级篇》https://edu.csdn.net/course/detail/27087B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架()》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136二:框架设计系列(技术含量:级): A:《游戏UI界面框架设计系列视频课程》https://edu.csdn.net/course/detail/27142B:《Unity客户端框架设计PureMVC篇视频课程(上)》https://edu.csdn.net/course/detail/27172C:《Unity客户端框架设计PureMVC篇视频课程(下)》https://edu.csdn.net/course/detail/27173D:《AssetBundle框架设计_框架篇视频课程》https://edu.csdn.net/course/detail/27169三、Unity脚本从入门到精通(技术含量:初级)A:《C# For Unity系列之入门篇》https://edu.csdn.net/course/detail/4560B:《C# For Unity系列之基础篇》https://edu.csdn.net/course/detail/4595C: 《C# For Unity系列之级篇》https://edu.csdn.net/course/detail/24422D:《C# For Unity系列之进阶篇》https://edu.csdn.net/course/detail/24465四、虚拟现实(VR)与增强现实(AR):(技术含量:初级)A:《虚拟现实之汽车仿真模拟系统 》https://edu.csdn.net/course/detail/26618五、Unity基础课程系列(技术含量:初级) A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》 https://edu.csdn.net/course/detail/24643B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》https://edu.csdn.net/course/detail/24645 C:《Unity ECS(二) 小试牛刀》https://edu.csdn.net/course/detail/27096六、Unity ARPG课程(技术含量:初级):A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.csdn.net/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(部)》https://edu.csdn.net/course/detail/24968C:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.csdn.net/course/detail/24979

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧