OpenEdv-开源电子网

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

串口收发数据中断

[复制链接]

9

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2014-9-25
在线时间
23 小时
发表于 2014-11-12 13:46:54 | 显示全部楼层 |阅读模式
5金钱
在串口发送数据的时候,人为的设置先检验收到的第一个数据是否为0xff,如果是,我就将收到的数据发送给电脑,如果不是,说明我这一串数据不对,接下来继续做这样的判断
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志    
USART_RX_BUF[USART_RX_STA] = USART_ReceiveData(USART1); 
      USART_RX_STA++; 
}
if(USART_RX_BUF[0] == 0xff) //

LED0=!LED0;//指示用的
for(t=0;t<USART_RX_STA;t++)
{
USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
}
}
USART_RX_STA=0;

中断程序有什么问题,不能实现我想要的功能啊

最佳答案

查看完整内容[请看2#楼]

这个问题我已经解决了 ,就是我自己在发送数据的时候是8个字节8个字节的处理,谢谢原子哥百忙中来回答我的问题啊!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2014-9-25
在线时间
23 小时
 楼主| 发表于 2014-11-12 13:46:55 | 显示全部楼层
这个问题我已经解决了 ,就是我自己在发送数据的时候是8个字节8个字节的处理,谢谢原子哥百忙中来回答我的问题啊!
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2014-9-1
在线时间
6 小时
发表于 2014-11-12 15:03:28 | 显示全部楼层
试一下下面的代码:
 if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断
{
      USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志    
      USART_RX_BUF[USART_RX_STA] = USART_ReceiveData(USART1); 
      USART_RX_STA++; 
}
if(USART_RX_STA == 你接收数组的大小)
{
   if(USART_RX_BUF[0] == 0xff) //
  { 
       LED0=!LED0;//指示用的
       for(t=0;t<USART_RX_STA;t++)
      {
         USART_SendData(USART1, USART_RX_BUF[t]);//向串口1发送数据
         while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
      }
   }
USART_RX_STA=0;
}>
回复

使用道具 举报

9

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
187
金钱
187
注册时间
2014-9-25
在线时间
23 小时
 楼主| 发表于 2014-11-12 17:41:02 | 显示全部楼层
回复【2楼】BoBo:
---------------------------------
接收到的数组的大小提前不知道,USART_RX_STA == 你接收数组的大小  不是很合适哦!再有就是我调试了的   if(USART_RX_BUF[0] == 0xff)
就是我发同样的数据,数据头是0xff 只能第一次进入这个if的语句里面哦
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-12 22:42:07 | 显示全部楼层
你现在的现象是什么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-29 04:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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