网站大量收购闲置独家精品文档,联系QQ:2885784924

STM32学习笔记-SYS程序解释(原子).docxVIP

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE PAGE # SYS.C程序解释 #i nclude stm32f10x_lib.h #include sys.h //设置向量表偏移地址 〃NVIC_VectTab:基址 //Offset: 偏移量 //CHECK OK //091207 void MY_NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset) { //检查参数合法性 assert_param(IS_NVIC_VECTTAB(NVIC_VectTab)); assert_param(IS_NVIC_OFFSET(Offset)); SCB-VTOR = NVIC_VectTab|(Offset (u32)0x1FFFFF80); // 设置 NVIC 的 向量表偏移寄存器 //用于标识向量表是在 COD区还是在RAM区 } 解释:前面两行是用来检查参数合法性,这里不作分析。重点看第三行。 #defi ne NVIC_VectTab_RAM ((u32)0x) #defi ne NVIC_VectTab_FLASH @32)0 typedef struct { vuc32 CPUID; vu32 ICSR; vu32 VTOR; vu32 AIRCR; vu32 SCR; vu32 CCR; vu32 SHPR[3]; vu32 SHCSR; vu32 CFSR; vu32 HFSR; vu32 DFSR; vu32 MMFAR; vu32 BFAR; vu32 AFSR; } SCB_TypeDef; 在VV权威指南 第一百零四页,有这么一段话: NVIC中有一个寄存器,称为向量表偏移量寄存器”在地址0xE000_ED08处), 通过修改它的值就能定位向量表。 但必须注意的是:向量表的起始地址是有要求的: 必须先求出系统中共有多少个向量,再把这个数字向上增大到是 2的整次幕,而起 始地址必须对齐到后者的边界上。例如,如果一共有 32个中断,则共有32+16 (系 统异常)=48个向量,向上增大到2的整次幕后值为64,因此地址 地址必须能被64*4=256整除,从而合法的起始地址可以是: 0x0, 0x100, 0x200等。 Offset:是偏移量的计算 也就是说STM32自己有60个中断,加上CM3的16个,总共有76个中断,扩大到2 的整次幕,那就是128,然后再乘以4,得到512,也就是0X200.根据这样计算,合法 的偏移地址应该是0X0,0X200,0X400,0X600,0x800…… 29 TBLBASE R/W 0 Table base in Code (0) or RAM (1) 28:7 TBLOFF R/W 0 Table offset value from Code regio n or RAM region 屏蔽前七位0x仆FFFF80和后三位+Offset + VECTTOR 就是开始地址,低7位没 有用到,所以0X80。 VTOR设置只有BIT【28 : 7】,你把(u32)0x仆FFFF80二进制看看是不是【28:7】。 表乩H向量表fll移寄村器的位分配 域 名称 131:30] 探紹 ㈣ TBLBASE 向眦去皋址位J Code (0)或RAM 1 itfc RS:7] TBLOFF 向曜松的a址偏修域 包衲向?左的岸址口 SR.AM应conr.空何的庇洗的慎移 ? |6:0] 向眾農僞秽寄存器将向托左定位在CODE或SRAM中 默认怙况卜U位时为0 { CODE 空泗儿定位时,帕移星必须根抑耘中异常的数口来对壽。即最小的对齐肚32字対齐‘对供 16个中断使用「们片茅I 16个中断时、你必须通过“四舍扛入(roundup将梵对齐调节 成2的卜.一个乘泵。例如.如來你盂耍21个中断,而由F衣的大小是37个字* 2的卜?一个 乘笊(2f5+n为64,囚此必须在64字边界上实现对齐“ //设置 NVIC 分组 //NVIC_Group:NVIC 分组 0~4 总共 5 组 //CHECK OK //091209 void MY_NVIC_PriorityGroupConfig(u8 NVIC_Group) { u32 temp,temp1; temp1=(~NVIC_Group)0x07; // 取后三位 temp1=8; temp=SCB-AIRCR; //读取先前的设置 temp=0X0000F8FF; // 清空先前分组 temp|=0X05FA0000; // 写入钥匙 temp|=temp1; SCB-AIRCR=temp; //设置分组 } 解释:CM3内核支持256个中断,其中包含了 16个内核中断和240个外部中断, 并且具有2

文档评论(0)

乐乐 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档