历史上的今天
今天是:2025年03月07日(星期五)
2019年03月07日 | STM32之SysTick原理
2019-03-07 来源:eefocus
一、STM32的SysTick简介
SysTick是一个24位的系统节拍定时器system tick timer,SysTick,具有自动重载和溢出中断功能,所有基于Cortex_M3处理器的微控制器都可以由这个定时器获得一定的时间间隔。
systick的作用:
在单任务引用程序中,因为其架构就决定了它执行任务的串行性,这就引出一个问题:当某个任务出现问题时,就会牵连到后续的任务,进而导致整个系统崩溃。要解决这个问题,可以使用实时操作系统(RTOS).
因为RTOS以并行的架构处理任务,单一任务的崩溃并不会牵连到整个系统。这样用户出于可靠性的考虑可能就会基于RTOS来设计自己的应用程序。这样SYSTICK存在的意义就是提供必要的时钟节拍,为RTOS的任务调度提供一个有节奏的“心跳”。
微控制器的定时器资源一般比较丰富,比如STM32存在8个定时器,为啥还要再提供一个SYSTICK?原因就是所有基于ARM Cortex_M3内核的控制器都带有SysTick定时器,这样就方便了程序在不同的器件之间的移植。而使用RTOS的第一项工作往往就是将其移植到开发人员的硬件平台上,由于SYSTICK的存在无疑降低了移植的难度。
SysTick定时器除了能服务于操作系统之外,还能用于其它目的:如作为一个闹铃,用于测量时间等。要注意的是,当处理器在调试期间被喊停(halt)时,则SysTick定时器亦将暂停运作。

systick的时钟选择:
二、SYSTICK的寄存器

上一篇:STM32之SysTick例程
下一篇:STM32之DAC例程
史海拾趣
|
各位兄弟姐妹大家好,小弟这两天正在苦心学习verilog,书中看到一段话不太明白: 简单的十进制数格式的整数代表一个有符号的数,负数可使用两种补码形式表示。因此32在5位的二进制形式中为10000,在6位二进制形式中为110001;-15在5位的二进制形式 ...… 查看全部问答> |
|
我手上有块板子 只有NAND FLASH 64M 能把vxworks 移植上来么? bootloader 改如何弄,有现成的摸版? 用ads可以不? 以前玩44B0,都是别人弄好的,只在上面做APP, 现在自己弄了块板子… 查看全部问答> |
|
我要通过GPRS猫发送彩信,有几个问题请教大家: 1、看网上说可以通过Http post发送,是什么意思?是将HTTP post封装到WSP PDU中吗?还是指得HTTP post通过Internet发送? 2、因为我的GPRS猫没有继承MMS模块,所以各层的协议要自己实现,由低到高 ...… 查看全部问答> |
|
请教一个问题,代码如下: sbit int_1 = P1^2; sbit int_2 = P1^3; sbit int_3 = P3^7; uchar code drive_1[4] = {0xff,0x00,0xff,0x00}; uchar code drive_2[4] = {0x00,0xff,0x00,0xff}; int main() { uchar i = 0; & ...… 查看全部问答> |
|
三星4510b的代码 地址中为啥地址有个基址?3ff0000 #define SFR_BASE 0x3FF8000 #define INTPND (*((volatile unsigned long *) (SFR_BASE + 0x4004))) 手册上如 INTPND写的是 0x4004 另外在初始化内存时 ...… 查看全部问答> |
|
DriverStudio开发IRP_MJ_DEVICE_CONTROL的routine时设置OutBuffer的问题 请问,我在写自定义的某个IRP_MJ_DEVICE_CONTROL的CODE的时候,采用了METHOD_BUFFERED的方式,发现设置不了输出缓冲中的内容。书上说BUFFERED方式输出缓冲与输入缓冲都是IO MANAGER分配的系统内存,传进来的时候是in buffer,传出动是out buffer, ...… 查看全部问答> |
|
哈哈~~~现在还不知道EMSTM32V1的串口连接,看到下图终于明白了~~~1.DTR输出的情况2.RTS输出的情况从上图可以看出RS232的连接关系:DTR(4脚)和DSR(6脚)是连接的.在LPCARM上是作为复位控制的,为了"兼容",就决定用此脚作为吧~~~RTS(7脚)和CTS(8 ...… 查看全部问答> |
|
static linkID_t sLID[NUM_CONNECTIONS]; static uint8_t sNumCurrentPeers; // callback handler static uint8_t sCB(linkID_t); // work loop semaphores static uint8_t sPeerFrameSem; static uint8_t sJoinSem; static uint8_t sSelfM ...… 查看全部问答> |




