你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

NVIC

[复制链接]
jijune 提问时间:2010-12-28 09:46 /
在库函数中NVIC部分中有一个函数为:NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset)中定义输入参数Offset:向量表基地址的偏移量,如果该参数设定为FLASH时,该参数值必须高于0x08000100;如果该参数设定为RAM则必须高于0x100。而且它同时必须是256的整数倍。而后下面接着给出了一个例子:
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
不明白的地方是1:明明文字描述中说offset值必须得高于0x08000100,而在这里却设的是0x0,难道说0x0要比0x08000100高吗?这个“高”是怎么理解的呀?
2:在例程中有一个SysTick中有一段对NVIC的设定如下
程序(一)
void NVIC_Configuration(void)
{
#ifdef  VECT_TAB_RAM 
  /* Set the Vector Table base location at 0x20000000 */
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else  /* VECT_TAB_FLASH  */
  /* Set the Vector Table base location at 0x08000000 */
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);  
#endif
}
可否帮我解释一下VECT_TAB_RAN是什么意思?它即设定了FLASH的向量表的位置和偏移,又设定了ARM的,这里到底是要做什么?
还有程序关于NVIC的设定为
程序(二)
void NVIC_Config(void)
{
NVIC_InitTypeDef  NVIC_IbutStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel=EXIT2_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannePreemptionPruirity=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=NABLE;
NVIC_Init(&NVIC_InitStructure);
}
想问的是:什么时候将设为NVIC设为程序(一)的形式,什么时候又将其设为程序(二)的形式。
thank you!我是一只小菜鸟,不要嘲笑我哈哈
 
收藏 评论4 发布时间:2010-12-28 09:46

举报

4个回答
废鱼 回答时间:2010-12-28 15:34:22

RE:NVIC

1、如果定义了VECT_TAB_RAM 变量,向量列表就放入NVIC_VectTab_RAM地址,没有则放入NVIC_VectTab_FLASH地址。这里是处理向量列表的存放区域。
2、NVIC_Config();用来配置中断的,而上面是中断向量列表,是2个不同的概念和使用方法。
jijune 回答时间:2010-12-29 15:33:46

回复:NVIC

回复第 2 楼 安 于2010-12-28 07:34:22发表:
1、如果定义了VECT_TAB_RAM 变量,向量列表就放入NVIC_VectTab_RAM地址,没有则放入NVIC_VectTab_FLASH地址。这里是处理向量列表的存放区域。
2、NVIC_Config();用来配置中断的,而上面是中断向量列表,是2个不同的概念和使用方法。 

还有问题:前面明明文字描述中说offset值必须得高于0x08000100,而在这里却设的是0x0,难道说0x0要比0x08000100高吗?这个“高”是怎么理解的呀?
 
you21250619 回答时间:2011-2-23 12:15:25

回复:NVIC

回复第 1 楼 jijune于2010-12-28 01:46:34发表:
在库函数中NVIC部分中有一个函数为:NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset)中定义输入参数Offset:向量表基地址的偏移量,如果该参数设定为FLASH时,该参数值必须高于0x08000100;如果该参数设定为RAM则必须高于0x100。而且它同时必须是256的整数倍。而后下面接着给出了一个例子:
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
不明白的地方是1:明明文字描述中说offset值必须得高于0x08000100,而在这里却设的是0x0,难道说0x0要比0x08000100高吗?这个“高”是怎么理解的呀?
2:在例程中有一个SysTick中有一段对NVIC的设定如下
程序(一)
void NVIC_Configuration(void)
{
#ifdef  VECT_TAB_RAM 
  /* Set the Vector Table base location at 0x20000000 */
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else  /* VECT_TAB_FLASH  */
  /* Set the Vector Table base location at 0x08000000 */
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);  
#endif
}
可否帮我解释一下VECT_TAB_RAN是什么意思?它即设定了FLASH的向量表的位置和偏移,又设定了ARM的,这里到底是要做什么?
还有程序关于NVIC的设定为
程序(二)
void NVIC_Config(void)
{
NVIC_InitTypeDef  NVIC_IbutStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel=EXIT2_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannePreemptionPruirity=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=NABLE;
NVIC_Init(&NVIC_InitStructure);
}
想问的是:什么时候将设为NVIC设为程序(一)的形式,什么时候又将其设为程序(二)的形式。
thank you!我是一只小菜鸟,不要嘲笑我哈哈
 
 
you21250619 回答时间:2011-2-23 12:15:58

回复:NVIC

回复第 1 楼 jijune于2010-12-28 01:46:34发表:
在库函数中NVIC部分中有一个函数为:NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset)中定义输入参数Offset:向量表基地址的偏移量,如果该参数设定为FLASH时,该参数值必须高于0x08000100;如果该参数设定为RAM则必须高于0x100。而且它同时必须是256的整数倍。而后下面接着给出了一个例子:
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
不明白的地方是1:明明文字描述中说offset值必须得高于0x08000100,而在这里却设的是0x0,难道说0x0要比0x08000100高吗?这个“高”是怎么理解的呀?
2:在例程中有一个SysTick中有一段对NVIC的设定如下
程序(一)
void NVIC_Configuration(void)
{
#ifdef  VECT_TAB_RAM 
  /* Set the Vector Table base location at 0x20000000 */
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else  /* VECT_TAB_FLASH  */
  /* Set the Vector Table base location at 0x08000000 */
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);  
#endif
}
可否帮我解释一下VECT_TAB_RAN是什么意思?它即设定了FLASH的向量表的位置和偏移,又设定了ARM的,这里到底是要做什么?
还有程序关于NVIC的设定为
程序(二)
void NVIC_Config(void)
{
NVIC_InitTypeDef  NVIC_IbutStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel=EXIT2_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannePreemptionPruirity=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=NABLE;
NVIC_Init(&NVIC_InitStructure);
}
想问的是:什么时候将设为NVIC设为程序(一)的形式,什么时候又将其设为程序(二)的形式。
thank you!我是一只小菜鸟,不要嘲笑我哈哈
 
 

+问

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版