将freeRTOS集成到现有项目中

时间:2016-07-17 12:04:59

标签: c embedded printf interrupt stdio

我正在尝试将freeRTOS集成到我在AT32UC3A0512上运行的应用程序。我为EVK1100下载了一个freeRTOS项目示例(它支持AT32UC3A)并尝试包含内核源文件,因此我的应用程序层次结构如下所示:

src
|ASF
|main.c
|freertos 
   |freertos-7.0.0
      |source

主要看起来像

int main()
{
     char str[5];
     uint8_t num;

     enable_Timer();
     enable_Timer_Interrupt();
     sprintf (str, %03d, num);

     while(1)
     {
           // Wait the timer interrupt to happen 
     }
}

现在只需从我的项目中排除freertos文件夹,就会触发定时器中断并且一切正常,

但是如果我包含freertos文件夹(没有包含也没有调用freertos源),则不会触发定时器中断。

看起来很疯狂,但我不知道sprintf的行为是如何改变的,而且我也看不到sprintf和中断控制器之间的关系

1 个答案:

答案 0 :(得分:1)

RTOS和您的应用程序可能正在使用相同的计时器中断。检查RTOS port.c文件以查找它用于计时器滴答的计时器。查看中断函数和port.c中断函数定义。