void NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset)这个函数是否有问题?

2019-10-11 16:30发布

void NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset)
{
  /* Check the parameters */
  assert_param(IS_NVIC_VECTTAB(NVIC_VectTab));
  assert_param(IS_NVIC_OFFSET(Offset)); 
  
  SCB->VTOR = NVIC_VectTab | (Offset & (u32)0x1FFF FF80);
}

上面的Offset&(u32)0x1FFFFF80)是否有错啊?因为,NVIC_VTOR寄存器的Offset的位置是bit28-9。也就是说&后面的常数应该是0x1FFF FE00。是不是库函数错了,还是手册上的编辑有错?
另外,我们设定u32 Offset的时候,是否要考虑其在VTOR中的位置?假如,我想在Code寄存器中,从开始偏移3个位置,那么我的u32 Offset的值直接输入3。还是要把3的值左移8位(第8-0位(共9位)为保留位啊~!)再值写入VTOR?
请鲸鱼指点一下上面的两个问题:
1.Offset & (u32)0x1FFF FF80)是否有错?因为Offset在VTOR中的有效空间为bit28-9。
2.函数的第二个参数在输入时是否要事先左移8位?



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
tianheyun
1楼-- · 2019-10-11 20:18
 


正点原子
2楼-- · 2019-10-11 23:59
NND,下载的资料有错:这里的资料显示是bit28:8


moline
3楼-- · 2019-10-12 01:58
我的是e文原版.
正点原子
4楼-- · 2019-10-12 04:59
给一份啊。我要的是原文的,我在百度文库下载了一个是错误的。也是E文版本的。你传到共享上去可否?
moline
5楼-- · 2019-10-12 05:46
 精彩回答 2  元偷偷看……
moline
6楼-- · 2019-10-12 10:07
在我们开发板光盘就有啊.
E:ALIENTEK 光盘资料更新记录ALIENTEK 开发板资料_20120311STM32参考资料

一周热门 更多>