系统时钟我设的是40MHz,
SysCtlClockSet(SYSCTL_SYSDIV_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_8MHZ |
SYSCTL_OSC_MAIN);我想定时1ms中断
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
//配置timer0为全周期
TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC);
//1ms定时
systlctime = (SysCtlClockGet());
TimerLoadSet(TIMER0_BASE, TIMER_A,400000);
TimerIntRegister(TIMER0_BASE, TIMER_A,timer_hander);
IntEnable(INT_TIMER0A);//NVIC
TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
IntMasterEnable();
TimerEnable(TIMER0_BASE, TIMER_A);
这样配置对吗?
好多人使用TimerLoadSet(TIMER0_BASE, TIMER_A,(SysCtlClockGet())/400000);设置装载值,这样设置如何计算定时时间?不是太清楚这块,请大侠指点,谢谢
xyz549040622:
在定时器不分频的情况下,定时器变化个数字1的时间是主频的倒数,单位是s,那么SysCtlClockGet()次就是1s,根据次数做个比例函数就可以计算了。
又因为时间是频率的倒数,比如我们定时10hz,就是1/10s,所以定时计次数应该是SysCtlClockGet()/xHz-1,还有有的库中SysCtlClockGet()这个函数是不一定对的,需要实际测试是否是主频。
Seven Han:
参考C:\ti\TivaWare_C_Series-2.1.4.178中的例程