| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- #include <MyProject.h>
- int16 idata Power_Currt;
- extern bool data TickFlag;
- /**
- @brief 低于预警中断与过温中断
- @brief 开启低压检测中断后,MCU会对输入电压进行监测,当输入电压低于设定值,则会触发中断
- @brief 开启过温保护中断后,MCU会对内部结温进行监测,当内部结温高于设定值,则会触发中断
- @date 2022-07-14
- */
- void LVW_TSD_INT(void) interrupt 0
- {
- if (ReadBit(LVSR, LVWIF))
- {
- if (ReadBit(LVSR, LVWF))
- {
- FaultSource = MCU_LVM;
- 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);
- }
- }
- /**
- @function TIM3_INT_Handle
- @brief 定时器2中断
- @date 2025-12-24
- */
- void TIM3_INT_Handle(void) interrupt 9
- {
- if (ReadBit(TIM3_CR1, T3IR))
- { ClrBit(TIM3_CR1, T3IR); }
-
- if (ReadBit(TIM3_CR1, T3IP))
- {
- if (!inputCapture.UpdateFlag)
- {
- inputCapture.TimerARR = TIM3__ARR;
- inputCapture.TimerDR = TIM3__DR;
- inputCapture.UpdateFlag = 1;
- }
-
- ClrBit(TIM3_CR1, T3IP);
- }
-
- if (ReadBit(TIM3_CR1, T3IF))
- {
- if (!inputCapture.UpdateFlag)
- {
- if (GP11)
- {
- inputCapture.TimerARR = 60000;
- inputCapture.TimerDR = 60000;
- }
- else
- {
- inputCapture.TimerARR = 60000;
- inputCapture.TimerDR = 0;
- }
-
- inputCapture.UpdateFlag = 1;
- }
-
- ClrBit(TIM3_CR1, T3IF);
- }
- }
- /**
- @brief 滴答定时器,默认用于产生1ms定时间隔
- @date 2022-07-14
- */
- void SYStick_INT(void) interrupt 10
- {
- if (ReadBit(DRV_SR, SYSTIF)) // SYS TICK中断
- {
- TickFlag = true;
-
- 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))
- { ClrBit(CMP_SR, CMP3IF); }
- }
- void UART2_INT(void) interrupt 14
- {
- }
|