OpenEdv-开源电子网

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

原子哥为什么我这串口程序不行

[复制链接]

53

主题

324

帖子

0

精华

高级会员

Rank: 4

积分
598
金钱
598
注册时间
2012-6-18
在线时间
7 小时
发表于 2012-7-9 11:43:48 | 显示全部楼层 |阅读模式

我在串口中接受数据格式为   $(0x24)开头
                                       0d 0a结束的数据
可每次只能收到24  能看看为什么吗
void USART1_IRQHandler(void)
{
 u8 res;
 u8 temp;
 u8 temp1;
 u8 temp2;    
 if(USART1->SR&(1<<5))//接收到数据
 { 
  res=USART1->DR;
  if(res==0x24)
  {
   temp=1;
  }
  if(res==0x0d)
  {
   if(temp==1)
   temp1=1;
  }

  if(res==0x0a)
  {
   if(temp1==1)
   temp2=1;
  }

  if(temp==1)
  {
   USART_RX_BUF[USART_RX_STA&0x3F]=res;
   USART_RX_STA++;
   if(temp2==1)
   {
    USART_RX_STA=0x80;
   }
  }
 }             
}

谢谢原子哥啊

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2196
金钱
2196
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-7-9 13:27:38 | 显示全部楼层
1. 首先楼主问问题应该解释清楚目的,实验的操作,和实验的结果,不然没人知道你想问什么
2. 
 u8 res;
 u8 temp;
 u8 temp1;
 u8 temp2;  
看这几个定义都是局部变量,但是看楼主的代码意图又不像是临时的变量。希望楼主巩固一下全局变量,静态变量和局部变量这三个概念和用法。
https://github.com/roxma
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-7-9 13:45:30 | 显示全部楼层
 if(temp2==1)
   {
    USART_RX_STA=0x80;
   }
改为
 if(temp2==1)
   {
    USART_RX_STA|=0x80;
   }
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 14:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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