最近在做基于STM32F103C8T6依托机智云物联网平台的毕业设计,通过ADC转换出光敏数据我无法成功,光敏数据是一直卡着的还有不准确

######光敏无法采集

img

没有错误但是很多警告,我是使用Keil5MDK软件的
我的解答思路和尝试过的方法
可以采集出来就可以了,如果其他也可以的话,那更加好了

img

img

img

#include "sys.h"
#include "usart.h"
#include "led.h"
#include "timer.h"
#include "ADC.h"
#include "usart3.h"
#include "key.h"
#include "oled.h"
#include "math.h"
#include "dht11.h"
#include "bmp280.h"
#include "gizwits_product.h" 
#include "beep.h"

#include "lsens.h"

u32 STM32_xx0=0X4E4C4A;
u32 STM32_xx1=0X364B1322;
u32 STM32_xx2=0X132D13  ;

#define FLASH_SAVE_ADDR 0x08010000

u8 buff[30];//参数显示缓存数组
u8 count;
dataPoint_t currentDataPoint;//云端数据点
u8 wifi_sta;//wifi连接状态标志
u8 mode=0;//模式控制自动和手动
u8 NTP_sta=0;//网诺时间获取状态
u8 display_contrl=0;
u8 Curtain=0;
u8 last_Curtain=0;

extern u8 DHT11_Temp,DHT11_Hum;        //温湿度
u16 Pre;                            //气压检测值
u8 adcx;                        //光敏

u16 GZ_Value;                        //光照检测值            
u16 MQ2_Value;                        //烟雾检测值
u16 MQ7_Value;                        //一氧化碳检测值
u16 MQ135_Value;                        //空气质量检测值

u16 A_DHT11_Temp=35;                //温度阈值
u16 A_DHT11_Hum=20;                    //湿度阈值
u16 A_pre=1500;                        //气压阈值
u16 A_GZ_Value=1000;                //光照强度阈值
u16 A_MQ2_Value=3500;                //烟雾阈值
u16 A_MQ7_Value=3500;                //一氧化碳阈值
u16 A_MQ135_Value=500;                //空气质量阈值
/************************************************
 ALIENTEK精英STM32开发板实验1
 跑马灯实验
 技术支持:www.openedv.com
 淘宝店铺:http://eboard.taobao.com 
 关注微信公众平台微信号:"正点原子",免费获取STM32资料。
 广州市星翼电子科技有限公司  
 作者:正点原子 @ALIENTEK
************************************************/
//协议初始化
void Gizwits_Init(void)
{    
    TIM3_Int_Init(9,7199);//1MS系统定时
    usart3_init(9600);//WIFI初始化
    memset((uint8_t*)&currentDataPoint, 0, sizeof(dataPoint_t));//设备状态结构体初始化
    gizwitsInit();//缓冲区初始化
}

//数据采集
void userHandle(void)
{
    currentDataPoint.valueLED = !LED0;
    currentDataPoint.valueCurtain = Curtain;
    currentDataPoint.valueTemp = DHT11_Temp;
    currentDataPoint.valueHum = DHT11_Hum;
    currentDataPoint.valuePre = Pre;
//    currentDataPoint.valueGZ_Value = GZ_Value;
    currentDataPoint.valueMQ2_Value = MQ2_Value;
    currentDataPoint.valueMQ7_Value = MQ7_Value;
    currentDataPoint.valueMQ135_Value = MQ135_Value;
}

void Get_Data(u16 count);//获取传感器数据
void WIFI_Contection(u8 key);//WiFi连接控制
void Canshu_Change(u8 key);//系统参数调节
void Mode_Change(u8 key);//模式切换
void BUJING_Cotrol(u8 mode,u16 time,u16 count);

int main(void)
{    
    u8 t=0;
    int key_value;        //按键值
    uart_init(115200);             //串口初始化为115200
    delay_init();        //延时函数初始化
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
    Adc1_Channe_Init();            //ADC通道初始化
    KEY_Init();                    //按键引脚初始化
    bmp280Init();
    //while(DHT11_Init());    
    LED_Init();                      //初始化与LED连接的硬件接口
    OLED_Init();                //OLED初始化
    OLED_Clear();                //OLED清屏
    Gizwits_Init();        
    BEEP_Init();
    
    Lsens_Init();             //初始化光敏传感器
    
    while(1)
    {
        Get_Data(0);
        if(GZ_Value<=A_GZ_Value&&mode==0)
        {
            LED0=0;
            Curtain=0;
        }else if(GZ_Value>A_GZ_Value&&mode==0){
            LED0=1;
            Curtain=1;
        }
        if(last_Curtain!=Curtain&&mode==0)
        {
            BUJING_Cotrol(Curtain,3,270);
            last_Curtain = Curtain;
        }
        if(last_Curtain!=currentDataPoint.valueCurtain&&mode==1)
        {
            BUJING_Cotrol(currentDataPoint.valueCurtain,3,270);
            Curtain = currentDataPoint.valueCurtain;
            last_Curtain = currentDataPoint.valueCurtain;
        }    
        if(mode==1)
        {
            LED0=!currentDataPoint.valueLED;
                BEEP=!BEEP;
    }
        if(DHT11_Temp>=A_DHT11_Temp||DHT11_Hum<=A_DHT11_Hum||Pre>=A_pre||MQ135_Value<=A_MQ135_Value||MQ2_Value>=A_MQ2_Value||MQ7_Value>=A_MQ7_Value)
        {
        }else BEEP = 0;

        key_value = KEY_Scan(0);
        if(key_value==2)
        {
            display_contrl++;
        }
        if(display_contrl%2==0&&t>=10)
        {
            OLED_ShowCHinese(0,0,0);
            OLED_ShowCHinese(16,0,2);
            sprintf((char*)buff,":%2dC",DHT11_Temp);
            OLED_ShowString(32,0,buff,16);    //显示温度
            OLED_ShowCHinese(64,0,1);
            OLED_ShowCHinese(82,0,2);
            sprintf((char*)buff,":%2d%%",DHT11_Hum);
            OLED_ShowString(96,0,buff,16);//显示湿度    
            
            OLED_ShowCHinese(0,2,3);
            OLED_ShowCHinese(16,2,4);
            sprintf((char*)buff,":     %2dhpa",Pre);
            OLED_ShowString(32,2,buff,16);//显示气压
            
            OLED_ShowCHinese(0,4,21);
            OLED_ShowCHinese(16,4,22);
//            OLED_ShowCHinese(32,4,7);
//            OLED_ShowCHinese(48,4,8);
                    adcx=Lsens_Get_Val();
            sprintf((char*)buff,":%4dppm          ", adcx );
            
            
            OLED_ShowString(64,4,buff,16);//显示光照强度
            
            OLED_ShowCHinese(0,6,9);
            OLED_ShowCHinese(16,6,10);
            OLED_ShowCHinese(32,6,11);
            OLED_ShowCHinese(48,6,12);
            sprintf((char*)buff,":%4dppm",MQ135_Value);
            OLED_ShowString(64,6,buff,16);//显示空气质量
        }else if(display_contrl%2==1&&t>=10)
        {
            OLED_ShowCHinese(0,0,13);
            OLED_ShowCHinese(16,0,14);
            OLED_ShowCHinese(32,0,15);
            OLED_ShowCHinese(48,0,16);
            sprintf((char*)buff,":%4dppm",MQ2_Value);
            OLED_ShowString(64,0,buff,16);//显示M2数据
            
            OLED_ShowCHinese(0,2,17);
            OLED_ShowCHinese(16,2,18);
            OLED_ShowCHinese(32,2,19);
            OLED_ShowCHinese(48,2,20);
            sprintf((char*)buff,":%4dppm",MQ7_Value);
            OLED_ShowString(64,2,buff,16);//显示M7数据
            
            OLED_ShowCHinese(0,4,21);
            OLED_ShowCHinese(16,4,22);
//            OLED_ShowCHinese(32,4,7);
//            OLED_ShowCHinese(48,4,8);
                    adcx=Lsens_Get_Val();
            sprintf((char*)buff,":%4dppm          ", adcx ); 
            
            OLED_ShowCHinese(0,6,9);
            OLED_ShowCHinese(16,6,10);
            OLED_ShowCHinese(32,6,11);
            OLED_ShowCHinese(48,6,12);
            sprintf((char*)buff,":%4dppm",MQ135_Value);
            OLED_ShowString(64,6,buff,16);//显示M135数据
        }

        userHandle();        //用户数据采集
        WIFI_Contection(key_value);//WiFi连接控制
        gizwitsHandle((dataPoint_t *)&currentDataPoint);//机智云协议处理
        
        Canshu_Change(key_value);
        
        t++;
        delay_ms(100);
    }
}
 
void WIFI_Contection(u8 key)//WiFi连接控制
{
    if(key==4)
    {
        printf("WIFI进入AirLink连接模式\r\n");
        gizwitsSetMode(WIFI_AIRLINK_MODE);//Air-link模式接入
    }            
    if(key==3)
    {  
        
        printf("WIFI复位,请重新配置连接\r\n");
        gizwitsSetMode(WIFI_RESET_MODE);//WIFI复位
    }
}

void Canshu_Change(u8 key)
{
    u8 obj=7;
    if(key==1)
    {
        BEEP=0;
        OLED_Clear();
        while(1)
        {
            key = KEY_Scan(0);
            if(key==1)
            {
                obj++;
                if(obj>=8)
                {
                    obj=0;
                }
            }
            sprintf((char *)buff,"Working md:%4d",mode);
            OLED_ShowString(8,0,buff,12);
            sprintf((char *)buff,"A_Temp    :%4d",A_DHT11_Temp);
            OLED_ShowString(8,1,buff,12);
            sprintf((char *)buff,"A_Hum     :%4d",A_DHT11_Hum);
            OLED_ShowString(8,2,buff,12);
            sprintf((char *)buff,"A_pre     :%4d",A_pre);
            OLED_ShowString(8,3,buff,12);
            sprintf((char *)buff,"A_gz_val  :%4d",A_GZ_Value);
            OLED_ShowString(8,4,buff,12);
            sprintf((char *)buff,"A_m2_val  :%4d",A_MQ2_Value);
            OLED_ShowString(8,5,buff,12);
            sprintf((char *)buff,"A_m7_val  :%4d",A_MQ7_Value);
            OLED_ShowString(8,6,buff,12);
            sprintf((char *)buff,"A_m135_val:%4d",A_MQ135_Value);
            OLED_ShowString(8,7,buff,12);
            if(obj==0)
            {
                OLED_ShowString(0,0," ",12);
                OLED_ShowString(0,1,">",12);
                OLED_ShowString(0,2," ",12);
                OLED_ShowString(0,3," ",12);
                OLED_ShowString(0,4," ",12);
                OLED_ShowString(0,5," ",12);
                OLED_ShowString(0,6," ",12);
                OLED_ShowString(0,7," ",12);
            }
            if(obj==1)
            {
                OLED_ShowString(0,0," ",12);
                OLED_ShowString(0,1," ",12);
                OLED_ShowString(0,2,">",12);
                OLED_ShowString(0,3," ",12);
                OLED_ShowString(0,4," ",12);
                OLED_ShowString(0,5," ",12);
                OLED_ShowString(0,6," ",12);
                OLED_ShowString(0,7," ",12);
            }
            if(obj==2)
            {
                OLED_ShowString(0,0," ",12);
                OLED_ShowString(0,1," ",12);
                OLED_ShowString(0,2," ",12);
                OLED_ShowString(0,3,">",12);
                OLED_ShowString(0,4," ",12);
                OLED_ShowString(0,5," ",12);
                OLED_ShowString(0,6," ",12);
                OLED_ShowString(0,7," ",12);
            }
            if(obj==3)
            {
                OLED_ShowString(0,0," ",12);
                OLED_ShowString(0,1," ",12);
                OLED_ShowString(0,2," ",12);
                OLED_ShowString(0,3," ",12);
                OLED_ShowString(0,4,">",12);
                OLED_ShowString(0,5," ",12);
                OLED_ShowString(0,6," ",12);
                OLED_ShowString(0,7," ",12);
            }
            if(obj==4)
            {
                OLED_ShowString(0,0," ",12);
                OLED_ShowString(0,1," ",12);
                OLED_ShowString(0,2," ",12);
                OLED_ShowString(0,3," ",12);
                OLED_ShowString(0,4," ",12);
                OLED_ShowString(0,5,">",12);
                OLED_ShowString(0,6," ",12);
                OLED_ShowString(0,7," ",12);
            }
            if(obj==5)
            {
                OLED_ShowString(0,0," ",12);
                OLED_ShowString(0,1," ",12);
                OLED_ShowString(0,2," ",12);
                OLED_ShowString(0,3," ",12);
                OLED_ShowString(0,4," ",12);
                OLED_ShowString(0,5," ",12);
                OLED_ShowString(0,6,">",12);
                OLED_ShowString(0,7," ",12);
            }
            if(obj==6)
            {
                OLED_ShowString(0,0," ",12);
                OLED_ShowString(0,1," ",12);
                OLED_ShowString(0,2," ",12);
                OLED_ShowString(0,3," ",12);
                OLED_ShowString(0,4," ",12);
                OLED_ShowString(0,5," ",12);
                OLED_ShowString(0,6," ",12);
                OLED_ShowString(0,7,">",12);
            }
            if(obj==7)
            {
                OLED_ShowString(0,0,">",12);
                OLED_ShowString(0,1," ",12);
                OLED_ShowString(0,2," ",12);
                OLED_ShowString(0,3," ",12);
                OLED_ShowString(0,4," ",12);
                OLED_ShowString(0,5," ",12);
                OLED_ShowString(0,6," ",12);
                OLED_ShowString(0,7," ",12);
            }
            if(obj==0)
            {
                if(key==3)
                {
                    A_DHT11_Temp+=1;
                }
                if(key==4)
                {
                    A_DHT11_Temp-=1;
                }
            }
            if(obj==1)
            {
                if(key==3)
                {
                    A_DHT11_Hum+=1;
                }
                if(key==4)
                {
                    A_DHT11_Hum-=1;
                }
            }
            if(obj==2)
            {
                if(key==3)
                {
                    A_pre+=20;
                }
                if(key==4)
                {
                    A_pre-=20;
                }
            }
            if(obj==3)
            {
                if(key==3)
                {
                    A_GZ_Value+=50;
                }
                if(key==4)
                {
                    A_GZ_Value-=50;
                }
            }
            if(obj==4)
            {
                if(key==3)
                {
                    A_MQ2_Value+=50;
                }
                if(key==4)
                {
                    A_MQ2_Value-=50;
                }
            }
            if(obj==5)
            {
                if(key==3)
                {
                    A_MQ7_Value+=50;
                }
                if(key==4)
                {
                    A_MQ7_Value-=50;
                }
            }
            if(obj==6)
            {
                if(key==3)
                {
                    A_MQ135_Value+=50;
                }
                if(key==4)
                {
                    A_MQ135_Value-=50;
                }
            }
            if(obj==7)
            {
                if(key==3)
                {
                    mode+=1;
                }
                if(key==4)
                {
                    mode-=1;
                }
                if(mode >= 2) mode = 0;
            }
            if(key==2)
            {
                OLED_Clear();
                break;
            }
        
        }
    }
}

void Get_Data(u16 count)//获取传感器数据
{
    static float bmp280_press,bmp280;                //气压
    
    DHT11_Read_Data(&DHT11_Temp,&DHT11_Hum);
    
    bmp280GetData(&bmp280_press,&bmp280,&bmp280);
    Pre = bmp280_press;
    
    
    adcx = Lsens_Get_Val();
//    GZ_Value   = 4096 - get_Adc_Value(0x04);
    
    MQ2_Value   = get_Adc_Value(0x07);
    
    MQ7_Value   = get_Adc_Value(0x05);
    
    MQ135_Value = 4096 - get_Adc_Value(0x06);
}
//void Mode_Change(u8 key)
//{
//    if(key==2)
//    {
//        mode++;
//        if(mode>=2) mode = 0;
//    }
//    if(mode==0) OLED_ShowString(0,0,"MODE:Auto",12); //HM
//    if(mode==1) OLED_ShowString(0,0,"MODE:H_M_",12); //HM
//}

void BUJING_Cotrol(u8 mode,u16 time,u16 count)
{
    if(mode==0)
    {
        while(count--)
        {
            BUJ1=1; BUJ2=0; BUJ3=0;BUJ4=0;
            delay_ms(time);
            BUJ1=0; BUJ2=1; BUJ3=0;BUJ4=0;
            delay_ms(time);
            BUJ1=0; BUJ2=0; BUJ3=1;BUJ4=0;
            delay_ms(time);
            BUJ1=0; BUJ2=0; BUJ3=0;BUJ4=1;
            delay_ms(time);
        }
    }
    if(mode==1)
    {
        while(count--)
        {
            BUJ1=0; BUJ2=0; BUJ3=0;BUJ4=1;
            delay_ms(time);
            BUJ1=0; BUJ2=0; BUJ3=1;BUJ4=0;
            delay_ms(time);
            BUJ1=0; BUJ2=1; BUJ3=0;BUJ4=0;
            delay_ms(time);
            BUJ1=1; BUJ2=0; BUJ3=0;BUJ4=0;
            delay_ms(time);
        }
    }
}