阅读nvic:系统中断管理。
我的理解——管理系统内部的中断,负责打开和关闭中断。
基础应用1,中断的初始化函数,包括设置中断向量表位置,和开启所需的中断两部分。所有程序中必须的。
用法: void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;//中断管理恢复默认参数
#ifdef VECT_TAB_RAM
//如果C/C++ Compiler\Preprocessor\Defined symbols中的定义了VECT_TAB_RAM(见程序库更改内容的表格)
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); //则在RAM调试
#else //如果没有定义VECT_TAB_RAM
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);//则在Flash里调试
#endif //结束判断语句
//以下为中断的开启过程,不是所有程序必须的。
//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//设置NVIC优先级分组,方式。
//注:一共16个优先级,分为抢占式和响应式。两种优先级所占的数量由此代码确定,NVIC_PriorityGroup_x可以是0、1、 2、3、4,分别代表抢占优先级有1、2、4、8、16个和响应优先级有16、8、4、2、1个。规定两种优先级的数量后,所有的中断级别必须在其中选择,抢占级别高的会打断其他中断优先执行,而响应级别高的会在其他中断执行完优先执行。
//NVIC_InitStructure.NVIC_IRQChannel = 中断通道名;
//开中断,中断名称见函数库
//NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
//抢占优先级
//NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
//响应优先级
//NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//启动此通道的中断
//NVIC_Init(&NVIC_InitStructure); //中断初始化
}
|