LPC54114定时器还是挺丰富的,有5个标准定时器,这里测试标准计数定时器Ctimer0 ,同时测试一下定时器中断。其实在点完灯以后,剩下的配置基本就是套路了。初始化时钟,初始化引脚,初始化定时器,开启中断,如图1所示:
- CTIMER_GetDefaultConfig(&config);
- CTIMER_Init(CTIMER0,&config);
-
- //match channel 0 configuration
- matchConfig0.enableCounterReset = true;
- matchConfig0.enableCounterStop = false;
- matchConfig0.matchValue = CLOCK_GetFreq(kCLOCK_BusClk)/2;
- matchConfig0.outControl = kCTIMER_Output_Toggle;
- matchConfig0.outPinInitState = false;
- matchConfig0.enableInterrupt = true;
-
- CTIMER_RegisterCallBack(CTIMER0,&ctimer_callback_table[0],kCTIMER_MultipleCallback);
- CTIMER_SetupMatch(CTIMER0,kCTIMER_Match_0,&matchConfig0);
- CTIMER_StartTimer(CTIMER0);
-
- GPIO_PinInit(GPIO,0,30,&led_config);
- GPIO_SetPinsOutput(GPIO,0,1u<<30);
-
- GPIO_SetPortMask(GPIO,0,1u<<30);
- GPIO_WriteMPort(GPIO,0,1u<<30);
复制代码
完成的功能就是定时1S,翻转LED灯,实现闪烁灯效果。中断callback函数如图2所示: - void ctimer_match0_callback(uint32_t flags)
- {
- // static uint32_t count0;
- count0++;
- if(count0 >= 2)
- {
- GPIO_TogglePinsOutput(GPIO,0,1u<<30);
- count0=0;
- }
- }
复制代码
这里特别注意一下定时器初始函数中matchvalue的定义,决定定时的时间。 效果如图3所示:
虽然功能简单,但是练习必不可少。
|