sindge 发表于 2025-8-2 16:31:59

求助:15W4K58S4的中断4可以设置中断优先级吗 | 固定最低优先级 0

数据手册上PX4 可以设置INT4的中断优先级,但是提供的库函数里INT4默认将中断优先级设置为0.请问INT4可以设置中断优先级吗?

//========================================================================
// 函数: u8      Ext_Inilize(u8 EXT, EXTI_InitTypeDef *INTx)
// 描述: 外部中断初始化程序.
// 参数: INTx: 结构参数,请参考Exti.h里的定义.
// 返回: 成功返回0, 空操作返回1,错误返回2.
// 版本: V1.0, 2012-10-22
//========================================================================
u8      Ext_Inilize(u8 EXT, EXTI_InitTypeDef *INTx)
{
      if(EXT >EXT_INT4)      return 1;      //空操作
      
      if(EXT == EXT_INT0)      //外中断0
      {
                if(INTx->EXTI_Interrupt == ENABLE)                EX0 = 1;      //允许中断
                else                                                                        EX0 = 0;      //禁止中断
                if(INTx->EXTI_Polity == PolityHigh)                PX0 = 1;      //高优先级中断
                else                                                                        PX0 = 0;      //低优先级中断
                if(INTx->EXTI_Mode == EXT_MODE_Fall)      IT0 = 1;      //下降沿中断
                else                                                                        IT0 = 0;      //上升,下降沿中断
                return      0;                //成功
      }

      if(EXT == EXT_INT1)      //外中断1
      {
                if(INTx->EXTI_Interrupt == ENABLE)                EX1 = 1;      //允许中断
                else                                                                        EX1 = 0;      //禁止中断
                if(INTx->EXTI_Polity == PolityHigh)                PX1 = 1;      //高优先级中断
                else                                                                        PX1 = 0;      //低优先级中断
                if(INTx->EXTI_Mode == EXT_MODE_Fall)      IT1 = 1;      //下降沿中断
                else                                                                        IT1 = 0;      //上升,下降沿中断
                return      0;                //成功
      }

      if(EXT == EXT_INT2)                //外中断2, 固定为下降沿低优先级中断
      {
                if(INTx->EXTI_Interrupt == ENABLE)      INT_CLKO |=(1 << 4);      //允许中断      
                else                                                                INT_CLKO &= ~(1 << 4);      //禁止中断
                return      0;                //成功
      }

      if(EXT == EXT_INT3)                //外中断3, 固定为下降沿低优先级中断
      {
                if(INTx->EXTI_Interrupt == ENABLE)      INT_CLKO |=(1 << 5);      //允许中断      
                else                                                                INT_CLKO &= ~(1 << 5);      //禁止中断
                return      0;                //成功
      }

      if(EXT == EXT_INT4)                //外中断4, 固定为下降沿低优先级中断
      {
                if(INTx->EXTI_Interrupt == ENABLE)      INT_CLKO |=(1 << 6);      //允许中断      
                else                                                                INT_CLKO &= ~(1 << 6);      //禁止中断
                return      0;                //成功
      }
      return 2;      //失败
}

神农鼎 发表于 2025-8-2 18:25:12


INT2/INT3/INT4, 固定最低优先级 0;
无中断优先级控制位






https://www.stcaimcu.com/data/download/Datasheet/STC15-CN.pdf

vb2002 发表于 2025-8-2 18:31:50

手册上面都标注有的哦.
页: [1]
查看完整版本: 求助:15W4K58S4的中断4可以设置中断优先级吗 | 固定最低优先级 0