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

awarenessxie   2015-9-22 21:10 楼主
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函数返回状态都是没有问题的。。


回复评论 (4)

首先确保打开定时器,CC3200也是arm核,和其他arm core比FreeRTOS的使用上不会有太大区别。 本帖最后由 freebsder 于 2015-9-22 22:28 编辑
默认摸鱼,再摸鱼。2022、9、28
点赞  2015-9-22 22:27
引用: freebsder 发表于 2015-9-22 22:27
首先确保打开定时器,CC3200也是arm核,和其他arm core比FreeRTOS的使用上不会有太大区别。

定时器RTC肯定是打开的啊,FreeRTOS都跑起来了,CC3200的Hardware RTC ticks - typical 32768 Hz是工作正常的。
点赞  2015-9-23 16:00


最常见的是忘了开中断。
点赞  2015-9-23 17:33
引用: freebsder 发表于 2015-9-23 17:33
最常见的是忘了开中断。

问题解决了,FreeRTOS是一个库,更改宏后,需要重新编译生成*.a,这样CC3200才能有软定时器。
点赞  2015-9-25 15:25
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复