systick优先级的理解

sysTick系统嘀嗒定时器并非STM32独有的,它是Cortex内核的部分,CM3为它专门开出一个异常类型,并且在中断向量表中占有一席之地(异常号15)。这样它可以很方便的移植到不同厂商出CM3内核的芯片上,尤其对于有实时操作系统的软件,它一般会作为整个系统的时基,所以这个对操作系统非常重要

1 systick属于内核异常中断应该用SHPR设置其优先级;外设中断属于ISR应该按NVIC_IPRx来设置优先级。

2STM32用4个位(共16级优先级)来管理所有的中断优先级(内核中断systick也用此安排),中断向量表中用inline的方式规定死了SYSTICK的优先级为最低:15。但可以通过NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - x); //默认X=1

3那么如何理解systick在采用比如优先级2组时(抢占2位共4级(0~3);子2位共4级(0~3))呢?答:15即抢占=3;子优先级=3;也就是说始终都是15看你分组怎么分,它总是排在最后。

总结:这也就说明了在移植UCOS时如何看待外设中断与软件定时器及任务的优先级的问题:如果不修改默认systick的硬件优先级,则优先级顺序为:外设中断、软件定时器(各软件定时器暂时没有分优先级按照FIFO顺序)、任务级优先级。特殊说明:

1 如果外设中断的优先级也分成了15(无论你怎么分组:GROUP2(3:3)/GROUP3(7:1))则此时SYSTICK优先级高于同优先级的外设(毕竟内核异常优先级高于外设中断)

2如果想要精确定时也可使用以下函数将systick整成最高优先级)NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 15);

参考http://www.51hei.com/stm32/3561.html

参考2http://my.oschina.net/oceanstack/blog/371413

时间: 2024-11-07 11:10:16

systick优先级的理解的相关文章

css选择器优先级深入理解

转载自:http://www.jb51.net/css/67029.html 一.基础选择器 css基础选择器有标签选择器.类选择器.id选择器.通用选择器 1.标签选择器 每个html页面都由很多个标签组成,通过标签选择器可以对某类标签应用相应的样式,如对p标签应用下面的样式,则页面中所有的p标签都会生效 p{ font-size:12px; color:red; background:blue; } 2.类选择器 类选择器是css非常常用的选择器,在html中可以为某个标签增加class属性

HTML(面试第1天)_说说你对HTML元素显示优先级的理解

优先级:帧元素(frameset)的优先级最高   >  表单元素  >非表单元素 在html中, 帧元素(frameset)的优先级最高, 表单元素比非表单元素的优先级要高. 表单元素包括:文本输入框,密码输入框,单选框,复选框,文本输入域,列表框等等: 非表单元素包括:链接(a),div,table,span等. 所有的html元素又可以根据其显示分成两类:有窗口元素以及无窗口元素.有窗口元素总是显示在无窗口元素的前面. 有窗口元素包括:select元素,object元素,以及frames

运算符及其优先级

目录 概述——对运算符及其优先级的理解 常用的运算符 运算符的优先级 运用 概述——对运算符及其优先级的理解 常用的运算符 算术运算符和自增.自减运算符 +.-.*./.%.++.-- 赋值运算符 = 强制类型转换运算符 (类型名)(表达式) 比较运算符 >.<.==.>=.<=.!= 逻辑运算符 !.&&.|| 位运算符 <<.>>.~.|.^.& 条件运算符(三目运算符) ( ? : ) 逗号运算符 ( , ) 指针运算符 ( *

读书笔记--C陷阱与缺陷(二)

第二章 1. 理解函数声明 书中分析了复杂的类型声明方式,也说明了使用typedef声明会更好理解,推荐大家使用typedef进行函数声明. 书中类型分析一层一层挖掘,让读者可以理解多层嵌套的类型含义,有时间的读者可以去看看,笔者不再重复. 既然书中推荐使用typedef进行函数声明,我们就来研究下typedef: typedef主要用于定义一种类型/结构体的别名. 从字面上看和C的宏定义 #define 挺像的,但是define只是简单的参数替换,如果不注意括号很容易产生预期之外的错误. 在指

S5PV210-uboot源码分析-uboot环境变量

9.1.uboot的环境变量 1.环境变量的作用 (1)在我们不改变uboot源代码的情况下,只需要改变环境变量的值就可以改变uboot运行时的数据和一些特性.比如说,通过修改bootdelay环境变量,就可以更改开机倒数的秒数. 2.环境变量的优先级 (1)uboot代码当中有一个值,环境变量(DDR 环境变量的分区中)中也有一个值,uboot程序实际运行时,规则是,如果环境变量(DDR中环境变量的分区)为空,则使用代码中的环境变量的值,如果环境变量不为空,优先使用环境变对应的值. (2)比如

JAVA多线程和并发基础面试问答(转载)

原文链接:http://www.cnblogs.com/dolphin0520/p/3932934.html 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题. Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含

JAVA多线程和并发基础面试问答

原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-answers/ 多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一.在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题.(校对注:非常赞同这个观点) Java多线程面试问题 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环

CMSIS RTX开发之中断优先级(Interrupt priority)

在使用CMSIS RTX这个RTOS时,遇到了如何设计异常的问题.(异常包含中断,为了让搜索引擎更好搜索,本文不区分异常和中断,但是其实异常是中断更为通用的叫法.) 问题有2个: 第一个,如何设置异常优先级. 第二个,进程的优先级和异常优先级要如何匹配. 我们先看第一个问题,如何设置异常优先级. 在使用CMSIS RTX RTOS时,由于RTOS本身会利用Systick,SVC,PendSV这3个异常来完成进程调度之类的任务.而用户在编程开发时,还会用到一些其他中断,GPIO,UART之类. 那

NVIC

1. 牛人对STM32的NVIC_PriorityGroupConfig使用及优先级分组方式理解http://bbs.ednchina.com/BLOG_ARTICLE_3000747.HTM