OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4952|回复: 6

裸机中断实验时,中断优先级设置为31后出问题。

[复制链接]

7

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1279
金钱
1279
注册时间
2017-7-18
在线时间
257 小时
发表于 2020-4-27 14:38:21 | 显示全部楼层 |阅读模式
1金钱
在学习6ull的裸机中断和EPIT中断时,发现只要把中断优先级设置为31就会出错,中断无法执行,设置为30或者其他优先级时可以正常执行。程序没有死机,只是设置了31优先级的这个中断没法正常执行。
//EPIT1的中断配置

    //配置对应的中断
    GIC_SetPriority(EPIT1_IRQn, 31); //设置优先级为31
    GIC_EnableIRQ(EPIT1_IRQn); //使能对应的中断 GPIO1->IO18

    system_register_irqhandler(EPIT1_IRQn,EPIT1_irq_handler,NULL);//注册对应的中断函数

    EPIT1->CR |= (1 << 0); //EPIT1 ENABLE



-------------------------------------------------------------------------------------------------------------------------
/*

* GIC初始化

* 为了简单使用GIC的group0

*/

FORCEDINLINE __STATIC_INLINE void GIC_Init(void)

{

  uint32_t i;

  uint32_t irqRegs;

  GIC_Type *gic = (GIC_Type *)(__get_CBAR() & 0xFFFF0000UL);


  irqRegs = (gic->D_TYPER & 0x1FUL) + 1;



  /* On POR, all SPI is in group 0, level-sensitive and using 1-N model */



  /* Disable all PPI, SGI and SPI */

  for (i = 0; i < irqRegs; i++)

    gic->D_ICENABLER[i] = 0xFFFFFFFFUL;


  /* Make all interrupts have higher priority */

  gic->C_PMR = (0xFFUL << (8 - __GIC_PRIO_BITS)) & 0xFFUL;



  /* No subpriority, all priority level allows preemption */

  gic->C_BPR = 7 - __GIC_PRIO_BITS;



  /* Enable group0 distribution */

  gic->D_CTLR = 1UL;



  /* Enable group0 signaling */

  gic->C_CTLR = 1UL;

}



GIC_Init中也没有改过,gic->C_BPR=2,应该对应的是5位的抢占优先级,不知道为什么设置31的中断优先级不可以。知道的分享一下,还是我别的地方有问题。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2020-4-27 17:23:48 | 显示全部楼层
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2020-4-27 17:29:47 | 显示全部楼层
如果我没记错的话I.MX6ULL最高也就16个优先级吧
开往春天的手扶拖拉机
回复

使用道具 举报

7

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1279
金钱
1279
注册时间
2017-7-18
在线时间
257 小时
 楼主| 发表于 2020-4-27 19:25:19 | 显示全部楼层
zuozhongkai 发表于 2020-4-27 17:29
如果我没记错的话I.MX6ULL最高也就16个优先级吧

手册里说5位控制,应该是32个优先级才对,求左神确认一下。 GICC_BPR = 2; 表格里说的是有5位。
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2020-4-27 21:42:26 | 显示全部楼层
周易八索连山 发表于 2020-4-27 19:25
手册里说5位控制,应该是32个优先级才对,求左神确认一下。 GICC_BPR = 2; 表格里说的是有5位。

这个需要NXP提供资料的,我记得和STM32一样,都是4位,所以优先级只有16位
开往春天的手扶拖拉机
回复

使用道具 举报

7

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1279
金钱
1279
注册时间
2017-7-18
在线时间
257 小时
 楼主| 发表于 2020-4-28 08:38:21 | 显示全部楼层
zuozhongkai 发表于 2020-4-27 21:42
这个需要NXP提供资料的,我记得和STM32一样,都是4位,所以优先级只有16位

AKP~HCJB4B@97}ZC820E25L.png 你们的手册里都说是32个优先级的。。
回复

使用道具 举报

7

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1279
金钱
1279
注册时间
2017-7-18
在线时间
257 小时
 楼主| 发表于 2020-4-30 08:36:26 | 显示全部楼层
顶一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 12:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表