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

查看: 6509|回复: 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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版