您好:
关于定时器的操作,我想用边沿计数模式,没有找到相关事例。有没有配置流程和相关资料啊???
2.边沿计数模式,应该需要映射1个IO来记数外部输入的脉冲数。不知道怎么配置??
Viki Shi:
fghj dfghjk:
回复 Viki Shi:
mode改为这个,计数那个引脚上的边沿信号啊。有没有配置流程啊。边沿信号从哪里输入啊??
Viki Shi:
回复 fghj dfghjk:
在board.h里,GPTimer是如下定义的,没有指定具体物理引脚:
#define Board_GPTIMER0ACC1310_LAUNCHXL_GPTIMER0A
#define Board_GPTIMER0BCC1310_LAUNCHXL_GPTIMER0B
#define Board_GPTIMER1ACC1310_LAUNCHXL_GPTIMER1A
#define Board_GPTIMER1BCC1310_LAUNCHXL_GPTIMER1B
#define Board_GPTIMER2ACC1310_LAUNCHXL_GPTIMER2A
#define Board_GPTIMER2BCC1310_LAUNCHXL_GPTIMER2B
#define Board_GPTIMER3ACC1310_LAUNCHXL_GPTIMER3A
#define Board_GPTIMER3BCC1310_LAUNCHXL_GPTIMER3B用户可以根据应用选择需要的引脚,比如:
#define Board_GPTIMER0ABoard_PIN_RLED
或者直接:
#define Board_GPTIMER0AIOID_6引脚的具体对应关系请查看board.h和CC1310_LAUNCHXL.h
fghj dfghjk:
回复 Viki Shi:
多谢指教。顺便问一下这个引脚是随便指定的嘛??#define Board_GPTIMER0A IOID_6
Viki Shi:
回复 fghj dfghjk:
对,CC1310是引脚复用的,可以根据需要选择空闲的引脚
fghj dfghjk:
回复 Viki Shi:
哦哦,好的。明白了。我试试看哈,多谢了。
fghj dfghjk:
回复 Viki Shi:
我试着配置了下,定时器的边沿触发模式,
1.Board.h中定义
#define Board_GPTIMER0AIOID_1 //CC1310_LAUNCHXL_GPTIMER0A //mod lhj 2010292.在任务函数中初始化如下:(问题,但是没有找到用什么API来关联IOID1,或者是配置????)
3.边沿计数器手册上说是24位的,也没看到在哪里能配置啊?????
4.有没有配置相关的代码呢????
//add lhj timerGPTimerCC26XX_Params timeParams;GPTimerCC26XX_Params_init(&timeParams);timeParams.width = GPT_CONFIG_32BIT;timeParams.mode = GPT_MODE_EDGE_COUNT_UP;//GPT_MODE_PERIODIC_UP;timeParams.matchTiming = GPTimerCC26XX_SET_MATCH_NEXT_CLOCK;timeParams.direction = GPTimerCC26XX_DIRECTION_UP;timeParams.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF;gptime = GPTimerCC26XX_open(CC1310_LAUNCHXL_GPTIMER0A,&timeParams);//边沿配置GPTimerCC26XX_setCaptureEdge(gptime,GPTimerCC26XX_POS_EDGE );//正边沿计数
fghj dfghjk:
回复 Viki Shi:
您好:我现在在用timerA的边沿计数模式。使用没法得到计数值,不知道是因为配置不正确,还是其它哪地方没配置对???麻烦帮我分析一下。配置代码流程如下:
注意:用代码默认的边沿检测引脚IO23检测,定时器中断没开启,开启后也是读不到计数值。。。。。
1.第1步GPIO_setConfig(Board_GPIO_NST1001_DEC_IO23, GPIO_CFG_IN_NOPULL );//timerA 边沿检测引脚GPIO_setConfig(Board_GPIO_NST1001_P, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);//mod lhj
2.第2步定时器边沿配置******//add lhj timer edgeGPTimerCC26XX_Params timeParams;GPTimerCC26XX_Params_init(&timeParams);timeParams.width = GPT_CONFIG_16BIT;//GPT_CONFIG_32BIT;timeParams.mode = GPT_MODE_EDGE_COUNT_UP;//GPT_MODE_PERIODIC_UP;timeParams.matchTiming = GPTimerCC26XX_SET_MATCH_NEXT_CLOCK;timeParams.direction = GPTimerCC26XX_DIRECTION_UP;timeParams.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF;gptime = GPTimerCC26XX_open(CC1310_LAUNCHXL_GPTIMER0A,&timeParams);//边沿配置//GPTimerCC26XX_setMatchValue(gptime,2);GPTimerCC26XX_setCaptureEdge(gptime,GPTimerCC26XX_POS_EDGE );//正边沿计数//ClockP_FreqHz freq;
//ClockP_getCpuFreq(&freq);
//GPTimerCC26XX_Value loadVal = freq.lo *50 – 1; //5smod lhj
//GPTimerCC26XX_setLoadValue(gptime, loadVal);
//GPTimerCC26XX_registerInterrupt(gptime,interruptTimer_5s,GPT_INT_TIMEOUT);//GPTimerCC26XX_start(gptime);
//add lhj timer C_FLAG = 0; //CPUdelay(1000*48/4); //GPIO_write(Board_GPIO_NST1001_P, 1);//给NST001供电
/* Enable interrupts *///GPIO_enableInt(Board_GPIO_NST1001_DQ);//mod lhj GPTimerCC26XX_start(gptime);//add lhjwhile(1){CPUdelay(35000*48/4);//大约10000usnst1001Int_Conut = GPTimerCC26XX_getValue(gptime);//读出的计数值一直是0*******???????GPIO_toggle(Board_GPIO_LED0);CPUdelay(5000*48/4);//大约10000us//GPTimerCC26XX_start(gptime);
}
Viki Shi:
回复 fghj dfghjk:
已在e2echina.ti.com/…/195126回复