初级会员

- 积分
- 125
- 金钱
- 125
- 注册时间
- 2018-6-22
- 在线时间
- 21 小时
|
10金钱
# include <usart.h>
# include <delay.h>
# include <sys.h>
u16 res;
int main (void)
{
uart_init (115200);
while (USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==RESET) ;
res=USART_ReceiveData(USART1);
USART_SendData(USART1, res);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
}
这个为什么定义为u16 res却只能输出一个字符?而原子哥的教程上是u8 Res;却可以输出那么多字
# include <usart.h>
# include <delay.h>
# include <sys.h>
u16 res;
int main (void)
{
while (1)
{
uart_init (115200);
while (USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==RESET);
res=USART_ReceiveData(USART1);
USART_SendData(USART1, res);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
}
}
这个程序在外部加了while(1)循环,这和上一个不加的有什么区别吗,我加了循环后原来只可以输出12而现在可以输出123这是为什么啊
|
最佳答案
查看完整内容[请看2#楼]
加while就是重复收发的动作, 不加就只做一次, 而且你要在main函数的最后面加个while(1);不让它退出, 规则会跑飞
要是加while, 要把 uart_init (115200); while前面,
uart_init (115200);
while (1)
{
USART是可以设置为多于8bit, 所以函数的返回值是u16, 读回来后你只用8位就行了
|