OpenEdv-开源电子网

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

求助,本人将F103板子的ADC例程和无线通信例程结合后,某个按键默认是按下的

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2022-4-22
在线时间
5 小时
发表于 2022-5-18 18:44:22 | 显示全部楼层 |阅读模式
5金钱
      如题,本人将无线通信的部分代码加入到ADC例程里面,希望当没有按键按下时能够不停的进行ADC模块,当有按键按下时,停止ADC模块并传输不同的语句。编译能够通过,但实际运行时只有开始时能够运行一下ADC模块,之后KEY_RIGHT按键仿佛是默认按下了一样,我没有按下但程序自动进入了按下之后的那个循环(另一块板子能正常接收)。我试着更改了条件,让KEY_RIGHT按下时什么也不做,用来试优先级比它低的KEY_DOWN按键是否也默认按下了,答案是程序认为该按键也按下了。
      我已经通过下载普通无线通信例程的方式确认了按键本身没有问题,问题应该出自代码。
      我修改的代码如下(大部分都是例程没有修改,在此处略去了一部分初始化内容):
    while(key==0)
    {
        adcx=Get_Adc_Average(ADC_Channel_1,10);
        temp=(float)adcx*(3.3/4096);                          
        adcx=temp;
        LCD_ShowxNum(156,190,adcx,1,16,0);                    
        temp-=adcx;
        temp*=1000;                                          
        LCD_ShowxNum(172,190,temp,3,16,0X80);
        LED0=!LED0;
        delay_ms(250);   
    {
            key=KEY_Scan(0);
        if(key==KEY_RIGHT)
        {
            mode=0;   
            break;
        }else if(key==KEY_DOWN)
        {
            mode=1;
            break;
        }
    t++;
        if(t==100)LCD_ShowString(10,150,230,16,16,"Choose the message!");
         if(t==200)
        {   
            LCD_Fill(10,150,230,150+16,WHITE);
            t=0;
        }
        delay_ms(5);   
    }   
     LCD_Fill(10,150,240,166,WHITE);     
     POINT_COLOR=BLUE;
        }
    if(mode==0)
    {
        NRF24L01_TX_Mode();
        mode=' ';
        while(1)
        {   
            if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
            {
                LCD_ShowString(30,150,239,32,16,"Sended DATA:");   
                LCD_ShowString(0,170,239,32,16,tmp_buf);
                sprintf((char*)tmp_buf,"Sentence1       \r\n");     
                tmp_buf[32]=0;      
            }
            LED0=!LED0;
            delay_ms(1500);                    
        };
    }
    else if(modes==1)
    {                                
        NRF24L01_TX_Mode();
        mode=' ';
        while(1)
        {              
            NRF24L01_TX_Mode();
        mode=' ';
        while(1)
        {                                 
            if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
            {
                LCD_ShowString(30,150,239,32,16,"Sended DATA:");   
                LCD_ShowString(0,170,239,32,16,tmp_buf);
                sprintf((char*)tmp_buf,"Sentence2   \r\n");     
                tmp_buf[32]=0;     
            }
            LED0=!LED0;
            delay_ms(1500);                    
        };
    }
    }
}
    本人使用的开发板具体是战舰V2开发板,芯片是STM32F103ZET6.


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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 04:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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