//=====================================================================
//TITLE:
// 简单说说NVIC
//AUTHOR:
// norains
//DATE:
// Tuesday 20-October-2010
//Environment:
// KEIL MDK 4.0
// STM32F103ZE
//=====================================================================
对于CORTEX-ME而言,NVIC的重要性不言而喻。只不过对于初学者,可能刚开始调试时会遇到一些问题,本篇就简单就几个问题说一说。
1.如何查看NVIC寄存器
如果使用的是MDK,那么查看向量表的地址很简单,只需要查看NVIC_VT0的数值即可。因为NVIC_VTO存储的是中断向量的内存地址,例如,CPU重启之后,其复位后的数值为0x00000000,如图:
当然,也可以重新定位向量表的地址,这个可以简单通过汇编代码实现,如:
LDR R0,= 0x20000000
LDR R1,= 0xE000ED08
STR R0,[R1]
执行完毕之后,NVIC_VT0就指向内存地址0x2000 0000了,如图:
2.如何确定向量表的地址
假如我们的向量表有48个向量,那么对于其所存放的地址有什么特殊要求么?答案自然是有的。我们就以这48个向量为例子。
因为现在向量是48个,和2的整次幂不符合,所以要向上圆整到64。而每一个向量,都是32bit,也就是4Byte,所以整个向量表的大小就是64 * 4 = 256Byte。而对于内存地址来说,地址数值每增加1,其实就是增加一个1Byte。所以,对于这个向量表的起始地址来说,除非是0x00000000,否则一定要能够被256整除。因此可以合法的起始地址可以是0x0000 0000,0x0000 0100,0x0000 0200等。
可能说明有点复杂,起始我们只要抓住一个原则,就是向量表的起始地址一定要能够被向量表的大小整除即可。
分享到:
相关推荐
基于stm32 的 NVIC的应用 适合于初学者
stm32中的nvic介绍,供初学者理解使用
中断简单明了,有51基础一定能看懂,方便简洁,不会就多看几遍
在这里简单介绍一下NVIC(嵌套向量中断控制器)。NVIC就是控制中断响应的。主要由三个参数,一个是中断使能,一个是抢占优先级,还有一个就是响应优先级。(优先级数值越小,优先级别越高) 中断使能很好理解,就是是否...
STM32的NVIC_PriorityGroupConfig使用及优先级分组方式理解
NVIC_Configuration函数用于配置中断源,本例中用到了 RTC秒中断;GPIO_Configuration函数用于配置 PB5口线,作为每秒控制 LED亮灭的控制线; Usart1_Init函数用于配置串口 1,设置了通信速率等;Clock_ini函数用于...
基于STM32芯片,NVIC嵌套中断向量列表控制器的程序,最好在keil环境下结合STM32开发板硬件调试
对ST官方最新固件库中NVIC-Init函数的详细分析,有中文注释,帮助初学者迅速了解整个函数功能和执行流程
LPC中NVIC的使用实例,经测试准确无误
STM32中NVIC的总结,stm32,f10x
STM32实例程序 3.NVIC_test优先级抢占STM32实例程序 3.NVIC_test优先级抢占STM32实例程序 3.NVIC_test优先级抢占STM32实例程序 3.NVIC_test优先级抢占STM32实例程序 3.NVIC_test优先级抢占STM32实例程序 3.NVIC_test...
STM103V100的嵌套向量中断控制器NVIC例程
K60芯片NVIC模块中断相关寄存器配置以及应用举例
电子-STM32中的NVIC.pdf,单片机/嵌入式STM32-F0/F1/F2
曾经开发STM32用过的一些基本应用的源代码,希望对学习嵌入式的同学们有所用处
#define NVIC_PriorityGroup_0 ((u32)0x700) /* 0 bits for pre-emption priority 4 bits for subpriority */ #define NVIC_PriorityGroup_1 ((u32)0x600) /* 1 bits for pre-emption priority 3 bits for ...
重新加深STM32F103系列NVIC中断向量控制器,结合“正点原子”相关教材和《STM32中文参考手册》,写了这篇关于NVIC的总结文档,防止自己忘记后有迹可查。
MDK环境下stm32的NVIC改变中断级别的使用实例
stm32的NVIC_test优先级抢占