我正在尝试将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
和中断控制器之间的关系
答案 0 :(得分:1)
RTOS和您的应用程序可能正在使用相同的计时器中断。检查RTOS port.c文件以查找它用于计时器滴答的计时器。查看中断函数和port.c中断函数定义。