机场助航地灯项目:SIM7020c 电信支持下发 带LSM6DSL 中断唤醒

 项目需求:定时上报 角度值,电压,温度,电流  

可下发修改 角度上报条件(上报的数据范围类型)

 char strXT_FaZhi[52]      = "+CM2MCLIRECV: 46464143383638333334303332333338343633";//心跳与阀值设置
char *p;
char temp_l[12]="0";
char vale_XT_JD1[6];
long  int_strlen;
static float first_r=0,first_p=0; //第一次上电,记录角度
static uint16_t RTC_Time=0;

    char arr_l[100]="123344555";
    char a_x[3];//b_x,c_x;
void XuGai_XT_FaZhi(void) //修改设备的心跳与阀值
{    
    static char ljcx=0;
    for(int i=0;i<10;i++)
    {
         ljcx++;//接收下发次数
        //A9500_DELAY_MS(6000);
    if( strstr(A9500_UART2_RX_BUF,strXT_FaZhi)){ //检测是否接收到下发命令
                            p=strstr(A9500_UART2_RX_BUF,strXT_FaZhi); 
                                        for(int i=0;i<64;i++)        
                                        arr_l[i]=*(p+i);        //将 接收到的命令存放在数组arr_1中
                                        for(int i=0;i<12;i++)    
                                            {
                                                 temp_l[i]=arr_l[52+i]; //截取下发的数据
                                            }
                                            for(int i=0;i<6;i++) //
                                            {  
                                                static int j=1;
                                                vale_XT_JD1[i]=temp_l[j]; //获取下发的有效数据以字符串形式保存
                                                j=j+2;
                                                
                                            }
                        int_strlen=fun1(vale_XT_JD1);//例:将字符串1234转化整型123
                        first_r=(float)((int)(int_strlen/10000));
                        first_p=(float)((int_strlen/100)%100);
                        RTC_Time=(uint32_t)(int_strlen%100);
                            if(RTC_Time)
                            {
                              SYS_RTCInit(60*60*RTC_Time); //12h 一分钟参数为60
                            }    
              else
                             SYS_RTCInit(60*60*24); //24h
           // Send_XiaReturn();//下发应答
                            break;
                            
                 }
             else if(ljcx>5)
                 {
                     ljcx=0;
                 break;
                 }
                 
             }
                    
}    

long fun1(char *s)
{
    long sign,n;
    for(n=0,sign=1;*s;++s)
    {
        if(*s=='-')
        {
            sign=-1;
        }
        else
        {
            n=n*10+*s-'0';
        }
    }
    return sign*n;
		
}

void SYS_RTCInit(uint32_t wkuptime)
{
	uint8_t RTCStateFlag = 0;
	__IO uint32_t XTUpCounter = 0;
	
    static NVIC_InitTypeDef  NVIC_InitStructure;
    static EXTI_InitTypeDef  EXTI_InitStructure;
    static RTC_InitTypeDef RTC_InitStructure;
    static RTC_TimeTypeDef RTC_TimeStructure;


    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);

    /*!< Allow access to RTC */
    PWR_RTCAccessCmd(ENABLE);

	RCC_RTCResetCmd(ENABLE);
	RCC_RTCResetCmd(DISABLE);
    /*!< 使能外部低速时钟 */
    RCC_LSEConfig(RCC_LSE_ON);

    /*!< 等待外部低速时钟就绪 */
    while ((RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)&&(XTUpCounter=HSE_STARTUP_TIMEOUT)
	{
		XTUpCounter = 0;
		RCC_LSICmd(ENABLE);

		/*!< 等待外部低速时钟就绪 */
		while ((RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET)&&(XTUpCounter

 

你可能感兴趣的:(stm32)