首页 新闻 搜索 专区 学院

请问一下,程序里的tmp_buf[5]={0,0,0,0,0}是什么意思

0
[已解决问题] 解决于 2017-04-20 16:12
  1 #include "sys.h"
  2 #include "usart.h"        
  3 #include "delay.h"    
  4 #include "led.h" 
  5 #include "key.h"   
  6 #include "24l01.h"
  7                                                            
  8 int main(void)
  9 {                 
 10     u8 tmp_buf[5]={0,0,0,0,0};
 11   Stm32_Clock_Init(9);//系统时钟设置
 12     delay_init(72);        //延时初始化
 13     uart_init(72,9600); //串口1初始化                  
 14     KEY_Init();         //按键初始化
 15     LED_Init();         //LED初始化
 16     NRF24L01_Init();    //初始化NRF24L01              
 17     while(NRF24L01_Check())//检测不到24L01
 18     {
 19         LED1=0;
 20         delay_ms(300);
 21         LED1=1;
 22         delay_ms(300);
 23     }
 24     TX_Mode();   //设置为发送模式
 25     delay_ms(10);
 26     while(1)
 27     {
 28         tmp_buf[1]=0x00;
 29         if(KEY0==0)
 30             tmp_buf[1]=0x01;
 31         else if(KEY1==0)
 32             tmp_buf[1]=0x02;
 33         else if(KEY2==0)
 34             tmp_buf[1]=0x03;
 35         else if(KEY3==0)
 36             tmp_buf[1]=0x04;
 37         else if(KEY4==0)
 38         {        
 39             //按下时
 40             tmp_buf[1]=0x05;
 41             if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
 42             {
 43                 LED1=0;
 44                 delay_ms(5);
 45                 LED1=1;
 46                 delay_ms(5);
 47                 tmp_buf[1]=0x00;
 48             }
 49             while(!KEY4);
 50             //松开时
 51             tmp_buf[1]=0x15;
 52             if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
 53             {
 54                 LED1=0;
 55                 delay_ms(5);
 56                 LED1=1;
 57                 delay_ms(5);
 58                 tmp_buf[1]=0x00;
 59             }            
 60         }
 61         else if(KEY5==0)
 62         {        
 63             //按下时
 64             tmp_buf[1]=0x06;
 65             if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
 66             {
 67                 LED1=0;
 68                 delay_ms(5);
 69                 LED1=1;
 70                 delay_ms(5);
 71                 tmp_buf[1]=0x00;
 72             }
 73             while(!KEY5);
 74             //松开时
 75             tmp_buf[1]=0x16;
 76             if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
 77             {
 78                 LED1=0;
 79                 delay_ms(5);
 80                 LED1=1;
 81                 delay_ms(5);
 82                 tmp_buf[1]=0x00;
 83             }            
 84         }
 85         if(tmp_buf[1]!=0x00)
 86         {
 87             if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
 88             {
 89                 LED1=0;
 90                 delay_ms(5);
 91                 LED1=1;
 92                 delay_ms(5);
 93                 tmp_buf[1]=0x00;
 94             }
 95         }
 96     }    
 97 
 98 }
 99 
100 
101                  
问题补充:

跪求大神帮我解释一下程序大概执行的意思

唯爱霞的主页 唯爱霞 | 菜鸟二级 | 园豆:206
提问于:2017-04-19 14:56
< >
分享
最佳答案
0

一大堆哪里知道程序是干嘛的.

猜测是用来维护几个按钮的状态的.

tmp_buf这个数组应该就是用来保存按钮状态.然后发送出去的

奖励园豆:5
吴瑞祥 | 高人七级 |园豆:28846 | 2017-04-19 15:29

这个程序是实现无线鼠标的通信的,只不过我不清楚它是如何执行的,所以想请教一下,如何程序执行的,如何实现无线鼠标的通信

唯爱霞 | 园豆:206 (菜鸟二级) | 2017-04-19 19:19

@唯爱霞: 看他那样子.就是不停的将鼠标的状态发送的出去而已.这种做法很耗电的.肯定是随便写的.

正经的情况还有好多要考虑的情况.比如如果静止一段时间就要进入休眠状态.

至于通讯代码肯定在NRF24L01_TxPacket里面

吴瑞祥 | 园豆:28846 (高人七级) | 2017-04-19 22:35

@吴瑞祥: 确实是随便弄的,板子都是随便做的,主要是欺负我看不懂,所以我才来咨询大家的

唯爱霞 | 园豆:206 (菜鸟二级) | 2017-04-19 22:49

@唯爱霞: 所以新人入行有同事好也不好..我当时就是自己一个人做.就没这些事.自己想怎么做就怎么做.

吴瑞祥 | 园豆:28846 (高人七级) | 2017-04-20 00:44

@吴瑞祥: 请问一下,这里面的像ox00,ox01之类的,是单纯意义上的赋值吗

tmp_buf[1]=0x00;
        if(KEY0==0)
            tmp_buf[1]=0x01;
        else if(KEY1==0)
            tmp_buf[1]=0x02;
        else if(KEY2==0)
            tmp_buf[1]=0x03;
        else if(KEY3==0)
            tmp_buf[1]=0x04;
唯爱霞 | 园豆:206 (菜鸟二级) | 2017-04-20 09:37

@唯爱霞: 是的...就是赋值而已.这段代码就是将鼠标当前的状态(几个按键是否处于按下状态.)保存到tmp_buf数组里.

然后把tmp_buf发送出去.

吴瑞祥 | 园豆:28846 (高人七级) | 2017-04-20 10:08

@吴瑞祥: 好的,谢谢

唯爱霞 | 园豆:206 (菜鸟二级) | 2017-04-20 11:23

@吴瑞祥: 请问一下,这句话怎么去解释,是不是如果NRF24L01发射成功的话

if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
唯爱霞 | 园豆:206 (菜鸟二级) | 2017-04-20 11:29

@唯爱霞: 猜是的

吴瑞祥 | 园豆:28846 (高人七级) | 2017-04-20 11:41

@吴瑞祥: 好的,能解释一下这句话意思吗

while(!KEY5);
            //松开时
            tmp_buf[1]=0x16;

OX16换成二进制不是0001 0110吗?在按键中怎么去实现?下面是按键的标注

#define KEY0 PBin(14)    //
#define KEY1 PBin(11)     //
#define KEY2 PBin(12)     //
#define KEY3 PBin(13)       //
#define KEY4 PAin(8)     //左击
#define KEY5 PBin(15)     //右击
     
void KEY_Init(void);//IO初始化
u8 KEY_Scan(void);  //按键扫描函数                        
#endif
唯爱霞 | 园豆:206 (菜鸟二级) | 2017-04-20 12:13

@唯爱霞: 就是PBin(15)没你想的那么复杂. 

OX16换成二进制不是0001 0110吗?在按键中怎么去实现

并不是这个思路.是右键按下的时候他给数组的第二个数赋值0x16 然后电脑上接到之后第二数是0x16就是按下了右键.应该只是一种约定

吴瑞祥 | 园豆:28846 (高人七级) | 2017-04-20 13:49

@吴瑞祥: 好的,谢谢你耐心的解答

唯爱霞 | 园豆:206 (菜鸟二级) | 2017-04-20 14:42

@吴瑞祥: 那之前我提问的像OX00,OX01之类,也应该是按接下来你说的这种思路来解释吧,而并非是我所理解的换成二进制吧

唯爱霞 | 园豆:206 (菜鸟二级) | 2017-04-20 14:47

@唯爱霞: 是的.所以我说他这个代码是随便写的..正经不会这么干的.

吴瑞祥 | 园豆:28846 (高人七级) | 2017-04-20 14:55

@吴瑞祥:谢谢解惑,没办法谁让我不懂呢

唯爱霞 | 园豆:206 (菜鸟二级) | 2017-04-20 15:40
其他回答(1)
0

数组初始化

狼爷 | 园豆:1202 (小虾三级) | 2017-04-19 18:21

好的,谢谢

支持(0) 反对(0) 唯爱霞 | 园豆:206 (菜鸟二级) | 2017-04-19 19:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册