IC: CC2642
SDK: simplelink_cc13x2_26x2_sdk_3_20_00_68
官方的是这样的:
static void SimplePeripheral_clockHandler(UArg arg) {spClockEventData_t *pData = (spClockEventData_t *)arg;if (pData->event == SP_PERIODIC_EVT){// Start the next periodUtil_startClock(&clkPeriodic);// Post event to wake up the applicationSimplePeripheral_enqueueMsg(SP_PERIODIC_EVT, NULL);}else if (pData->event == SP_READ_RPA_EVT){// Start the next periodUtil_startClock(&clkRpaRead);// Post event to read the current RPASimplePeripheral_enqueueMsg(SP_READ_RPA_EVT, NULL);}else if (pData->event == SP_SEND_PARAM_UPDATE_EVT){// Send message to appSimplePeripheral_enqueueMsg(SP_SEND_PARAM_UPDATE_EVT, pData);} }
我的是这样的:
void Clock0_handler(UArg arg) {//uart0 send } void Clock1_handler(UArg arg) {//read adc//oled display }
我还新建了一个任务:
void Test_createTask() {Task_Params taskParams;// Configure taskTask_Params_init(&taskParams);taskParams.stack = testTaskStack;taskParams.stackSize = TEST_TASK_STACK_SIZE;taskParams.priority = TEST_TASK_PRIORITY;Task_construct(&testTask, Test_taskFxn, &taskParams, NULL); }
static void Test_taskFxn(UArg a0, UArg a1) {uint32_t events=0;oled_init();uart_init();for(;;){events = TestEvent_pend(EVENT_START_TEST|EVENT_MY_UARTEMULATRO, 0x0fffffff);if(events){if (events & EVENT_START_TEST){age_board_process();}else if (events & EVENT_MY_UARTEMULATRO){MyEvent_uartEmulatorHandle();//scif 串口发送}}events=0;} }
Clock0_handler每秒运行一次,使用uart0发送数据,出现的问题是:不定时死机,有时候10秒,有时候30多秒,几分钟,几小时,大多数都在30多秒就死机了,
请问这是因为定时器的问题吗?
Viki Shi:
讨论一下,稍后回复
Erha:
回复 Viki Shi:
谢谢!请问是不是不能这样用?
Erha:
回复 YiKai Chen:
感谢!
Viki Shi:
回复 Erha:
貌似不是时钟的问题,请看一下TI 工程师的最新回复,然后根据回复检查一下内存: e2e.ti.com/…/3366444
Erha:
回复 Viki Shi:
我按照 YiKai Chen 说的方法,不在Clock0_handler操作uart0后不会死机了。