STM32 学习笔记——系统定时器 SysTick 的使用
/*
Created on: 2012-10-29
Author: zhang bin
学习笔记
for STM32F103C8
redesigned by zhang bin
2012-10-29
versions:V-0.1
All Rights Reserved
*/
/****************************************************************************
*
* SysTick 定时器实验
*
* 实验目的: 熟悉了解 SysTick 配置和滴答定时设定
*
* 接线方法: 参考“接线演示”图片
*
* 实验现象: D1 和 D2 交替点亮
*
*******************************************************************************
/
/*在嵌入式系统软件中,Delay()是不可少的,传统的是使用一个循环对一个变量进行递减,
但是这种
延迟的时间不精确。并且对于 STM32 系列的处理器来说,执行一条指令只有几十个 ns,进
行 for 循环时,要
实现 N 毫秒的 x 值非常大,而且由于系统频率的宽广,很难计算出延时 N 毫秒的精确值。
以后就可以直接使用本例中的延迟方法,进行精确的延迟。*/
//Cortex 系统定时器 SysTick 提供 1 个 24 位、降序、零约束、写清除的计数器,具有灵活的
控制机制
/*Cortex-M3 的内核中包含一个 SysTick 时钟。SysTick 为一个 24 为递减计数器,SysTick 设
定初始值并
使能后,没经过 1 个系统时钟周期,计数值就减 1.计数到 0 时,SysTick 计数器自动重装初
始值并继续
计数,同时内部的 COUNTFLAG 标志会置位,触发中断(如果中断使能)
在 STM32 的应用中,使用 Cortex-M3 内核的 SysTick 作为定时时钟,设定没一毫秒产生一
次中断,在中断
处理函数里对 N 减 1,在 Delay(N)函数中循环检测 N 是否为 0,不为 0 则进行循环等待;若
为 0 则关闭 SysTick 时钟,
退出函数。
评论0