181 lines
4.4 KiB
C
181 lines
4.4 KiB
C
|
|
|||
|
//#include "uart_my.h"
|
|||
|
//#include "exit.h"
|
|||
|
//#include "led.h"
|
|||
|
#include "usart.h"
|
|||
|
#define __DATA_CHANNEL_C__
|
|||
|
#include "data_channel.h"
|
|||
|
|
|||
|
|
|||
|
u8 Zigbee_Rx_Max =8;
|
|||
|
u8 Wifi_Rx_num =0;
|
|||
|
u8 Wifi_Rx_flag=0;
|
|||
|
|
|||
|
u8 Zigbee_Rx_num =0;
|
|||
|
u8 Zigbee_Rx_flag=0;
|
|||
|
u8 Zigbee_RxZt_flag =0;
|
|||
|
|
|||
|
u8 rxd1_timer4_1ms,rxd1_timer4_flag;
|
|||
|
|
|||
|
|
|||
|
/***************************************************************
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD> <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>4<EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
|
|||
|
****************************************************************/
|
|||
|
void TIM4_IRQHandler(void)
|
|||
|
{
|
|||
|
/* if(TIM4->SR&0X0001) // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
{
|
|||
|
rxd1_timer4_1ms++;
|
|||
|
if(rxd1_timer4_1ms>5) // 5msʱ<73><CAB1><EFBFBD>ѵ<EFBFBD><D1B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
rxd1_timer4_flag=1;
|
|||
|
TIM4->CR1&=~(0x01); // <20><>ʹ<EFBFBD>ܶ<EFBFBD>ʱ<EFBFBD><CAB1>4
|
|||
|
Wifi_Rx_flag =1;
|
|||
|
}
|
|||
|
}
|
|||
|
TIM4->SR&=~(1<<0); // <20><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־λ */
|
|||
|
|
|||
|
if(TIM_GetITStatus(TIM4,TIM_FLAG_Update) == SET)
|
|||
|
{
|
|||
|
rxd1_timer4_1ms++;
|
|||
|
if(rxd1_timer4_1ms>5) // 5msʱ<73><CAB1><EFBFBD>ѵ<EFBFBD><D1B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
rxd1_timer4_flag=1;
|
|||
|
TIM_Cmd(TIM4,ENABLE);
|
|||
|
Wifi_Rx_flag =1;
|
|||
|
}
|
|||
|
TIM_ClearITPendingBit(TIM4,TIM_FLAG_Update);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/***************************************************************
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD> <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>4<EFBFBD>жϳ<EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> arr<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>װֵ
|
|||
|
** psc<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>
|
|||
|
** <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
|
|||
|
****************************************************************/
|
|||
|
void Timer4_Init(u16 arr,u16 psc)
|
|||
|
{
|
|||
|
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
|
|||
|
NVIC_InitTypeDef NVIC_InitStructure;
|
|||
|
|
|||
|
|
|||
|
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //ʱ<><CAB1>ʹ<EFBFBD><CAB9>
|
|||
|
|
|||
|
//<2F><>ʱ<EFBFBD><CAB1>TIM4<4D><34>ʼ<EFBFBD><CABC>
|
|||
|
TIM_TimeBaseStructure.TIM_Period = arr; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EEB6AF><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>װ<EFBFBD>ؼĴ<D8BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ֵ
|
|||
|
TIM_TimeBaseStructure.TIM_Prescaler =psc; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪTIMxʱ<78><CAB1>Ƶ<EFBFBD>ʳ<EFBFBD><CAB3><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>Ƶֵ
|
|||
|
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD>ӷָ<D3B7>:TDTS = Tck_tim
|
|||
|
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM<49><4D><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>ģʽ
|
|||
|
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>TIMx<4D><78>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
|
|||
|
TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE ); //ʹ<><CAB9>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>TIM4<4D>ж<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
|
|||
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>NVIC<49><43><EFBFBD><EFBFBD>
|
|||
|
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
|
|||
|
NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn; //TIM4<4D>ж<EFBFBD>
|
|||
|
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //<2F><>ռ<EFBFBD><D5BC><EFBFBD>ȼ<EFBFBD>0<EFBFBD><30>
|
|||
|
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD>3<EFBFBD><33>
|
|||
|
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQͨ<51><CDA8><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
|||
|
NVIC_Init(&NVIC_InitStructure); //<2F><>ʼ<EFBFBD><CABC>NVIC<49>Ĵ<EFBFBD><C4B4><EFBFBD>
|
|||
|
|
|||
|
TIM_Cmd(TIM4, ENABLE); //ʹ<><CAB9>TIMx
|
|||
|
}
|
|||
|
|
|||
|
void Wifi_data_Receive( u8 res) // wifi <20><><EFBFBD>ݽ<EFBFBD><DDBD>մ<EFBFBD><D5B4><EFBFBD>
|
|||
|
{
|
|||
|
|
|||
|
rxd1_timer4_1ms=0;
|
|||
|
|
|||
|
if(rxd1_timer4_flag==1) // 5msʱ<73><CAB1> <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD>¿<EFBFBD>ʼ
|
|||
|
{
|
|||
|
rxd1_timer4_flag=0;
|
|||
|
TIM4->CR1|=0x01; //ʹ<>ܶ<EFBFBD>ʱ<EFBFBD><CAB1>4
|
|||
|
Wifi_Rx_num =0;
|
|||
|
Wifi_Rx_Buf[Wifi_Rx_num]=res;
|
|||
|
}
|
|||
|
else if(Wifi_Rx_num < WIFI_MAX_NUM )
|
|||
|
{
|
|||
|
Wifi_Rx_Buf[++Wifi_Rx_num]=res; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
|
|||
|
}
|
|||
|
|
|||
|
else // <20><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5>Ҫ
|
|||
|
{
|
|||
|
;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
void Zigbee_data_Receive( u8 res) // zigbee <20><><EFBFBD>ݽ<EFBFBD><DDBD>մ<EFBFBD><D5B4><EFBFBD>
|
|||
|
{
|
|||
|
u8 sum;
|
|||
|
|
|||
|
if(Zigbee_Rx_num >0)
|
|||
|
{
|
|||
|
Zigb_Rx_Buf[Zigbee_Rx_num]=res;
|
|||
|
Zigbee_Rx_num++;
|
|||
|
}
|
|||
|
else if (res==0x55) // Ѱ<>Ұ<EFBFBD>ͷ
|
|||
|
{
|
|||
|
|
|||
|
Zigb_Rx_Buf[0]=res;
|
|||
|
Zigbee_Rx_num=1;
|
|||
|
}
|
|||
|
else Zigbee_Rx_num =0;
|
|||
|
|
|||
|
if(Zigbee_Rx_num >= Zigbee_Rx_Max)
|
|||
|
{
|
|||
|
|
|||
|
if((Zigb_Rx_Buf[Zigbee_Rx_Max -1]==0xbb)&&(Zigbee_RxZt_flag ==0)&&(Zigb_Rx_Buf[1]!=0xfd)) // <20>жϰ<D0B6>β //change by ygm
|
|||
|
{
|
|||
|
//<2F><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
|||
|
//ע<>⣺<EFBFBD><E2A3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱӦ<CAB1>öԺ<C3B6><D4BA><EFBFBD>256ȡ<36>ࡣ
|
|||
|
Zigbee_Rx_num=0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
Zigbee_RxZt_flag =0; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
sum=(Zigb_Rx_Buf[2]+Zigb_Rx_Buf[3]+Zigb_Rx_Buf[4]+Zigb_Rx_Buf[5])%256;
|
|||
|
if(sum==Zigb_Rx_Buf[6])
|
|||
|
{
|
|||
|
Zigbee_Rx_flag =1; // ָ<><D6B8><EFBFBD><EFBFBD>֤<EFBFBD><D6A4>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>־λ<D6BE><CEBB>1
|
|||
|
}
|
|||
|
else {Zigbee_Rx_flag =0;}
|
|||
|
}
|
|||
|
else if((Zigb_Rx_Buf[1]==0xfd)&&(Zigbee_RxZt_flag ==0))
|
|||
|
{
|
|||
|
if(Zigb_Rx_Buf[2]>8)
|
|||
|
{
|
|||
|
Zigbee_Rx_Max = Zigb_Rx_Buf[2];
|
|||
|
Zigbee_RxZt_flag =1; // <20><><EFBFBD><EFBFBD>״̬1 <20><><EFBFBD>Ž<EFBFBD><C5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
Zigbee_Rx_num=0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if(Zigb_Rx_Buf[Zigbee_Rx_Max-1]==0xbb)
|
|||
|
{
|
|||
|
Zigbee_RxZt_flag =0; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
// send_Flag=1; //change by ygm
|
|||
|
Zigbee_Rx_Max =8;
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
else if((Zigbee_RxZt_flag ==1)&&(Zigb_Rx_Buf[Zigbee_Rx_Max -1]==0xbb))
|
|||
|
{
|
|||
|
Zigbee_Rx_num=0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
Zigbee_RxZt_flag =0; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
// send_Flag=1;
|
|||
|
Zigbee_Rx_Max =8;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
else {Zigbee_Rx_flag =0; Zigbee_Rx_num =0;} //<2F><><EFBFBD>մ<EFBFBD><D5B4><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><F2BFAAB7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|