微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC3200 FreeRTOS软件定时器无法进入回调函数问题

CC3200 FreeRTOS软件定时器无法进入回调函数问题

时间:10-02 整理:3721RD 点击:
CC3200 FreeRTOS软件定时器无法进入回调函数问题,请问有人用过FreeRTOS的软件定时器吗?我的配置如下:
/* Timer related defines. */
#define configUSE_TIMERS 1
#define configTIMER_TASK_PRIORITY 2
#define configTIMER_QUEUE_LENGTH 20
#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE * 2 )
#define configUSE_MALLOC_FAILED_HOOK 1
#define configENABLE_BACKWARD_COMPATIBILITY 1

TimerHandle_t g_softetimer = NULL;
void SoftTimerCallbackHandler( TimerHandle_t xTimer )
{
UART_PRINT("SoftTimerCallbackHandler\n\r");
GPIO_IF_LedToggle(MCU_ORANGE_LED_GPIO);
}

g_softetimer = xTimerCreate("SoftTimer", (1000*30 / portTICK_RATE_MS), pdTRUE, 0, SoftTimerCallbackHandler);
//g_softetimer = xTimerCreate("SoftTimer", 500, pdTRUE, (void *)0, SoftTimerCallbackHandler);
if(g_softetimer)
{
UART_PRINT("g_softetimer=%x\r\n", g_softetimer);
}
if(xTimerStart(g_softetimer, 0) != pdPASS)
{
UART_PRINT("xTimerStart Failure\n\r");
}
else
{
UART_PRINT("xTimerStart Success\n\r");
}

以上是我的代码,我用UART_PRINT("xTimerIsTimerActive=%x\r\n",xTimerIsTimerActive(g_softetimer));打印出来xTimerIsTimerActive=0,说明是定时器没有激活啊。但是我以上的代码调用的API函数返回状态都是没有问题的。。

首先确保打开定时器,CC3200也是arm核,和其他arm core比FreeRTOS的使用上不会有太大区别。

定时器RTC肯定是打开的啊,FreeRTOS都跑起来了,CC3200的Hardware RTC ticks - typical 32768 Hz是工作正常的。

最常见的是忘了开中断。

问题解决了,FreeRTOS是一个库,更改宏后,需要重新编译生成*.a,这样CC3200才能有软定时器。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top