代碼用于客戶產品的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
|