那么还有其他的定时器,比如定时器0,定时器1,定时器2,怎么设了?其实和系统时钟设计差不多,就是把上面几个函数改改就OK,大家先看看外设,系统时钟我这里面就说说定时器0 A吧,其他的都一样了。头文件里与定时器0相关的头文件先加进去: #include "driverlib/timer.h"
再找相应的函数:
TimerConfigure 定时器配置函数
TimerLoadSet 定时器装载函数,主要是确定定时器时间
TimerIntEnabl 使能定时器
IntEnable 使能定时器外设。
函数其实不多呀,好少哦,就按照周工写的那个库上找,按照这个方式把上面系统时钟的程序改下,删带系统时钟配置,加上定时器0A的配置就 OK,很简单哦,稍微修改下定时0A的程序就出来了,也是按照1秒闪烁的:
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/sysctl.h"
#include "driverlib/timer.h"
int main (void)
{
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER0 ); //修改部分
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_0 ,GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0);
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_0, 1);
IntMasterEnable();
GPIOPinTypeTimer(TIMER0_BASE, TIMER_A);
TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_PER); //修改部分
TimerLoadSet(TIMER0_BASE, TIMER_A, SysCtlClockGet() ); //修改部分
TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT); //修改部分
TimerEnable(TIMER0_BASE, TIMER_A); //修改部分
IntEnable(INT_TIMER0A); //修改部分
while (1);
}
void Timer0int (void)
{
TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT); //修改部分
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0, ~GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_0));
TimerEnable(TIMER0_BASE, TIMER_A); //修改部分
}
定时器讲到这里了,下次说说中断调用吧
[ 本帖最后由 0212009623 于 2010-11-13 11:26 编辑 ] |