欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: STM32單片機(jī)溫度報(bào)警器和無(wú)線通信的問(wèn)題,要重新按一次rest按鈕,溫度才會(huì)改變 [打印本頁(yè)]

作者: 2719221825zy    時(shí)間: 2021-12-5 21:34
標(biāo)題: STM32單片機(jī)溫度報(bào)警器和無(wú)線通信的問(wèn)題,要重新按一次rest按鈕,溫度才會(huì)改變
這個(gè)程序一運(yùn)行,溫度就不會(huì)改變,每次都需要重新按一次rest按鈕,溫度才會(huì)改變,怎么去解決這個(gè)問(wèn)題
單片機(jī)源程序如下:
#include "string.h"
#include "stm32f10x.h"
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "tftlcd.h"
#include "beep.h"
#include "key.h"
#include "ds18b20.h"
#include "24l01.h"
#include "spi.h"


u8 waring[] = {10,35};
u8 *p = waring;
u8 data[200];


int main(void)
{
    u8 key,mode;
    u8 t1=0;
    u16 t2=0;
    u8 tmp_buf[1];
    float temperature;
    int tmp;
    NRF24L01_Init();
    LED_Init();
    KEY_Init();
    delay_init();
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  
    uart_init(115200);
   
    LCD_Init();  
    BEEP_Init();
   
    POINT_COLOR=RED;
    LCD_ShowString(30,80,lcddev.width,lcddev.height,16,"4 ZU ZY PCC LXK YQK");
   
    while(DS18B20_Init())
    {
        LCD_ShowString(30,100,lcddev.width,lcddev.height,16,"DS18B20 Error");
        delay_ms(200);
        LCD_Fill(30,100,100,66,WHITE);
        delay_ms(200);
    }
    LCD_ShowString(30,100,lcddev.width,lcddev.height,16,"DS18B20 OK!");
    while(NRF24L01_Check())
    {
        LCD_ShowString(30,120,lcddev.width,lcddev.height,16,"NRF24L01 Error");
        delay_ms(200);
        LCD_Fill(30,120,239,120+16,WHITE);
         delay_ms(200);
    }
    LCD_ShowString(30,120,lcddev.width,lcddev.height,16,"NRF24L01 OK");
    POINT_COLOR=BLUE;
    LCD_ShowString(30,150,lcddev.width,lcddev.height,16,"xiaxian:");
    LCD_ShowString(30,170,lcddev.width,lcddev.height,16,"shangxian:");

   
    while(1)
    {
        if(t1%10==0)
        {
            temperature=DS18B20_Get_Temp();
            if(temperature<0)
            {
                LCD_ShowChar(30+80,190,'-',16,0);
                temperature = -temperature;
            }
            else LCD_ShowChar(30+80,190,' ',16,0);
            
            sprintf((char *)data,"temperature:%.2f",temperature);
                LCD_ShowString(30,190,lcddev.width,lcddev.height,16,data);
            LCD_ShowNum(30+80+8,150,waring[0],2,16);
            LCD_ShowNum(30+80+8,170,waring[1],2,16);        
        }   
        

        t1++;
        if(t1==20)
        {
            t1=0;
            LED0 = !LED0;
        }
        delay_ms(10);
        
        tmp = (int)temperature;
        if((tmp<=waring[0]) || (tmp >= waring[1]))
        {
            BEEP = !BEEP;
            LED1 = 1;
        }
        else
        {
            BEEP = 0;
            LED1 = 0;
        }
    while(1)
    {   
        key=KEY_Scan(0);
        if(key==KEY0_PRES)
        {
            mode=0;   
            break;
        }else if(key==KEY1_PRES)
        {
            mode=1;
            break;
        }
        t2++;
        if(t2==100)LCD_ShowString(10,210,lcddev.width,lcddev.height,16,"KEY0:RX_Mode  KEY1:TX_Mode");
         if(t2==200)
        {   
            LCD_Fill(10,210,240,210+16,WHITE);
            t2=0;
        }
        delay_ms(5);      
    }   
     LCD_Fill(10,210,240,210+16,WHITE);      
     POINT_COLOR=BLUE;   
    if(mode==0)
    {
        LCD_ShowString(30,210,lcddev.width,lcddev.height,16,"NRF24L01 RX_Mode");   
        LCD_ShowString(30,230,lcddev.width,lcddev.height,16,"Received DATA:");   
        NRF24L01_RX_Mode();         
        while(1)
        {                                               
            if(NRF24L01_RxPacket(tmp_buf)==0)
            {
                if((tmp<=waring[0]) || (tmp >= waring[1]))
        {
            LCD_ShowString(30,250,lcddev.width,lcddev.height,16,"wendubaojin");
        }
        else
        {
            LCD_ShowString(30,250,lcddev.width,lcddev.height,16,"wenduzhengchang");
        }
                                
            }else delay_us(100);      
            t2++;
            if(t2==10000)
            {
                t2=0;
                LED0=!LED0;
            }                     
        };   
    }else//TXģʽ
    {                                
        LCD_ShowString(30,210,lcddev.width,lcddev.height,16,"NRF24L01 TX_Mode");
        NRF24L01_TX_Mode();
        while(1)
        {                                 
            if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
            {
                LCD_ShowString(30,230,lcddev.width,lcddev.height,16,"Sended DATA:");   
                if((tmp<=waring[0]) || (tmp >= waring[1]))
        {
            LCD_ShowString(30,250,lcddev.width,lcddev.height,16,"wendubaojin");
        }
        else
        {
            LCD_ShowString(30,250,lcddev.width,lcddev.height,16,"wenduzhengchang");
        }
                key=mode;
                for(t2=0;t2<32;t2++)
                {
                    key++;
                    if(key>('~'))key=' ';
                    tmp_buf[t2]=key;   
                }
                mode++;
                if(mode>'~')mode=' ';        
                tmp_buf[0]=0;        
            }else
            {                                               
                 LCD_Fill(0,230,lcddev.width,230+16*3,WHITE);            
                LCD_ShowString(30,230,lcddev.width-1,32,16,"Send Failed ");
            };
            LED0=!LED0;
            delay_ms(1500);                    
    };
    }
}
}



作者: 2719221825zy    時(shí)間: 2021-12-5 21:35
無(wú)線通信模塊沒(méi)有while循環(huán)就發(fā)送不了信息
作者: AUG    時(shí)間: 2021-12-6 14:35
當(dāng)你理解了while是做啥的  你就知道你程序?yàn)樯队袉?wèn)題了

作者: 我的事業(yè)    時(shí)間: 2021-12-6 16:17
大師們研究我學(xué)習(xí)
作者: 188610329    時(shí)間: 2021-12-6 16:33
從表面來(lái)講,問(wèn)題在于 while(1) 太多了。

從本質(zhì)來(lái)講,你需要先學(xué)一下C語(yǔ)言的基礎(chǔ)概念。
作者: 2719221825zy    時(shí)間: 2021-12-6 19:59
AUG 發(fā)表于 2021-12-6 14:35
當(dāng)你理解了while是做啥的  你就知道你程序?yàn)樯队袉?wèn)題了

我知道是由while導(dǎo)致的,后面的while循環(huán)導(dǎo)致這個(gè)程序返回不到第一個(gè)while,就是不知道怎么改
作者: 188610329    時(shí)間: 2021-12-6 20:16
2719221825zy 發(fā)表于 2021-12-6 19:59
我知道是由while導(dǎo)致的,后面的while循環(huán)導(dǎo)致這個(gè)程序返回不到第一個(gè)while,就是不知道怎么改

原則上,整個(gè)程序, 有且僅有一個(gè) while(1)  你按這個(gè)思路去改就行了。
作者: TTQ001    時(shí)間: 2021-12-7 09:06
不要到處使用 while() 函數(shù),它可能很容易捕獲程序的執(zhí)行。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1