- 246
- 0
- 约1.34万字
- 约 19页
- 2018-06-01 发布于江苏
- 举报
STM32学习记-SYS程序解释(原子)
SYS.C程序解释
#include 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的向量表偏移寄存器
//用于标识向量表是在CODE区还是在RAM区
}
解释:前面两行是用来检查参数合法性,这里不作分析。重点看第三行。
#define NVIC_VectTab_RAM???????????? ((u32)0
#define NVIC_VectTab_FLASH?????????? ((u32)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;
在权威指南第一百零四页,有这么一段话:????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?region?or?RAM?region? 屏蔽前七位0x1FFFFF80和后三位+Offset?+?VECTTOR就是开始地址,低7位没有用到,所以0X80。
VTOR设置只有BIT【28:7】,你把(u32)0x1FFFFF80二进制看看是不是【28:7】。
//设置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 个外部中断,并且具有256级的可编程中断设置。但STM32 并没有使用CM3 内核的全部东西,而是只用了它的一部分。STM32 有76 个中断,包括16 个内核中断和60 个可屏蔽中断,具有16 级可编程的中断优先级。而我们常用的就是这60 个可屏蔽中断,所以我们就只针对这60 个可屏蔽中断进行介绍。
在 MDK 内,与NVIC 相关的寄存器,MDK 为其定义了如下的结构体:
typedef struct
{
vu32 ISER[2];
u32 RESERVED0[30];
vu32 ICER[2];
u32 RSERVE
您可能关注的文档
- msvbvm6中函数介绍(重新整理).pdf
- multisi 仿真教程 . 加法器.ppt
- MTK中 Frme Work介绍.docx
- MySQL基础技能和原理——基础技能.ppt
- nds《逆转检官》游戏攻略心得.doc
- NEWAPP KI值机应用介绍.pdf
- Novobabel国贸术语中英对照表格.docx
- NST-精密脉热压焊机说明书-电子档.pdf
- NUKE和MAYA特效实例1.docx
- OLAP分析工FineBI中如何进行业务包分组.pdf
- 广东省广州省实验中学教育集团2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州大学附属中学2025-2026学年八年级上学期奥班期中物理试题(解析版).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(含答案).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第八十六中学2025-2026学年八年级上学期期中物理试题(解析版).docx
- 广东省广州市第八十九中学2025-2026学年八年级上学期期中考试物理试题(含答案).docx
- 广东省广州市第二中学2025-2026学年八年级上学期期中考试物理试题(解析版).docx
- 2026《中国人寿上海分公司营销员培训体系优化研究》18000字.docx
- 《生物探究性实验教学》中小学教师资格模拟试题.docx
原创力文档

文档评论(0)