OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2554|回复: 3

串口的发送与接收问题

[复制链接]

9

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2015-3-2
在线时间
36 小时
发表于 2015-12-4 23:10:39 | 显示全部楼层 |阅读模式
5金钱
这是串口中断服务函数  res为接收数据的变量,flag为标志位
void USART1_IRQHandler(void)
{

if(USART1->SR&(1<<5)) 
{  
    res=USART1->DR;  
   flag=1;
}

}

然后main函数里程序为
int main(void)
{  
 u16 t;
u16 len;
Stm32_Clock_Init(9); 
delay_init(72);      
  LED_Init();             
uart_init(72,9600);
  while(1)
{
if(flag)
{   
    USART1->DR=res;
    while((USART1->SR&0X40)==0);
   flag=0;
}
else
{
GPIOB->ODR&=0xffdf;   
GPIOE->ODR|=1<<5;    
delay_ms(300);
GPIOB->BSRR=0x0020;
GPIOE->BRR=0x0020; 
delay_ms(300);    
}
}  

但是在接收数据时,并没有把数据发回电脑。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-12-6 00:53:16 | 显示全部楼层
回复

使用道具 举报

81

主题

270

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
452
金钱
452
注册时间
2014-8-11
在线时间
87 小时
发表于 2015-12-6 02:38:08 | 显示全部楼层
你先用led指示一下是否接收到数据了
我是一只菜鸟,但我会大鹏展翅
回复

使用道具 举报

9

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2015-3-2
在线时间
36 小时
 楼主| 发表于 2015-12-6 19:52:03 | 显示全部楼层
void USART1_IRQHandler(void)
{

if(USART1->SR&(1<<5)) 
{  
   res=USART1->DR; 
   printf("aaaa"); 
   flag=1;
}

}
加了一个printf函数,当发送一个字母w时,电脑显示端会出现aaaa,紧接着出现w,但是将printf函数注释掉时,再发送,就什么也没有了。这是不是单片机的速度比较快,数据丢失了啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 01:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表