08-笔记:LPC1788-滴答定时器(系统节拍定时器)

概述

LPC178x/7x 系列 Cortex-M3 具有一个系统节拍定时器,它是 Cortex-M3 的主要组成部分。
系统节拍定时器专为操作系统或其它的系统管理软件提供 10 毫秒的间隔中断
 

特性

 10 毫秒时间间隔;
 专用的异常向量;
 可由 CPU 提供时钟信号或由引脚(STCLK)输入时钟信号。
 

寄存器描述

系统节拍定时器中断设置

LPC178x/7x系列 Cortex-M3 有一个系统节拍定时器,SysTick是一个 24 位的倒计数定时器,
只要当计数值达到 0 时可产生中断。
Cortex-M3 为 SysTick 提供专用异常(异常号:15),一旦 SysTick 触发中断,当处理器响
应中断后将自动定位到中断向量表,并从向量表中找出 SysTick 中断处理的入口地址,然后 PC
指针跳转到该地址处执行中断服务函数。
对 SysTick 的控制寄存器和状态机寄存器 STCTRL 进行读操作,可以清除 SysTick 中断标志

系统节拍定时器操作举例

系统节拍定时器是一个 24 位的倒计数定时器,当计数值达到 0 时产生中断。系统节拍定时
器的作用是为下次中断前提供一个 10 毫秒的固定时间间隔。系统节拍定时器的时钟信号可以由
CPU 提供也可以由外部引脚 STCLK 提供
要想在规定的时间点上产生中断(循环产生),就必须先将指定的时间间隔值装入 STRELOAD。
/************************************************
函数名称 : device_init
功    能 : 板上资源初始化
参    数 : 无
返 回 值 : 无
说    明 :
*************************************************/
void mcu_systick_init(void)
{
    SYSTICK_InternalInit(100);//启用内部时钟,设置定时间隔,单位ms
    SYSTICK_Cmd(ENABLE);//启动定时器
    SYSTICK_IntCmd(ENABLE);//启动中断
}

/**********************************************************************************************
**  函数名称: SysTick_Handler
**  函数功能: sysTick  中断处理函数
**  入口参数:无
**  出口参数:无
**********************************************************************************************/
void SysTick_Handler(void)
{
    SYSTICK_ClearCounterFlag();
    _printf("滴答定时器100ms
");
}
原文地址:https://www.cnblogs.com/bog-box/p/LPC1788-SYSTICK.html