/*! * @brief 启动前进行检测(检测按键是否按下,按下则进入死循环,防止进入 main 函数,松开按键后再按下则进行解锁) * @since v5.0 * @note 此函数可避免 下载口在 main 前 复用了导致无法下载等问题 */ void start_check() { #if 0 uint8 flag = 0; key_init(KEY_A); if(key_check(KEY_A) == KEY_DOWN ) { //按键按下 led_init(LED0); while(1) { if(key_check(KEY_A) == KEY_UP) { flag = 1; } led_turn(LED0); printf("\n进入死循环等待!"); DELAY_MS(500); //此处的延时,可起到 按键 消抖的功能 //如果 送开按键后,再按下 按键,则 进行解锁 操作 if((flag == 1) && (key_check(KEY_A) == KEY_DOWN )) { while(key_check(KEY_A) == KEY_DOWN) //等待按键 弹起 { led_turn(LED0); DELAY_MS(100); //此处的延时,可起到 按键 消抖的功能 } while(key_check(KEY_A) == KEY_UP) //等待按键 弹起后 再 进行解锁 { led_turn(LED0); DELAY_MS(50); //此处的延时,可起到 按键 消抖的功能 } printf("\n进行解锁操作,请重新刷入固件"); //解锁单片机 flash_init(); DELAY_MS(100); flash_erase_sector(0); //擦除扇区 0 (解锁) NVIC_SystemReset(); //复位单片机 } } } #endif }
void PIT_IRQHandler(void) { //TpmCountRead(); Speed.Acturally = tpm_pulse_get(TPM2); //Speed.Acturally = (tpm_pulse_get(TPM2) * WheelGirth) / (CordLineInOneCircle * CoderTimeCircle); //保存脉冲计数器计算值 MotorCtrl(); extern uint32 mpwm; //printf("$%d,1000,%d,0,0,0,0,0#", Speed.Acturally, mpwm); tpm_pulse_clean(TPM2); //清空脉冲计数器计算值(开始新的计数) led_turn(LED3); PIT_Flag_Clear(PIT0); }