如图使用period in microsecs定时1000ms作为periodtype,debug时定时器不能进入中断服务函数。而使用period in counts计数1000000可以正常进入中断服务函数。这是TI-RTOS的问题吗还是我设置的问题。
/* ================ Types configuration ================ */ var Types = xdc.useModule('xdc.runtime.Types'); var timer0Params = new Timer.Params(); timer0Params.instance.name = "timer0"; timer0Params.period = 1000; timer0Params.periodType = xdc.module("ti.sysbios.interfaces.ITimer").PeriodType_COUNTS; Program.global.timer0 = Timer.create(0, "&hwi_ledController", timer0Params);
Susan Yang:
您现在是出现了错误提示还是单纯不能进入中断?使用的是哪个例程呢?
我明天拿板子试一下
使用相关的API会简单一些
http://www.ti.com/lit/ug/spruex3u/spruex3u.pdf
Susan Yang:
您现在是出现了错误提示还是单纯不能进入中断?使用的是哪个例程呢?
我明天拿板子试一下
使用相关的API会简单一些
http://www.ti.com/lit/ug/spruex3u/spruex3u.pdf
硬件, 射频和私有技术
Daoming Liu:
回复 Susan Yang:
您好,谢谢您的回复。我这使用的Hello 模板,路径是C:\ti\simplelink_cc13x2_26x2_sdk_3_30_00_03\examples\rtos\CC26X2R1_LAUNCHXL\sysbios\hello
系统配置里面只添加了一个绿色led.TI-RTOS timer module配置如上面的。目的是定时开启和关闭led
具体情况是这样的,设置成period in microsecs时,参数1000(1000ms)如我帖子的配置图,led不会出现期望的闪烁情况,说明失败。如果使用period in counts,参数1000000(具体定时器频率我没仔细研究,大概设置的周期),led会出现明显的闪烁情况,说明当前设置可以成功。
针对第一种不闪烁的情况,我在中断函数加入断点,发现可以进入led可以亮灭,但是取消断点之后,led不会出现闪烁情况。
主要c代码如下:
#include <xdc/std.h> #include <xdc/runtime/System.h>/* BIOS Module Headers */ #include <ti/sysbios/BIOS.h>#include <ti/drivers/Board.h>#include <ti/drivers/GPIO.h>#include "ti_drivers_config.h"#include <ti/drivers/Timer.h> #include <ti/drivers/timer/GPTimerCC26XX.h>void hwi_ledController(){GPIO_toggle(CONFIG_LED_0); }int main() {Board_init();GPIO_init();System_printf("hello world\n");BIOS_start();return(0); }
Daoming Liu:
回复 Susan Yang:
您好,您是否使用period in microsecs成功中断?
Susan Yang:
回复 Daoming Liu:
很抱歉,现在才有空弄
我试了一下,两者都是可以闪烁的
附上period in microsecs
Daoming Liu:
回复 Susan Yang:
您好,首先真的感谢您的回复。
我也是使用period in microsecs,并且在中断函数中设置断点的确可以进入中断,但是如果把断点取消,led并不会闪烁。是周期(1000)设置有问题吗?您的也是设置的1000,能否看到闪烁的现象?这个应该是个很简单的问题,但是困扰我很久。仅仅修改一下周期类型就会产生不同结果,这使我很困惑。
Susan Yang:
回复 Daoming Liu:
好的,谢谢反馈。
我今天再测试一下后给您回复
Susan Yang:
回复 Daoming Liu:
请您用 C:\ti\simplelink_cc13x2_26x2_sdk_3_30_00_03\examples\rtos\CC26X2R1_LAUNCHXL\drivers\timerled 试一下
PeriodType_MICROSECS — Period value is in microseconds.微秒为单位
PeriodType_COUNTS — Period value is in counts. 默认一个count代表10微秒1000的话有可能人眼无法识别闪烁
我用timerled ,params.period = 1000000;很容易识别的
Susan Yang:
回复 Daoming Liu:
物体在快速运动时, 当人眼所看到的影像消失后,人眼仍能继续保留其影像0.1-0.4秒左右的图像,这种现象被称为视觉暂留现象。是人眼具有的一种性质。人眼观看物体时,成像于视网膜上,并由视神经输入人脑,感觉到物体的像。但当物体移去时,视神经对物体的印象不会立即消失,而要延续0.1 -0.4秒的时间,人眼的这种性质被称为“眼睛的视觉暂留”。
您可以尝试一下加大Period的值