标题:
PL1167SPI通讯固定频率发信号STM8程序源码(RF认证用)
[打印本页]
作者:
zrzhou
时间:
2018-9-13 10:11
标题:
PL1167SPI通讯固定频率发信号STM8程序源码(RF认证用)
代码用于客户产品的PL1167 RF认证用,SPI通讯PL1167,固定频率一直发一个信号。供参考
MCU:STM8S103
IDE : IAR FOR STM8
0.png
(38.99 KB, 下载次数: 35)
下载附件
2018-9-13 17:20 上传
单片机源程序如下:
#include "PL1167Certify.h"
u8 u8DeviceMode;
bool bFlagTimer100us,bFlagTimer4ms,bFlagTimer1s,bFlagTimer4ms1,bFlagAcOn,bFlagBtOffTimerOk,bFlagUartTxOn,bFlagSppCmdSend;
u8 u8IntensityLevel;
bool bFlagKeyPauseChk,bFlagKeyProcess,bFlagKeyLock;
extern bool bFlagKeyPress;
extern u8 u8KeyValue,u8KeyStatus;
u8 u8KeyValueBuffer;
extern bool bFlagDcPowerOn;
bool bFlagRfRxGet;
bool bFlagLed1,bFlagLed2,bFlagLed3,bFlagLed4,bFlagLed5,bFlagLed6,bFlagLedStatus;
u8 u8LedFlashCount;
u16 u16LedFlashSet[21][2]={
{0,0},
{210,50},{200,50},{190,50},{180,50},{170,50},
{160,50},{150,50},{140,50},{130,50},{120,50},
{110,50},{100,50},{90,50},{80,50},{70,50},
{60,40},{50,40},{40,30},{30,20},{20,15}
};
u16 u16DcCount;
u16 u16DcCountBuf[6]={0,0,0,0,0,0
};
//u16 u16IntensLevelDuty[20]={
//};
u8 u8PwmCycleLargeCount,u8PwmCycleLargeCountMax;
u8 u8PwmCycleLittleCount,u8PwmCycleLittleCountOffset,u8PwmCycleLittleCountEnd;
u8 u8PwmOnCycleLittleCount,u8PwmOnCycleLittleCountOffset,u8PwmOnCycleLittleCountEnd;
u8 u8PwmCycleMidCount,u8PwmCycleMidCountBuffer,u8PwmCycleMidRepeat,u8PwmCycleMidRepeatMax;
u16 u16PwmCycleMidCount,u16PwmCycleMidCountMax;
u8 u8PwmCycleLittleCountBuffer,u8PwmCycle2LittleCount;
u8 u8RepeatCount;
u16 u16PwmOffCycle;
bool bFlagPwm2On,bFlagPwmCycleInc,bFlagPwmOnCycleInc,bFlagPwmCycleEnd;
bool bFlagPwmPro3Run;
bool bFlagPwmPro4Run,bFlagPwmPro4Next,bFlagPwmPro4End,bFlagPwmPro4First,bFlagPro4Second;
bool bFlagPwmOffCycle;
bool bFlagPwmDischarge=FALSE;
u8 u8DischargeCount=0;
u8 u8DischargeDuty=0;
extern u16 u16Pwm1DutySet[21];
extern u16 u16Pwm1Duty;
u16 u16Pwm1DutySave,u16Pwm2DutySave,u16Pwm3DutySave;
bool bFlagPwmPhaseEnd;
u8 u8PwmCyclePhase;
u8 u8RfRxBuffer[16],u8RfTxBuffer[16];
u8 u8RfStatus,u8RfAckCount;
bool bFlagRfReceive;
u8 u8SystemMode;
u8 u8Timer100us,u8Timer2ms,u8Timer4ms,u8TimerRf4ms,u8Timer1s,u8Timer1m;
u8 u8Hours=0X0,u8Minutes=0X0,u8Seconds=0X0,u8Months=0X1,u8Dates=0X1;
u16 u16Years=0X2014;
u8 u8TimerMinutesCountDown,u8TimerSecondsCountDown;
u8 u8TimerMode;
main()
{
MCU_init();
System_init();
system_off_init();
while(1)
{
enableInterrupts();
if (bFlagTimer4ms)
{
bFlagTimer4ms=FALSE;
switch (u8SystemMode)
{
case SYSTEM_ON:
//if (bFlagTimer4ms1)
{
//bFlagTimer4ms1=FALSE;
key_pro_system_on();
led_pro_system_on();
}
send_rf_key_inc();
timer_count_down_pro();
break;
case SYSTEM_OFF:
default:
all_output_off();
delay(KEY_DELAY);
if ((KEY_INPUT)&&(u8KeyStatus==KEY_RELEASE)&&(u8RfAckCount==0)&&(!POWER_IN))
{
//PULSE donot output
// GPIO_Init(GPIOD, (GPIO_Pin_TypeDef)(GPIO_PIN_4), GPIO_MODE_OUT_PP_LOW_SLOW);
// GPIO_Init(GPIOD, (GPIO_Pin_TypeDef)(GPIO_PIN_2|GPIO_PIN_3), GPIO_MODE_OUT_PP_HIGH_SLOW);
// delay(20000);
// GPIO_Init(GPIOD, (GPIO_Pin_TypeDef)(GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4), GPIO_MODE_OUT_PP_LOW_SLOW);
pl1167_init();
pl1167_write_reg(0x23,0x4380);
active_to_sleep();
halt();
nop();
nop();
nop();
nop();
sleep_to_active();
pl1167_init();
//pl1167_write_reg(0x23,0xc380);
}
if(!bFlagDcPowerOn)
{
key_pro_system_off();
}
break;
}
watchdog_reset();
key_scan();
}
}
}
void
device_mode1_init()
{
u8DeviceMode=DEVICE_MODE1;
u8IntensityLevel=INTENS_MIN;
mode1_phase1_init();
}
void
device_mode2_init()
{
u8DeviceMode=DEVICE_MODE2;
u8IntensityLevel=INTENS_MIN;
mode2_phase1_init();
}
void
device_mode3_init()
{
u8DeviceMode=DEVICE_MODE3;
u8IntensityLevel=INTENS_MIN;
mode3_phase1_init();
}
void
device_mode4_init()
{
u8DeviceMode=DEVICE_MODE4;
u8IntensityLevel=INTENS_MIN;
u8PwmCycleLargeCount=0;
u8PwmCycleLittleCount=0;
u8PwmCycleMidCount=0;
TIM2_OC3Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE, 0x0000, TIM2_OCPOLARITY_HIGH);
u8PwmCycleLittleCountBuffer=MODE4_PWM_CYCLE_LITTLE_START;
pwm_cycle_pro3();
// pwm1_set_period(23726);
// pwm1_set_duty(0);
// pwm2_set_duty(20905);
// pwm3_set_duty(20905);
}
void
device_mode5_init()
{
u8DeviceMode=DEVICE_MODE5;
u8IntensityLevel=INTENS_MIN;
u8PwmCycleLargeCount=0;
u8PwmCycleLittleCount=0;
u8PwmCycleMidCount=0;
TIM2_OC3Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE, 0x0000, TIM2_OCPOLARITY_HIGH);
// u8PwmCycleLittleCountBuffer=MODE4_PWM_CYCLE_LITTLE_START;
pwm_cycle_pro3();
}
void
device_mode6_init()
{
u8DeviceMode=DEVICE_MODE6;
u8IntensityLevel=INTENS_MIN;
u8PwmCyclePhase=1;
mode6_phase1_init();
}
void
discharge_pro(void)
{
}
void
key_pro_system_on()
{
if (u8KeyStatus==KEY_RELEASE)
{
bFlagKeyProcess=FALSE;
/* if (bFlagKeyPauseChk)
{
send_rf_key_pause();
bFlagKeyPauseChk=FALSE;
}*/
}
if ((u8KeyStatus!=KEY_RELEASE)&&(bFlagKeyProcess==FALSE))
{
switch (u8KeyValue)
{
case KEY_ON:
// if (u8KeyStatus==KEY_KEEP_1S)
// {
bFlagKeyPauseChk=FALSE;
system_off_init();
//send_rf_key_off();
bFlagKeyProcess=TRUE;
// }
// else
// bFlagKeyPauseChk=TRUE;
//rfTxBufferFill();
break;
default:
break;
}
}
}
void
key_pro_system_off()
{
if (u8KeyStatus==KEY_RELEASE)
{
bFlagKeyProcess=FALSE;
}
if ((u8KeyStatus!=KEY_RELEASE)&&(bFlagKeyProcess==FALSE))
{
bFlagKeyProcess=TRUE;
switch (u8KeyValue)
{
case KEY_ON:
system_on_init();
send_rf_key_on();
break;
default:
break;
}
}
}
void
led_pro_system_on()
{
if (u8LedFlashCount>u16LedFlashSet[u8IntensityLevel][1])
{
led_off();
}
else
led_on();
u8LedFlashCount++;
if (u8LedFlashCount>u16LedFlashSet[u8IntensityLevel][0])
{
u8LedFlashCount=0;
}
}
void
led_pro_device_mode()
{
led_flag_clear();
switch (u8DeviceMode)
{
case DEVICE_MODE1:
bFlagLed1=TRUE;
break;
case DEVICE_MODE2:
bFlagLed2=TRUE;
break;
case DEVICE_MODE3:
bFlagLed1=TRUE;
bFlagLed2=TRUE;
break;
case DEVICE_MODE4:
bFlagLed3=TRUE;
break;
case DEVICE_MODE5:
bFlagLed4=TRUE;
break;
case DEVICE_MODE6:
bFlagLed3=TRUE;
bFlagLed4=TRUE;
break;
default:
break;
}
}
void
led_flag_clear()
{
bFlagLed1=FALSE;
}
void
mode_phase_inc(u8 u8PhaseMax)
{
u8PwmCyclePhase++;
if (u8PwmCyclePhase>u8PhaseMax)
{
u8PwmCyclePhase=1;
}
}
void
mode1_phase1_init()
{
u8PwmCyclePhase=1;
u8PwmCycleLittleCount=0;
u8PwmCycleLittleCountBuffer=MODE1_PWM_CYCLE_LITTLE_START;
u8PwmCycleLittleCountEnd=MODE1_PWM_CYCLE_LITTLE_END;
bFlagPwmCycleInc=TRUE;
u8PwmCycleLittleCountOffset=MODE1_PWM_CYCLE_LITTLE_OFFSET;
u8PwmOnCycleLittleCountEnd=MODE1_PWM_ON_CYCLE_LITTLE_END;
u8PwmOnCycleLittleCount=MODE1_PWM_ON_CYCLE_LITTLE_START;
bFlagPwmOnCycleInc=TRUE;
u8PwmOnCycleLittleCountOffset=MODE1_PWM_ON_CYCLE_LITTLE_OFFSET;
u8PwmCycleMidRepeat=1;
u8PwmCycleMidRepeatMax=MODE1_PWM_CYCLE_MID_REPEAT_MAX;
u16PwmCycleMidCount=1;
u16PwmCycleMidCountMax=MODE1_PWM_CYCLE_MID_MAX;
//clear flag for phase end/cycle end
bFlagPwmPhaseEnd=FALSE;
bFlagPwmCycleEnd=FALSE;
}
void mode2_phase1_init()
{
u8PwmCyclePhase=1;
u8PwmCycleLittleCount=0;
u8PwmCycleLittleCountBuffer=MODE2_PWM_CYCLE_LITTLE_START;
u8PwmCycleLittleCountEnd=MODE2_PWM_CYCLE_LITTLE_END;
bFlagPwmCycleInc=FALSE;
u8PwmCycleLittleCountOffset=MODE2_PWM_CYCLE_LITTLE_OFFSET;
u8PwmOnCycleLittleCountEnd=MODE2_PWM_ON_CYCLE_LITTLE_END;
u8PwmOnCycleLittleCount=MODE2_PWM_ON_CYCLE_LITTLE_START;
bFlagPwmOnCycleInc=TRUE;
u8PwmOnCycleLittleCountOffset=MODE2_PWM_ON_CYCLE_LITTLE_OFFSET;
u8PwmCycleMidRepeat=1;
u8PwmCycleMidRepeatMax=MODE2_PWM_CYCLE_MID_REPEAT_MAX;
u16PwmCycleMidCount=1;
u16PwmCycleMidCountMax=MODE2_PWM_CYCLE_MID_MAX;
//clear flag for phase end/cycle end
bFlagPwmPhaseEnd=FALSE;
bFlagPwmCycleEnd=FALSE;
}
void mode2_phase5_init()
{
u8PwmCyclePhase=5;
u8PwmCycleLittleCount=0;
u8PwmCycleLittleCountBuffer=202;
u8PwmCycleLittleCountEnd=202;
bFlagPwmCycleInc=TRUE;
u8PwmCycleLittleCountOffset=0;
u8PwmOnCycleLittleCountEnd=202;
u8PwmOnCycleLittleCount=202;
bFlagPwmOnCycleInc=FALSE;
u8PwmOnCycleLittleCountOffset=0;
u8PwmCycleMidRepeat=1;
u8PwmCycleMidRepeatMax=1;
u16PwmCycleMidCountMax=1;
u16PwmCycleMidCount=1;
//clear flag for phase end/cycle end
bFlagPwmPhaseEnd=FALSE;
bFlagPwmCycleEnd=FALSE;
}
void mode3_phase1_init()
{
u8PwmCyclePhase=1;
u8PwmCycleLittleCount=0;
u8PwmCycleLittleCountBuffer=MODE3_PWM_CYCLE_LITTLE_START;
u8PwmCycleLittleCountEnd=MODE3_PWM_CYCLE_LITTLE_END;
bFlagPwmCycleInc=TRUE;
u8PwmCycleLittleCountOffset=MODE3_PWM_CYCLE_LITTLE_OFFSET;
u8PwmOnCycleLittleCountEnd=MODE3_PWM_ON_CYCLE_LITTLE_END;
u8PwmOnCycleLittleCount=MODE3_PWM_ON_CYCLE_LITTLE_START;
bFlagPwmOnCycleInc=TRUE;
u8PwmOnCycleLittleCountOffset=MODE3_PWM_ON_CYCLE_LITTLE_OFFSET;
u8PwmCycleMidRepeat=1;
u8PwmCycleMidRepeatMax=MODE3_PWM_CYCLE_MID_REPEAT_MAX;
u16PwmCycleMidCount=1;
u16PwmCycleMidCountMax=MODE3_PWM_CYCLE_MID_MAX;
//clear flag for phase end/cycle end
bFlagPwmPhaseEnd=FALSE;
bFlagPwmCycleEnd=FALSE;
}
void mode3_phase3_init()
{
u8PwmCyclePhase=3;
u16PwmOffCycle=MODE3_PWM_OFF_CYCLE_LITTLE_MAX;
}
void
mode6_phase1_init()
{
pwm_cycle_count_reset();
u8PwmCycleLittleCountBuffer=PWM_PRO1_CYCLE_LITTLE_START;
u8PwmCycleLittleCountEnd=40;
u8PwmOnCycleLittleCountEnd=40;
u8PwmOnCycleLittleCount=40;
bFlagPwmCycleInc=FALSE;
u8PwmCycleLittleCountOffset=6;
bFlagPwmOnCycleInc=TRUE;
u8PwmOnCycleLittleCountOffset=0;
u8PwmCycleMidRepeat=1;
u8PwmCycleMidRepeatMax=PWM_PRO1_CYCLE_MID_MAX;
u16PwmCycleMidCountMax=403;
u16PwmCycleMidCount=1;
//clear flag for phase end/cycle end
bFlagPwmPhaseEnd=FALSE;
bFlagPwmCycleEnd=FALSE;
}
void
mode6_phase3_1_init()
{
pwm_cycle_count_reset();
u8PwmCycleLittleCountBuffer=82;
u8PwmCycleLittleCountEnd=82;
bFlagPwmCycleInc=TRUE;
u8PwmCycleLittleCountOffset=0;
u8PwmOnCycleLittleCountEnd=82;
u8PwmOnCycleLittleCount=82;
bFlagPwmOnCycleInc=TRUE;
u8PwmOnCycleLittleCountOffset=0;
u8PwmCycleMidRepeat=1;
u8PwmCycleMidRepeatMax=1;
u16PwmCycleMidCountMax=1;
u16PwmCycleMidCount=1;
//clear flag for phase end/cycle end
bFlagPwmPhaseEnd=FALSE;
bFlagPwmCycleEnd=FALSE;
}
void
mode6_phase5_init()
{
// pwm_cycle_count_reset();
u8PwmCycleLittleCount=0;
u8PwmCycleLittleCountBuffer=PWM_PRO1_CYCLE_LITTLE_END+2;
u8PwmCycleLittleCountEnd=PWM_PRO1_CYCLE_LITTLE_END+2;
bFlagPwmCycleInc=TRUE;
u8PwmCycleLittleCountOffset=0;
u8PwmOnCycleLittleCountEnd=PWM_PRO1_CYCLE_LITTLE_END+2;
u8PwmOnCycleLittleCount=5;
bFlagPwmOnCycleInc=TRUE;
u8PwmOnCycleLittleCountOffset=3;
u8PwmCycleMidRepeat=1;
u8PwmCycleMidRepeatMax=1;
u16PwmCycleMidCountMax=40;
u16PwmCycleMidCount=1;
//clear flag for phase end/cycle end
bFlagPwmPhaseEnd=FALSE;
bFlagPwmCycleEnd=FALSE;
}
void
mode6_phase11_1_init()
{
bFlagPwmPro3Run=TRUE;
}
void
mode6_phase11_2_init()
{
u8PwmCycleLittleCount=0;
u8PwmCycleLittleCountBuffer=PWM_PRO1_CYCLE_LITTLE_END+2;
u8PwmCycleLittleCountEnd=PWM_PRO1_CYCLE_LITTLE_END+2;
bFlagPwmCycleInc=TRUE;
u8PwmCycleLittleCountOffset=0;
u8PwmOnCycleLittleCountEnd=PWM_PRO1_CYCLE_LITTLE_END+2;
u8PwmOnCycleLittleCount=4;
bFlagPwmOnCycleInc=TRUE;
u8PwmOnCycleLittleCountOffset=2;
u8PwmCycleMidRepeat=1;
u8PwmCycleMidRepeatMax=1;
u16PwmCycleMidCountMax=81;
u16PwmCycleMidCount=1;
//clear flag for phase end/cycle end
bFlagPwmPhaseEnd=FALSE;
bFlagPwmCycleEnd=FALSE;
}
void
mode6_phase11_3_init()
{
u8PwmCycleLittleCount=0;
u8PwmCycleLittleCountBuffer=PWM_PRO1_CYCLE_LITTLE_END+2;
u8PwmCycleLittleCountEnd=PWM_PRO1_CYCLE_LITTLE_END+2;
bFlagPwmCycleInc=TRUE;
u8PwmCycleLittleCountOffset=0;
u8PwmOnCycleLittleCountEnd=4;
u8PwmOnCycleLittleCount=PWM_PRO1_CYCLE_LITTLE_END+2;
bFlagPwmOnCycleInc=FALSE;
u8PwmOnCycleLittleCountOffset=2;
u8PwmCycleMidRepeat=1;
u8PwmCycleMidRepeatMax=1;
u16PwmCycleMidCountMax=19;
u16PwmCycleMidCount=1;
//clear flag for phase end/cycle end
bFlagPwmPhaseEnd=FALSE;
bFlagPwmCycleEnd=FALSE;
}
void
mode6_phase17_1_init()
{
bFlagPwmPro3Run=TRUE;
}
void
mode6_phase17_2_init()
{
u8PwmCycleLittleCount=0;
u8PwmCycleLittleCountBuffer=202;
u8PwmCycleLittleCountEnd=202;
bFlagPwmCycleInc=TRUE;
u8PwmCycleLittleCountOffset=0;
u8PwmOnCycleLittleCountEnd=202;
u8PwmOnCycleLittleCount=202;
bFlagPwmOnCycleInc=FALSE;
u8PwmOnCycleLittleCountOffset=0;
u8PwmCycleMidRepeat=1;
u8PwmCycleMidRepeatMax=1;
u16PwmCycleMidCountMax=1;
u16PwmCycleMidCount=1;
//clear flag for phase end/cycle end
bFlagPwmPhaseEnd=FALSE;
bFlagPwmCycleEnd=FALSE;
}
void
mode6_phase17_1_deinit()
{
bFlagPwmPro3Run=FALSE;
}
void
rf_pro()
{
if (u8RfAckCount)
{
u8RfAckCount--;
send_rf_ack();
}
else
{
if(u8TimerRf4ms>5)
{
pl1167_receive_data(u8RfRxBuffer,7);
if(bFlagRfRxGet)
{
bFlagRfRxGet=FALSE;
if (u8RfRxBuffer[6]=(u8RfRxBuffer[1]^u8RfRxBuffer[2]^u8RfRxBuffer[3]^u8RfRxBuffer[4]^u8RfRxBuffer[5]))
{
if ((u8RfRxBuffer[0]==0X06)&&(u8RfRxBuffer[1]==RF_SYNC))
{
u8TimerRf4ms=0;
u8RfTxBuffer[5]=u8RfRxBuffer[4]; //send ack every cmd
switch (u8RfRxBuffer[4])
{
case RF_CMD_RC_OFF:
system_off_init();
send_rf_ack_start();
break;
case RF_CMD_RC_ON:
system_on_init();
send_rf_ack_start();
break;
case RF_CMD_RC_LOCK:
bFlagKeyLock=TRUE;
bFlagPwmDischarge=TRUE;
u8DischargeCount=1;
pwm1_set_period(23726);
pwm1_set_duty(0);
pwm2_set_duty(20904);
pwm3_set_duty(20904);
send_rf_ack_start();
break;
case RF_CMD_RC_UNLOCK:
bFlagKeyLock=FALSE;
u16Pwm1Duty=u16Pwm1DutySave;
send_rf_ack_start();
break;
case RF_CMD_RC_TIMER:
if (u8TimerMode>TIMER_MODE_50M)
{
u8TimerMode=TIMER_MODE_10M;
}
else
u8TimerMode+=10;
u8TimerSecondsCountDown=0;
switch (u8TimerMode)
{
case TIMER_MODE_10M:
default:
u8TimerMinutesCountDown=10;
break;
case TIMER_MODE_20M:
u8TimerMinutesCountDown=20;
break;
case TIMER_MODE_30M:
u8TimerMinutesCountDown=30;
break;
case TIMER_MODE_40M:
u8TimerMinutesCountDown=40;
break;
case TIMER_MODE_50M:
u8TimerMinutesCountDown=50;
break;
case TIMER_MODE_60M:
u8TimerMinutesCountDown=60;
break;
}
send_rf_ack_start();
break;
case RF_CMD_RC_MODE:
u8DeviceMode=u8RfRxBuffer[5];
bFlagPwmDischarge=TRUE;
u8DischargeCount=1;
//u8DischargeDuty=180;
pwm1_set_period(23726);
pwm1_set_duty(0);
pwm2_set_duty(20904);
pwm3_set_duty(20904);
// pwm1_set_period(200);
// pwm1_set_duty(0);
// pwm2_set_duty(u8DischargeDuty);
// pwm3_set_duty(u8DischargeDuty);
switch (u8DeviceMode)
{
default:
case DEVICE_MODE1:
device_mode1_init();
break;
case DEVICE_MODE2:
device_mode2_init();
break;
case DEVICE_MODE3:
device_mode3_init();
break;
case DEVICE_MODE4:
device_mode4_init();
break;
case DEVICE_MODE5:
device_mode5_init();
break;
case DEVICE_MODE6:
device_mode6_init();
break;
}
u16Pwm1Duty=u16Pwm1DutySet[u8IntensityLevel];
u16Pwm1DutySave=u16Pwm1Duty;
send_rf_ack_start();
break;
case RF_CMD_RC_INTENS_INC:
if (u8IntensityLevel<INTENS_MAX)
{
u8IntensityLevel++;
}
else
u8IntensityLevel=INTENS_MAX;
u16Pwm1Duty=u16Pwm1DutySet[u8IntensityLevel];
u16Pwm1DutySave=u16Pwm1Duty;
send_rf_ack_start();
break;
case RF_CMD_RC_INTENS_DEC:
if (u8IntensityLevel>INTENS_MIN)
{
u8IntensityLevel--;
}
else
u8IntensityLevel=INTENS_MIN;
u16Pwm1Duty=u16Pwm1DutySet[u8IntensityLevel];
u16Pwm1DutySave=u16Pwm1Duty;
send_rf_ack_start();
break;
}
}
}
u8RfRxBuffer[0]=0;
u8RfRxBuffer[1]=0;
u8RfRxBuffer[2]=0;
u8RfRxBuffer[3]=0;
u8RfRxBuffer[4]=0;
u8RfRxBuffer[5]=0;
u8RfRxBuffer[6]=0;
}
}
}
}
void
send_rf_key_mode()
{
}
void
send_rf_key_off()
{
u8RfTxBuffer[5]=RF_CMD_DEVICE_OFF;
send_rf_ack_start();
}
void
send_rf_key_on()
{
}
void
send_rf_key_pause()
{
}
void
send_rf_ack()
{
u8RfTxBuffer[0]=0x06;
u8RfTxBuffer[1]=RF_SYNC;
u8RfTxBuffer[2]=RF_CMD_LENGTH6;
u8RfTxBuffer[3]=MAINBOARD1;
u8RfTxBuffer[4]=RF_CMD_DEVICE_ACK;
//u8RfTxBuffer[5]=0x00;
u8RfTxBuffer[6]=u8RfTxBuffer[1]^u8RfTxBuffer[2]^u8RfTxBuffer[3]^u8RfTxBuffer[4]^u8RfTxBuffer[5];
pl1167_send_data(u8RfTxBuffer,7);
}
void
send_rf_key_inc()
{
u8RfTxBuffer[0]=0x06;
u8RfTxBuffer[1]=RF_SYNC;
u8RfTxBuffer[2]=RF_CMD_LENGTH6;
u8RfTxBuffer[3]=REMOTE_CONTROL;
u8RfTxBuffer[4]=RF_CMD_RC_INTENS_INC;
u8RfTxBuffer[5]=0X00;
u8RfTxBuffer[6]=u8RfTxBuffer[1]^u8RfTxBuffer[2]^u8RfTxBuffer[3]^u8RfTxBuffer[4]^u8RfTxBuffer[5];
pl1167_send_data(u8RfTxBuffer,7);
}
void
send_rf_ack_start()
{
u8RfAckCount=RF_ACK_COUNT_MAX;
send_rf_ack();
}
void
System_init()
{
timer_reset();
pl1167_init();
bFlagDcPowerOn=false;
}
void
system_on_init()
{
GPIO_Init(GPIOD, (GPIO_Pin_TypeDef)(GPIO_PIN_4), GPIO_MODE_OUT_PP_LOW_SLOW);
GPIO_Init(GPIOD, (GPIO_Pin_TypeDef)(GPIO_PIN_2|GPIO_PIN_3), GPIO_MODE_OUT_PP_HIGH_SLOW);
delay(10000);
GPIO_Init(GPIOD, (GPIO_Pin_TypeDef)(GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4), GPIO_MODE_OUT_PP_LOW_SLOW);
/*CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER2, ENABLE);
TIM2_DeInit();
//GPIO_Init(GPIOD, (GPIO_Pin_TypeDef)(GPIO_PIN_4), GPIO_MODE_OUT_PP_LOW_FAST);
//GPIO_Init(GPIOD, (GPIO_Pin_TypeDef)(GPIO_PIN_2|GPIO_PIN_3), GPIO_MODE_OUT_PP_HIGH_FAST);
//delay(20000);
TIM2_TimeBaseInit(TIM2_PRESCALER_4, PWM1_PERIOD);
TIM2_ARRPreloadConfig(ENABLE);
TIM2_UpdateRequestConfig(TIM2_UPDATESOURCE_REGULAR);
TIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE, 0x0000, TIM2_OCPOLARITY_HIGH);
TIM2_OC1PreloadConfig(ENABLE);
TIM2_OC2Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE, 0x0000, TIM2_OCPOLARITY_HIGH);
TIM2_OC2PreloadConfig(ENABLE);
TIM2_OC3Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE, 0x0000, TIM2_OCPOLARITY_HIGH);
TIM2_OC3PreloadConfig(ENABLE);
pwm1_set_duty(0);
pwm2_set_duty(0);
pwm3_set_duty(0);
pwm1_start();
*/
u8SystemMode=SYSTEM_ON;
bFlagLed1=TRUE;
//device_mode1_init();
//u16Pwm1Duty=u16Pwm1DutySet[u8IntensityLevel];
//pwm1_start();
//pl1167_receive_enable();
u8TimerMode=TIMER_MODE_20M;
u8TimerMinutesCountDown=20;
u8TimerSecondsCountDown=0;
bFlagKeyLock=FALSE;
u8RfAckCount=0;
}
void
system_off_init()
{
u8SystemMode=SYSTEM_OFF;
bFlagLed1=FALSE;
// all_output_off();
u8RfStatus=RF_IDLE;
TIM2_DeInit();
//u16Pwm1Duty=0;
//pwm1_set_duty(u16Pwm1Duty);
//pwm2_set_duty(0);
//pwm3_set_duty(0);
GPIO_Init(GPIOD, (GPIO_Pin_TypeDef)(GPIO_PIN_4), GPIO_MODE_OUT_PP_LOW_SLOW);
GPIO_Init(GPIOD, (GPIO_Pin_TypeDef)(GPIO_PIN_2|GPIO_PIN_3), GPIO_MODE_OUT_PP_HIGH_SLOW);
delay(50000);
GPIO_Init(GPIOD, (GPIO_Pin_TypeDef)(GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4), GPIO_MODE_OUT_PP_LOW_SLOW);
}
void
timer_reset()
{
u8Timer2ms=0;
u8Timer4ms=0;
u8Timer1m=0;
u8Timer1s=0;
}
void
timer_count_down_pro()
{
if (bFlagTimer1s)
{
bFlagTimer1s=FALSE;
if (u8TimerSecondsCountDown>0)
{
u8TimerSecondsCountDown--;
}
else
{
u8TimerSecondsCountDown=59;
if (u8TimerMinutesCountDown==0)
{
system_off_init();
u8TimerSecondsCountDown=0;
}
else
u8TimerMinutesCountDown--;
}
}
}
#pragma vector=15
__interrupt void timer2_interrupt(void)
{
TIM2_ClearFlag(TIM2_FLAG_UPDATE);
if (bFlagPwmDischarge)
{
if (u8DischargeCount==0)
{
bFlagPwmDischarge=FALSE;
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
PL1167Certify.rar
(3.83 MB, 下载次数: 31)
2018-9-13 17:30 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
zwg0106
时间:
2019-5-30 15:12
正需要,thanks
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1