cc1310 timer定时器问题
今天在使用CC1310产生时钟中断的时候发现,自己想产生一个1S的中断,但是总是达不到。系统频率为48MHz。测试了很多发现300ms一下的时间触发一次中断是没问题的,当触发中断的时间超过了300ms定时器产生中断的时间就会出错,这个是什么原因呢?
使用的是定时器中断。
你可以使用TI-RTOS的clock module来做。clock module的定时中断由系统软件中断来实现。
clock module以tick为计时单位,系统默认每个tick是10us。
例如,下面例程就是每5s触发一次定时中断。在clk0Fxn()定义定时到了需要执行的代码。
Clock_Struct clk0Struct;
Clock_Handle clk0Handle;
Clock_Params clkParams;
Clock_Params_init(&clkParams);
clkParams.period = 5000/Clock_tickPeriod;
clkParams.startFlag = TRUE;
/* Construct a periodic Clock Instance */
Clock_construct(&clk0Struct, (Clock_FuncPtr)clk0Fxn, 5000/Clock_tickPeriod, &clkParams);
clk0Handle = Clock_handle(&clk0Struct);
Clock_start(clk0Handle);
tick这个是可以的,tick时钟还发现了一个问题,这个tick时钟是不是不能同时开启两个定时器,开启一个完美运行,当开启了两个时两个定时运行一个周期然后就都停住了。
可以同时创建多个clock instance的。
例如:
Clock_Params clkParams;
clkParams.period = 0;
clkParams.startFlag = FALSE;
Clock_construct(&clk0Clock, clk0ClockCallback, 0, &clkParams);
clk0ClockHandle = Clock_handle(&clk0Clock);
Clock_construct(&clk1Clock, clk1ClockCallback, 0, &clkParams);
clk1ClockHandle = Clock_handle(&clk1Clock);
clkParams.period用于设置是一次性定时器(设置为0),还是周期性定时器(设置为非0值,设定值即为其周期)。
我试着创建了两个周期性的定时器,然后就出现了我之前说的,两个定时器同时运行一到两个周期之后就都停止运行了。是不是tick,在同一时间只能运行一个周期的定时器?谢谢回复!
不存在你说的限制的,可以创建多个周期性的clock instance的。
好的,那应该是我程序还有点问题。我再看看,谢谢你。