STM32学习之路-AIRCR寄存器PRIGROUP位的配置STM32学习之路-AIRCR寄存器PRIGROUP位的配置<NIVC(1)>
2015-06-25 浏览(355)
AIRCR是NIVC配置中⼀个关键的寄存器.⽽PRIGROUP⼜是AIRCR中关键的位
让我们看看CM3技术⼿册中该为是怎么配置的
上⾯说得很清楚,PRIGROUP的值是代表⼀个从LSB左边开始的⼩数值.怎么理解呢?看看下⾯
CM3使⽤8bit位来设置这⾥, 也就是说从0-7位.在寄存器中是这样的
"7| 6| 5| 4| 3| 2 |1| 0|
当PRIGROUT[10:8]的值为111时,即为7时,就是说7位(第8位)为有效位的开始位,⽤数值代表就像这样
0.76543210
110(6)时,就是7.6543210 依次类推
⽽STM32原理和它⼀样,不过只是⽤了4bit来表⽰,看看下图
好,那现在来说说为什么要这样搞.
让我们时光倒流⼀下,谈谈中断优先级的问题,请看图
可以看到优先组别总⽤有5组, 0-4,分为占先式优先级和副优先级,为什么要搞成这样,原因在下⾯:
因为STM32有很多中断,要处理这些中断的时候总是需要先后顺序的,所以来给他们给级别了!
怎么设置组号呢?
在misc.h可以看到这些宏的定义
#define NVIC_PriorityGroup_0        ((uint32_t)0x700) /*!< 0 bits for pre-emption priority
4 bits for subpriority */
#define NVIC_PriorityGroup_1        ((uint32_t)0x600) /*!< 1 bits for pre-emption priority
3 bits for subpriority */
#define NVIC_PriorityGroup_2        ((uint32_t)0x500) /*!< 2 bits for pre-emption priority
学swift语言能干什么2 bits for subpriority */
#define NVIC_PriorityGroup_3        ((uint32_t)0x400) /*!< 3 bits for pre-emption priority
1 bits for subpriority */
#define NVIC_PriorityGroup_4        ((uint32_t)0x300) /*!< 4 bits for pre-emption priority
0 bits for subpriority */
在看看,它的值是0x700, 在看看 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);这个函数,这就是配置AIRCR寄存器的函数
再看看它的内容
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)
{
/* Check the parameters */
assert_param(IS_NVIC_PRIORITY_GROUP(NVIC_PriorityGroup));
相关推荐
/* Set the PRIGROUP[10:8] bits according to NVIC_PriorityGroup value */
SCB->AIRCR = AIRCR_VECTKEY_MASK " NVIC_PriorityGroup;
}
OK, AIRCR_VECTKEY 的值为 #define AIRCR_VECTKEY_MASK    ((uint32_t)0x05FA0000)
再来看看这⼩坏蛋为什么要这样设置:
看到了吧31:16位要写0X05FA,然后与上0X700那就设置了[10:8]这⾥为111.再想想上⾯分析的,0组就是这么实现的呀!
已经晚了,今天就记录这么多吧.. 见下⼀篇.
注 Ithao123精品⽂库频道,ithao123 是专门为互联⽹⼈打造的学习交流平台,全⾯满⾜互联⽹⼈⼯作与学习需求,更多互联⽹资讯尽在 IThao123!
关键词: stm32 NIVC  AIRCR  PRIGROUP
⽂章点评:
精选专题
hadoop 学习及应⽤
hadoop 学习及应⽤
Hadoop 是⼀个由Apache 基⾦会所开发的分布式系统基础架构。 ⽤户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利⽤集的威⼒进⾏⾼速运算和存储。 Hadoop 实现了⼀个分布式⽂件系统(Hadoop Distributed File System ),简称HDFS 。HDFS 有⾼容错性的特点,并且设计⽤来部署在低廉的(low-cost )硬件上;⽽且它提供⾼吞吐量(high throughput )来访问应⽤程序的数据,适合那些有着超⼤数据集(large data set )的应⽤程序。HDFS 放宽了(relax )POSIX 的要求,
可以以流的形式访问(streaming access )⽂件系统中的数据。 Hadoop 的框架最核⼼的设计就是:HDFS 和MapReduce 。HDFS 为海量的数据提供了存储,则MapReduce 为海量的数据提供了计算。
产品经理职责
产品经理职责
随着国内互联⽹的发展,产品经理岗位需求⼤幅增加,在国内,从事产品⼯作的⼤部分岗位为产品经理,其实现实中,很多从事产品⼯作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
Swift ⼊门学习
Swift ⼊门学习
Swift是Apple在WWDC2014所发布的⼀门编程语⾔,⽤来撰写OS X和iOS应⽤程序[1]。在设计Swift时.就有意和Objective-C共存,Objective-C是Apple操作系统在导⼊Swift前使⽤的编程语⾔ Swift是供iOS和OS X应⽤编程的新编程语⾔,基于C和Objective-C,⽽却没有C的⼀些兼容约束。Swift采⽤了安全的编程模式和添加现代的功能来使得编程更加简单、灵活和有趣。界⾯则基于⼴受⼈民众爱戴的Cocoa和Cocoa Touch框架,展⽰了软件开发的新⽅向。
php⼊门到精通
php⼊门到精通
PHP(外⽂名:PHP: Hypertext Preprocessor,中⽂名:“超⽂本预处理器”)是⼀种通⽤开源脚本语⾔。语法吸收了C语⾔、Java和Perl的特点,利于学习,使⽤⼴泛,主要适⽤于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP⾃创的语法。它可以⽐CGI或者Perl更快速地执⾏动态⽹页。⽤PHP做出的动态页⾯与其他的编程语⾔相⽐,PHP是将程序嵌⼊到HTML(标准通⽤标记语⾔下的⼀个应⽤)⽂档中去执⾏,执⾏效率⽐完全⽣成HTML标记的CGI要⾼许多;PHP还可以执⾏编译后代码,编译可以达到加密和优化代码运⾏,使代码运⾏更快。