转自:http://bbs.armfly.com/read.php?tid=7140
1. 在FreeRTOS的demo文件夹中拷贝对应的FreeRTOSConfig.h文件后,需要加入一行:
#define configUSE_MUTEXES 1
2. 在FreeRTOSConfig.h文件中定义如下几行,这样子就不用改标准的启动文件了!(不用百度的方法)
#define vPortSVCHandler SVC_Handler
#define xPortPendSVHandler PendSV_Handler
#define xPortSysTickHandler SysTick_Handler
3. stm32fxxx_it.c 中需要删除默认的3个中断空函数,就是上面define的3个空函数。因为FreeRTOS的port.c中定义了它需要的这3个中断函数。
4. 如果使用emwin的话,需要把GUIConf.h中的#define GUI_OS (1)
5. 而且GUI_X文件必须换成带OS支持的文件。 如例程中的GUI_X_FreeRTOS。这个文件中主要改了emwin的tick的获取方式,延时方式等。emwin的时钟基准全部来自FreeRTOS的函数。比如这里是:
int GUI_X_GetTime(void)
{
return ((int) xTaskGetTickCount()); //用的FreeRTOS的函数
}
而以前单emwin的时候,只是返回一个tick的全局变量即可。
总的说来,FreeRTOS是基石,它定义了systick的中断,管理了systick的配置,而且选择相应的port.c和portmarco.h文件后,这些配置只用3个中断向量重定义即可。emwin的时钟只能使用FreeRTOS提供的相关时钟函数。