微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > LPC1114系统定时器(SysTick)

LPC1114系统定时器(SysTick)

时间:11-13 来源:互联网 点击:

//当定时时间到时,全局变量清零

SysTick->CTRL =0;//关闭定时器

}

可见上述定时是毫秒级别的,最长可定时699ms。

至此,第一个演示示例中的全部内容就都讨论完了,可见在LPC1114中要实现一个简单的十二个LED交替闪烁,涉及到的内容还是很多的。下面再来看一个流水灯的例子,要求实现一个12位的流水灯,时间间隔为100ms。假设LED采用共阳接法接在GPIO2端口,参考代码如下:

#include
//===================系统定时器中断服务程序============================
void SysTick_Handler(void)
{
uint32_t temp;//定义临时中间变量
temp = LPC_GPIO2->DATA;//读取当前端口2的值
temp = ~temp; //把中间变量进行取反
temp<=1; //把中间变量进行左移一位
temp = ~temp; //再次把中间变量进行取反
LPC_GPIO2->DATA = temp; //把左移后的量赋给端口2
if(temp==0xFFF) //如果左移到头,则从头开始
{
LPC_GPIO2->DATA = 0xFFE;
}
}
//========================系统定时器初始化=============================
void SysTick_init(void)
{
SysTick->LOAD = (((24000)*100)-1);//设置100ms的定时
SysTick->VAL = 0; //计数清零
SysTick->CTRL |= ((1<1)|(1<0)); //允许中断,选择半系统时钟,启动定时器
}
//============================主函数==================================
int main(void)
{
LPC_GPIO2->DIR = 0xFFF; //设置端口2为输出方向
LPC_GPIO2->DATA = 0xFFE;//端口2最低位输出0,点亮最末一个LED
SysTick_init();//调用系统定时器
while(1)
{
;//空循环
}
}

把程序编译后下载到LPC1114中,给系统上电,可看到接到端口2上的12个LED在闪烁流动。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top