首页 > 其他 > 详细

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

时间:2019-10-21 00:22:14      阅读:140      评论:0      收藏:0      [点我收藏+]

概述

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\r\n");
}
x
1
/************************************************
2
函数名称 : device_init
3
功    能 : 板上资源初始化
4
参    数 : 无
5
返 回 值 : 无
6
说    明 :
7
*************************************************/
8
void mcu_systick_init(void)
9
{
10
    SYSTICK_InternalInit(100);//启用内部时钟,设置定时间隔,单位ms
11
    SYSTICK_Cmd(ENABLE);//启动定时器
12
    SYSTICK_IntCmd(ENABLE);//启动中断
13
}
14
15
/**********************************************************************************************
16
**  函数名称: SysTick_Handler
17
**  函数功能: sysTick  中断处理函数
18
**  入口参数:无
19
**  出口参数:无
20
**********************************************************************************************/
21
void SysTick_Handler(void)
22
{
23
    SYSTICK_ClearCounterFlag();
24
    _printf("滴答定时器100ms\r\n");
25
}













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

原文:https://www.cnblogs.com/bog-box/p/LPC1788-SYSTICK.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!