#include extern uint8 data g_1mTick; ///< 1ms滴答信号,每隔1ms在SYSTICK定时器被置1,需在大循环使用处清零 int16 idata Power_Currt; /** @brief 低于预警中断与过温中断 @brief 开启低压检测中断后,MCU会对输入电压进行监测,当输入电压低于设定值,则会触发中断 @brief 开启过温保护中断后,MCU会对内部结温进行监测,当内部结温高于设定值,则会触发中断 @date 2022-07-14 */ void LVW_TSD_INT(void) interrupt 0 { if (ReadBit(LVSR, LVWIF)) { if (ReadBit(LVSR, LVWF)) { mcFaultSource = FaultUnderVoltageDC; ClrBit(LVSR, LVWF); } ClrBit(LVSR, LVWIF); } if (TSDIF) { if (ReadBit(LVSR, TSDF)) { ClrBit(LVSR, TSDF); } TSDIF = 0; } } /** @brief 外部中断0 @brief 一般用于响应IPM的FO过流信号 @date 2022-07-14 */ void EXTERN0_INT(void) interrupt 1 // 外部中断0 { if (IF0) { IF0 = 0; // clear P00 interrupt flag } } /** @brief FOC中断(Drv中断),每个载波周期执行一次,用于处理响应较高的程序,中断优先级第二 @date 2022-07-14 */ void DRV_ISR(void) interrupt 3 { if (ReadBit(DRV_SR, DCIF)) // 比较中断 { SetReg(DRV_SR, 0xFF, SYSTIE | FGIF | DCIM1 | SYSTIF); } } /** @brief 定时器3中断服务函数 @note 本例程中用于PWM调速信号捕获 @date 2022-07-14 */ void TIM3_INT(void) interrupt 9 { if (ReadBit(TIM3_CR1, T3IR)) { ClrBit(TIM3_CR1, T3IR); } if (ReadBit(TIM3_CR1, T3IP))//周期中断 { ClrBit(TIM3_CR1, T3IP); } if (ReadBit(TIM3_CR1, T3IF)) { ClrBit(TIM3_CR1, T3IF); } } /** @brief 滴答定时器,默认用于产生1ms定时间隔 @date 2022-07-14 */ void SYStick_INT(void) interrupt 10 { if (ReadBit(DRV_SR, SYSTIF)) // SYS TICK中断 { g_1mTick = 1; if (mcFocCtrl.State_Count > 0) { mcFocCtrl.State_Count--; } SetReg(DRV_SR, 0xFF, SYSTIE | FGIF | DCIF | DCIM1); } } /** @brief 比较器硬件过流保护,该中断仅提供 故障码 赋值,用于状态机的切换。 需要开启比较器CMP3 发生过流 自动清除MOE功能 @date 2022-07-14 */ void CMP3_INT(void) interrupt 12 { if (ReadBit(CMP_SR, CMP3IF)) { if (mcState != mcPosiCheck) { mcFaultSource = FaultHardOVCurrent; // 硬件过流保护 } ClrBit(CMP_SR, CMP3IF); } } void UART2_INT(void) interrupt 14 { }