Part Number:CC2640R2F
以下程序是我在该论坛找的一位工程师发布的关于EDGE TIME功能的。
在前段时间,我将该程序直接复制下来可以正常进行中断(可以正常进入返回函数),现在实验室购置了新电脑,我在新电脑上安装了CCS10,下载了CC2640simplelink SDK 5_10,将该段程序粘贴于C:\ti\simplelink_cc2640r2_sdk_5_10_00_02\examples\rtos\CC2640R2_LAUNCHXL\drivers\pwmled2中,并对main函数中的pwm函数也更换为了此边沿计时函数。
但仍然无法正常进入返回函数,今天在使用以前更改函数时就发现了这个问题(以前电脑下载到CC2640LUANCHPAD可以正常中断),然后我试了很多程序,最终找到了最原始的例程,发现还是无法中断(进入返回函数),因此特来询问一下。
任何提示或解决方法都行,谢谢了!
/***** Includes *****/ /* Standard C Libraries */ #include <stdlib.h> #include <stdio.h> /* RTOS header files */ #include <ti/sysbios/BIOS.h> #include <ti/sysbios/knl/Task.h> /* TI Drivers */ #include <ti/drivers/rf/RF.h> #include <ti/drivers/PIN.h> #include <ti/drivers/pin/PINCC26XX.h> #include <ti/drivers/timer/GPTimerCC26XX.h> /* Driverlib Header files */ #include DeviceFamily_constructPath(driverlib/rf_prop_mailbox.h) /* Board Header files */ #include "Board.h" /***** Variable declarations *****/ /* Pin driver handle */ static PIN_Handle ledPinHandle; static PIN_State ledPinState; PIN_Config pinTable[] = {IOID_0 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_NEGEDGE ,PIN_TERMINATE }; GPTimerCC26XX_Handle hTimer0A; //static uint8_t counter = 0; void timerCallback0A(GPTimerCC26XX_Handle handle, GPTimerCC26XX_IntMask interruptMask) {int i;i = GPTimerCC26XX_getValue(hTimer0A);printf("%d\n",i); } /***** Function definitions *****/ void *mainThread2(void *arg0) {/* Open LED pins */ledPinHandle = PIN_open(&ledPinState, pinTable);if (ledPinHandle == NULL){while(1);}GPTimerCC26XX_Params params0A;GPTimerCC26XX_Params_init(¶ms0A);params0A.width= GPT_CONFIG_16BIT;params0A.mode= GPT_MODE_EDGE_TIME;params0A.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF;hTimer0A = GPTimerCC26XX_open(CC2640R2_LAUNCHXL_GPTIMER0A, ¶ms0A);if(hTimer0A == NULL){while(1);}GPTimerCC26XX_registerInterrupt(hTimer0A, timerCallback0A, GPT_INT_CAPTURE);GPTimerCC26XX_PinMux pinMux = GPTimerCC26XX_getPinMux(hTimer0A);PINCC26XX_setMux(ledPinHandle, IOID_0, pinMux);GPTimerCC26XX_setCaptureEdge(hTimer0A, GPTimerCC26XX_NEG_EDGE);GPTimerCC26XX_setLoadValue(hTimer0A, 0xFFFF);// GPTimerCC26XX_setMatchValue(hTimer0A, 1);GPTimerCC26XX_start(hTimer0A);while(1){Task_sleep(BIOS_WAIT_FOREVER);} }
zhi qiang liu:
对了使用TIMEOUT模式定时是可以正常中断的,EDGECOUNT,EDGETIME两种捕获模式都无法正常进入中断。
,
zhi qiang liu:
对不起,是我自己用于发送PWM波的另一块MCU出了问题,导致没有正常发射PWM波
,
Albin Zhang:
好的。
BR. Albin