中级会员
 
- 积分
- 440
- 金钱
- 440
- 注册时间
- 2015-6-17
- 在线时间
- 136 小时
|
发表于 2016-5-13 13:35:25
|
显示全部楼层
原子哥的所有程序都是没有勾选Use MicroLIB的,你注意一下usart1的源文件就好了,就是下面的代码,如果你勾选Use MicroLIB,下面的代码就要注释一部分,记得是一部分,int fputc(int ch, FILE *f)函数不要注释掉。。。。
//如果使用ucos,则包括下面的头文件即可.
#if SYSTEM_SUPPORT_OS
#include "includes.h" //ucos 使用
#endif
//PA9->RX, PA10->TX
//串口1初始化
//加入以下代码,支持printf函数,而不需要选择use MicroLIB
#if 1
#pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{
int handle;
/* Whatever you require here. If the only file you are using is */
/* standard output using printf() for debugging, no file handling */
/* is required. */
};
/* FILE is typedef’ d in stdio.h. */
FILE __stdout;
//定义_sys_exit()以避免使用半主机模式
_sys_exit(int x)
{
x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
USART1->DR = (u8) ch;
return ch;
}
#endif |
|