主题中讨论的其他器件:CC2650、TIMAC、 UNIFLASH、 CC2651R3、SYSBIOS
我正在使用 TIMAC (tirtos_simplelink_2_11_01_09)、并尝试编写一个可使一些 LED 闪烁的简单应用程序。 此程序在调试会话期间按预期工作、但当我断开电源并重新插入时、它将触发单个计时器事件、然后冻结。 如果我进入 Uniflash 并发出 CPU 或系统复位、则 LED 会按需闪烁。 如果我发出电路板复位命令、LED 永远不会亮起。 我是在 msa_cc2650示例应用程序中反向工作的、因此这里存在大量膨胀代码、但相关部分
Void main() { Task_Params taskParams; // set RFC mode to support IEEE802.15.4 // Note: This must be done before the RF Core is released from reset! SET_RFC_MODE( RFC_MODE_IEEE ); // enable iCache prefetching VIMSConfigure(VIMS_BASE, TRUE, TRUE); // Enable cache VIMSModeSet( VIMS_BASE, VIMS_MODE_ENABLED ); /* Initialization for board related stuff such as LEDs * following TI-RTOS convention */ PIN_init(BoardGpioInitTable); // Configure task. Task_Params_init(&taskParams); taskParams.stack = myTaskStack; taskParams.stackSize = MSA_TASK_STACK_SIZE; taskParams.priority = 1; Task_construct(&myTask, taskFxn, &taskParams, NULL); BIOS_start(); /* enable interrupts and start SYS/BIOS */ } /************************************************************************************************** * GLOBAL VARIABLES **************************************************************************************************/ /* Clock resorces */ static Clock_Params msaLed4Params; static Clock_Struct msaLed4; /** LED globals */ static PIN_Config ledPinTable[] = { Board_LED1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED1 initially off */ Board_LED2 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED2 initially off */ Board_LED3 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED2 initially off */ Board_LED4 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED2 initially off */ PIN_TERMINATE /* Terminate list */ }; /* LED pin state */ static PIN_State ledPinState; /* LED Pin Handle */ PIN_Handle ledPinHandle; static void MSA_ClockFxn(UArg param) { static bool index = false; PIN_setOutputValue(ledPinHandle, Board_LED1, index ? Board_LED_ON : Board_LED_OFF); PIN_setOutputValue(ledPinHandle, Board_LED3, index ? Board_LED_ON : Board_LED_OFF); PIN_setOutputValue(ledPinHandle, Board_LED2, index ? Board_LED_OFF : Board_LED_ON); PIN_setOutputValue(ledPinHandle, Board_LED4, index ? Board_LED_OFF : Board_LED_ON); index = !index; } static void MSA_Init(void) { UInt msaLed4Period = MSA_LED4_INITIAL_PERIOD * 1000 / Clock_tickPeriod; ledPinHandle = PIN_open(&ledPinState, ledPinTable); /* Initialize clock poll parameters */ Clock_Params_init(&msaLed4Params); /* Create a periodic poll timer */ msaLed4Params.period = msaLed4Period; msaLed4Params.startFlag = TRUE; msaLed4Params.arg = (UArg)MSA_LED4_EVENT; Clock_construct(&msaLed4, MSA_ClockFxn, msaLed4Period, &msaLed4Params); } void msa_task(void) { /* Initialize application */ MSA_Init(); /* No return from MSA process */ //MSA_Process(); }