打印
[N32G43x]

请教NVIC在例程中NVIC初始化位置、分组问题

[复制链接]
344|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 不知其所以然 于 2022-11-30 11:17 编辑

     1、在EXTI例程里面没有找到NVIC初始化的位置,对应初始化函数是NVIC_Priority_Group_Set();但是在程序中没看到该函数的调用,不配置抢占和响应优先级的分组也是可以的吗
   2、 在I2C_Master_Int例程里面   
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 4;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority        = 1;
    NVIC_InitStructure.NVIC_IRQChannelCmd                = ENABLE;
    NVIC_Initializes(&NVIC_InitStructure);
然后在misc.c中有说如果是4位抢占优先级的话响应优先级就是0位,这个地方是设置成了1。
   3、在430的用户手册里面对NVIC的详细介绍似乎也没找到,只有一句:16 个可编程优先级(使用 4 位中断优先级),对于在程序中的寄存器应该去哪个文件寻找

捕获.PNG (403.2 KB )

捕获.PNG

使用特权

评论回复
沙发
JhonsonChou| | 2022-11-30 16:14 | 只看该作者
1.1.1 NVIC分组设置
void NVIC_SetPriorityGrouping(uint32_tPriorityGroup)
位置:misc.c的106行
作用:设置优先级分组
参数:PriorityGroup优先级分组组号,这里对内核的分组做了简化,即从NVIC_PriorityGroup_0到NVIC_PriorityGroup_4代表抢占优先级位数从0bit到4bit,响应优先级位数从4bit到0bit
举例:优先级分组设置为组2,则对应的代码为:NVIC_SetPriorityGrouping(NVIC_PriorityGroup_2);
1.1.2 NVIC初始化配置
voidNVIC_Init(NVIC_InitType* NVIC_InitStruct)
位置:misc.c的121行
作用:NVIC初始化配置
参数:NVIC_InitStruct初始化结构体,其中关于中断优先级的成员为NVIC_InitStruct.NVIC_IRQChannelSubPriority和NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority,分别为抢占优先级和响应优先级,受限于优先级分组的简化,这里的优先级取值范围为0-15
举例:设置串口1全局中断抢占优先级为2,响应优先级为2,则对应的代码如下:
1.       NVIC_InitType NVIC_InitStructure;
2.       NVIC_SetPriorityGrouping(NVIC_PriorityGroup_2);
3.       NVIC_InitStructure.NVIC_IRQChannel                                       =USART1_IRQn;
4.       NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority   = 2;
5.       NVIC_InitStructure.NVIC_IRQChannelSubPriority                   = 2;
6.       NVIC_InitStructure.NVIC_IRQChannelCmd                              = ENABLE;
7.       NVIC_Init(&NVIC_InitStructure);


使用特权

评论回复
评论
JhonsonChou 2022-12-1 15:42 回复TA
@不知其所以然 :1、有多个中断想实现不同的优先级配置的话,还是需要进行抢占和响应的分组的;2、默认未分组的情况下,抢占占4位,响应配多少都不会有影响;3、NVIC寄存器就去M4内核手册上看,介绍得很详细 
不知其所以然 2022-12-1 09:26 回复TA
感谢回复,但是我想了解以下三个问题: 1、在例程EXTI中不进行NVIC_Priority_Group_Set的使用即不进行抢占和响应的分组是可以的吗 2、在例程master_Int中把抢占分配成4位,那么响应应该不能配置了,为什么还可以设置成1 3、有关NVIC寄存器的介绍应该去哪里找(最后这个问题可以在cm4手册《Cortex™-M4 Devices Generic User Guide》中有说) 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

7

帖子

0

粉丝