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条回答
正点原子
1楼-- · 2019-10-12 11:24
回复【8楼】正点原子:

---------------------------------
我查了,没有呢。我的光盘里没有你所说的“光盘资料更新记录”文件夹啊。郁闷的很。打包一下给我可以吗?还是上传到群共享吧。谢谢。
moline
2楼-- · 2019-10-12 16:32


真的没有你说的那个文件夹。我找了所有的光盘目录下的PDF,都搜不到你说的那个文件。


 
moline
3楼-- · 2019-10-12 18:18
回复【10楼】moline:
---------------------------------
....
理解能力要提高点哦.
STM32参考资料
这个文件夹才是重点啊!!!!

保险起见,我把文件名也告诉你吧,免得你又说没有e文字样.
ARM Cotrex-M3权威指南(英文).PDF
正点原子
4楼-- · 2019-10-12 18:32
 精彩回答 2  元偷偷看……
moline
5楼-- · 2019-10-12 21:19
本帖最后由 pxkbrsy 于 2017-3-15 09:25 编辑

楼主贴的那份文档,我也有,而且是在st官网下载的
(PM0056
Programming manual
STM32F10xxx/20xxx/21xxx/L1xxxx Cortex-M3 programming manual),
不应该出问题的啊。它跟原子大神贴出的英文原版上的描述确实有所出入啊!!(英文原版我也查看了,也是白纸黑字,如原子大神说的)
求大神解答。

一周热门 更多>