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

查看: 6460|回复: 4

NVIC

[复制链接]

9

主题

11

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2010-12-28 09: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!我是一只小菜鸟,不要嘲笑我哈哈
 
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2010-12-28 15:34:22 | 显示全部楼层

RE:NVIC

1、如果定义了VECT_TAB_RAM 变量,向量列表就放入NVIC_VectTab_RAM地址,没有则放入NVIC_VectTab_FLASH地址。这里是处理向量列表的存放区域。
2、NVIC_Config();用来配置中断的,而上面是中断向量列表,是2个不同的概念和使用方法。
回复 支持 反对

使用道具 举报

9

主题

11

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 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高吗?这个“高”是怎么理解的呀?
 
回复 支持 反对

使用道具 举报

0

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 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!我是一只小菜鸟,不要嘲笑我哈哈
 
 
回复 支持 反对

使用道具 举报

0

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 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管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版