历史上的今天
今天是:2025年01月15日(星期三)
2019年01月15日 | 关于STM32 NVIC配置的解释
2019-01-15 来源:eefocus
大部分学习用的开发板在配置各个外设的中断优先级时,习惯在每个外设的初始化文件里都进行NVIC group配置,例如在ADC和Usart都有NVIC的配置如下:
ADC中:
void ADC_NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel =ADC1_2_IRQn; //开启ADC_Channel8中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
Usart中:
void NVIC_Configuration(void)
{
/* 结构声明*/
NVIC_InitTypeDef NVIC_InitStructure;
/* Configure the NVIC Preemption Priority Bits */
/* Configure one bit for preemption priority */
/* 优先级组 说明了抢占优先级所用的位数,和响应优先级所用的位数 在这里是0, 4
0组: 抢占优先级占0位, 响应优先级占4位
1组: 抢占优先级占1位, 响应优先级占3位
2组: 抢占优先级占2位, 响应优先级占2位
3组: 抢占优先级占3位, 响应优先级占1位
4组: 抢占优先级占4位, 响应优先级占0位
*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //设置串口1中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级 0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //子优先级为0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能
NVIC_Init(&NVIC_InitStructure);
}
但实际上这种配置是不合理的,即如果假设两个NVIC配置的中断组不同,如果其中一个外设引用了最后配置中断组允许的优先级之外的值,可能会出现冲突。和老师讨论过后,他认为如果之前初始化的优先级较后面优先级组设置的值不合理,前面的中断可能就不能响应,BUT。。。。。
我实验时发现,无论如何更改这两个优先级配置顺序,貌似对我的程序结果没有影响。
当然老师的建议是在工程中建立systemconfig的文件进行中断优先级组及时钟等的配置,即中断优先级组配置只出现一次
上一篇:LPC_11C14平台I2C分析
史海拾趣
|
arm-xscale, arm-iwmmxt这两个有什么区别?? 我要为pxa270编译一个工具链,在网上看有人用arm-xscale ,有人用arm-iwmmxt,iwmmxt是什么?… 查看全部问答> |
|
工程编译目标文件project.out使用属性察看size的大小和实际文件大小问什么不一样? 在Tornado环境下,编译downloadable类型的工程,生成project.out文件,右键察看priority-size大小为:0.68MB左右,而到工程目录下找到project.out文件,其文件大小却为:8MB左右,将project.out下载到目标机,目标机资源占用情况也差 ...… 查看全部问答> |
|
高薪招聘招聘逆向调试人员! 工作地点:吉林省长春市 工作性质: 全职(可兼职) 薪 水: 不求学历,只看实力,薪水看你的能力另谈!(一旦录用,如工作尽职,三个月后可加薪) 岗位职责: 网络游戏安全问题,分析.(外挂、木马等 ...… 查看全部问答> |




