OpenEdv-开源电子网

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

485例程中存在的不理解

[复制链接]

14

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2018-8-17
在线时间
34 小时
发表于 2018-12-8 12:21:16 | 显示全部楼层 |阅读模式
while(1)
{
  key=KEY_Scan(0);
  if(key==KEY0_PRES)//KEY0按下,发送一次数据
  {
   for(i=0;i<5;i++)
   {
    rs485buf=cnt+i;//填充发送缓冲区
    LCD_ShowxNum(30+i*32,190,rs485buf,3,16,0X80); //显示数据
    }
   RS485_Send_Data(rs485buf,5);//发送5个字节            
  }   
  RS485_Receive_Data(rs485buf,&key);
  if(key)//接收到有数据
  {
   if(key>5)key=5;//最大是5个数据.
    for(i=0;i<key;i++)LCD_ShowxNum(30+i*32,230,rs485buf,3,16,0X80); //显示数据
   }
  t++;
  delay_ms(10);
  if(t==20)
  {
   LED0=!LED0;//提示系统正在运行
   t=0;
   cnt++;
   LCD_ShowxNum(30+48,150,cnt,3,16,0X80); //显示数据
  }     
}
}
1.KEY_Scan(0)只能返回1或0,为什么要把它赋给key
key==KEY0_PRES赋给key应该是判断是否按下吧
2.rs485buf=
cnt+i;

LCD_ShowxNum(30+i*32,190,rs485buf,3,16,0X80);

因为cnt为0,那显示的数据不就是0,1,2,3,4了吗

3.  RS485_Receive_Data(rs485buf,
&key
);为啥取的是key的地址,不是存有数据的rs485buf

4.  t++;这个t是干啥的

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

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-12-8 15:13:40 | 显示全部楼层

回帖奖励 +5 金钱

本帖最后由 peng1554 于 2018-12-8 18:02 编辑

1.KEY_Scan()返回0,1,2,3,4
2.对
3.//RS485查询接收到的数据
//buf:接收缓存首地址
//len:读到的数据长度
void RS485_Receive_Data(u8 *buf,u8 *len)
{
        u8 rxlen=RS485_RX_CNT;
        u8 i=0;
        *len=0;                                //默认为0
        delay_ms(10);                //等待10ms,连续超过10ms没有接收到一个数据,则认为接收结束
        if(rxlen==RS485_RX_CNT&&rxlen)//接收到了数据,且接收完成了
        {
                for(i=0;i<rxlen;i++)
                {
                        buf=RS485_RX_BUF;        
                }               
                *len=RS485_RX_CNT;        //记录本次数据长度
                RS485_RX_CNT=0;                //清零
        }
}
当执行完RS485_Receive_Data(rs485buf,&key);后
key保存了接收数据的字节大小
特别注意*len=RS485_RX_CNT;        //记录本次数据长度
另外
RS485_RX_CNT在串口中断中变化~~


回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-12-17
在线时间
5 小时
发表于 2018-12-20 11:52:11 | 显示全部楼层
能不能发个给我呀,我没找到例子,我是探索版的
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2018-12-16
在线时间
6 小时
发表于 2018-12-20 14:31:26 | 显示全部楼层
kkkukujiajia 发表于 2018-12-20 11:52
能不能发个给我呀,我没找到例子,我是探索版的

在A盘--4,程序源码--1,标准例程-寄存器版本.rar
这个压缩包里的  “实验24 485实验”
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-12-17
在线时间
5 小时
发表于 2019-1-5 15:46:51 | 显示全部楼层
熊猫叔叔 发表于 2018-12-20 14:31
在A盘--4,程序源码--1,标准例程-寄存器版本.rar
这个压缩包里的  “实验24 485实验”

找到了 ,加上无线模块之后,实现了电脑发送数字,带动灯亮几次
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 02:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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