| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- #include <MyProject.h>
- 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
- {
- }
|