赞
踩
1. 通常,把CPU内部产生的紧急事件叫做异常,比如非法指令(除零)、地址访问越界等;把来自CPU外
部的片上外设产生的紧急事件叫做中断,比如GPIO引脚电平变化、定时器溢出等。异常和中断的效果基本
一致,都是暂停当前任务,优先执行紧急事件,因此一般将中断和异常统称为中断。
2. 在Cortex-M3中,将优先级拆分为抢占优先级(Preempt Priority)和子优先级(Subpriority),每个中断都需要指定这两级,具有高优先级的中断可以打断低优先级的中断,实现中断嵌套。通过应用中断和复位控制寄存器(Application Interrupt and Reset Control Register,AIRCR)的Bits[10:8](PRIGROUP)将优先级分组。分组决定每个可编程中断的PRI_n的Bits[7:0]的高低位分配,从而影响抢占优先和子优先级的级数,
3. 可以在初始化的时候使用函数HAL_NVIC_SetPriorityGrouping();来选择中断怎么分组
a. 这个函数在hal库中,HAL_Init()函数里面有被调用
4. 在开启一个中断之前也需要对中断进行优先级设置,使用函数HAL_NVIC_SetPriority()。
5. 开启中断使用函数HAL_NVIC_EnableIRQ()
6. 中断优先级的理解
a. 数字越小,优先级越高
b. 抢占优先级高的中断可以打断抢占优先级低的中断
c. 如果两个中断是同时发生的,而且两个中断的抢占优先级相同,就得看子优先级了,子优先级高 的先执行中断处理,如果子优先级也相同,就得看启动文件中中断向量表的先后顺序,顺序先的先执行
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。