LPC1114系统定时器(SysTick)
//当定时时间到时,全局变量清零
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在闪烁流动。
LPC1114系统定时器SysTic 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)