微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > cc1310 timer定时器问题

cc1310 timer定时器问题

时间:12-23 整理:3721RD 点击:

今天在使用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的。

好的,那应该是我程序还有点问题。我再看看,谢谢你。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top