初级会员

- 积分
- 92
- 金钱
- 92
- 注册时间
- 2012-9-25
- 在线时间
- 14 小时
|
5金钱
RT.
初学STM32,看了教材后按照例程实验USART。
我按照串口例程中的USART1的初始化设置复制,设置了USART2初始化,单独控制USART1和USART2输出字符串是可以的,但是,不可以同时工作。
我想是由于我对例程中的“printf函数”设置不对。
请明白的前辈讲一下。
这是“ALIENTEK MiniSTM32 V3.0开发板资料”中的USART.c中的代码
//////////////////////////////////////////////////////////////////
//加入以下代码,支持printf函数,而不需要选择use MicroLIB
#if 1
#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((USART1->SR&0X40)==0);//循环发送,直到发送完毕
USART1->DR = (u8) ch;
//while((USART2->SR&0X40)==0);//循环发送,直到发送完毕
// USART2->DR = (u8) ch;
//以上不太明白,求讲解一下。
return ch;
}
#endif |
最佳答案
查看完整内容[请看2#楼]
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
USART1->DR = (u8) ch;
这里就是串口的发送,和发送完成的检测。
LZ贴的代码屏蔽了USART2
|