历史上的今天
返回首页

历史上的今天

今天是:2025年01月08日(星期三)

正在发生

2019年01月08日 | STM32中断向量表偏移量0x200详解

2019-01-08 来源:eefocus

ST公司重定位向量表的库函数:

void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset)

 

  assert_param(IS_NVIC_VECTTAB(NVIC_VectTab));

  assert_param(IS_NVIC_OFFSET(Offset));  

   

  SCB->VTOR = NVIC_VectTab | (Offset & (uint32_t)0x1FFFFF80);

}


其中NVIC_VectTab要么是FLASH要么是RAM的起始位置,Offset: Vector Table base offset field. This value must be a multiple of 0x200,这里先是IS_NVIC_OFFSET(OFFSET)  ((OFFSET) < 0x000FFFFF)断言机制,ST公司技术支持给我的回信是这么说的“The max flash size is 1MB, that is 0x100000, so the vector table must be placed within this address range, so ((OFFSET) < 0x000FFFFF) is checked.”f10x 内置flash最大也就512K,SRAM内置是64k,并没有看到官方人员说的1MB,我想这些断言机制恐怕也是为了给很多芯片共同使用而写的,也就是说实际还是要自己小心着用啊~

然后(Offset & (uint32_t)0x1FFFFF80)事实上就是取了Offset的[28:7]位。但是你还是需要人为让其为0x200的倍数,至于为什么,在ARM官方给出的Cortex-m3 technial reference manul中是这么说的:The Vector Table Offset Register positions the vector table in CODE or SRAM space. The default, on reset, is 0 (CODE space). When setting a position, the offset must be aligned based on the number of exceptions in the table. This means that the minimal alignment is 32 words that you can use for up to 16 interrupts. For more interrupts, you must adjust the alignment by rounding up to the next power of two. For example, if you require 21 interrupts, the alignment must be on a 64-word boundary because table size is 37 words, next power of two is 64.


所以由于人家规定要对齐向量表,由于stm32的中断向量一共有68+16=84个,应该把这个数增加到下一个2的整数倍即128,然后换算成地址范围128*4=512,就得到了0x200。

推荐阅读

史海拾趣

Adamant Co Ltd公司的发展小趣事

随着国内市场的饱和,Adamant Co Ltd决定将目光投向更广阔的国际市场。公司通过市场调研和精准定位,成功进入了欧洲和北美市场。在国际市场的拓展过程中,Adamant Co Ltd积极寻求与当地企业的合作,通过技术共享和市场互通,实现了双赢局面。这不仅提高了公司在国际市场的竞争力,也为公司的长远发展打下了坚实基础。

爱特姆(ATOM)公司的发展小趣事

在快速发展的同时,爱特姆也积极履行企业社会责任。公司始终坚持绿色生产、环保经营的理念,通过采用环保材料和节能技术,降低生产过程中的能耗和排放。此外,爱特姆还积极参与社会公益事业,为社会的可持续发展贡献自己的力量。

这五个故事从不同角度展现了爱特姆(ATOM)在电子行业发展的历程和成就。通过持续创新、市场拓展、人才引进和社会责任等方面的努力,爱特姆逐渐成长为一家具有全球影响力的电子企业。

Free2Move公司的发展小趣事

自1982年起,Blaze Display Technology Co., Ltd.(以下简称“Blaze公司”)以其前瞻性的视野和坚定的决心,踏入了LCD显示屏领域。创立初期,公司面临着资金短缺、技术瓶颈以及市场竞争的诸多挑战。然而,凭借创始团队对技术的深刻理解和对市场的敏锐洞察,Blaze公司逐步攻克难关,研发出了一系列具有竞争力的LCD显示屏产品。

American Technical Ceramics (ATC)公司的发展小趣事

自1982年起,Blaze Display Technology Co., Ltd.(以下简称“Blaze公司”)以其前瞻性的视野和坚定的决心,踏入了LCD显示屏领域。创立初期,公司面临着资金短缺、技术瓶颈以及市场竞争的诸多挑战。然而,凭借创始团队对技术的深刻理解和对市场的敏锐洞察,Blaze公司逐步攻克难关,研发出了一系列具有竞争力的LCD显示屏产品。

EMC [ELAN Microelectronics Corp]公司的发展小趣事

随着公司的发展,义隆电子不断加大研发投入,致力于技术创新和产品多元化。公司拥有一支高素质的研发团队,拥有多项自主知识产权和核心技术。通过不断的技术创新和产品升级,义隆电子成功推出了微控制器、个人计算机外设芯片、数字显示器芯片等一系列具有市场竞争力的产品。同时,公司还积极拓展智能型人机接口技术之应用芯片等新兴领域,为未来的发展奠定了坚实的基础。

Harwin公司的发展小趣事

Harbour Industries成立于1965年,起初主要专注于电缆的生产与销售。在20世纪60年代末和70年代初期,随着全球航空航天市场的迅速增长,Harbour敏锐地捕捉到了这一机遇。为了服务这一市场,公司进行了大规模的工厂扩建,并引入了先进的生产设备和技术。这一举措不仅提升了公司的产能,还确保了产品质量能够满足航空领域的高标准。通过不懈努力,Harbour逐渐在航空电缆市场中占据了一席之地。

问答坊 | AI 解惑

cycloneIII_3c25的原装开发板到手了-发资料

整快板子上的外设不是很多,但是存储器资源丰富。并预留了一个HSMC接口,可以用来扩展。有三张光盘,一张是介绍开发板的使用,例程,入门指导,另两张是Quartus2的软件,常用库,NIOS2开发资料。先简单介绍到这里,把开发板的资料传上来共享(全部 ...…

查看全部问答>

2011年全国竞赛基本仪器和主要元器件清单

本帖最后由 paulhyde 于 2014-9-15 09:46 编辑 …

查看全部问答>

空调板上的数码灯的问题

显示温度的时候,数码灯上未点亮的部分有闪烁现象,什么原因…

查看全部问答>

【设计工具】Xilinx SRAM 型FPGA抗辐射设计技术研究

针对XILINX SRAM型FPGA在空间应用中的可行性,分析了Xilinx SRAM型 FPGA的结构,以及空间辐射效应对这种结构FPGA的影响,指出SRAM型的FPGA随着工艺水平的提高、器件规模的增大和核电压的降低,抗总剂量效应不断提高,抵抗单粒子效应,尤其是单粒子 ...…

查看全部问答>

LAunchPad的2线控制LCD12864

很给力哦,解决LaunchPad的 IO口不够用,很有价值~~~   我用的开发板是g2553~~~ [ 本帖最后由 574937246 于 2012-7-20 14:46 编辑 ]…

查看全部问答>

问锁定放大电路中的一个问题

请教坛中大侠:  锁定放大中的移相电路部分,其移相作用是调整好就可以了,还是要以后经常性的调整?换句话说:移相部分的可调电阻最后能不能换成固定的?…

查看全部问答>

ZIGBEE CC2530协议栈跑呼吸灯问题。

在协议栈中我操作定时器 1(T1)产生PWM波,避免与定时器3-4系统定时器冲突。在裸机中我用定时器1跑通PWM了的。可是我加载到协议栈貌似遇到很多问题,希望大家跟我给点建议。上图 这个是定时器TI的驱动程序。 这是电脑给协调器串口写数据并通 ...…

查看全部问答>

EEPROM断电数据就会清空是什么原因

是根本没有存上 还是别的什么原因? …

查看全部问答>

我所收集的开关电源资料。。。有需要的大家看看。。

刚来论坛,感觉不错。发一点自己收藏的书籍,有用的大家看看。。。…

查看全部问答>