在前面已经把FreeRTOS移植成功,并有一个DEMO可以运行,但说如果仅仅是这样云里雾里的去让自己的产品跑FreeRTOS,心里肯定是很荒的,接下来是一步步的学习下去吧。下面是我使用的配置文件,也是从官方的DEMO里复制出来的。
#define configUSE_PREEMPTION 1 //为1时RTOS使用抢占式调度器,为0时RTOS使用协作式调度器(时间片)。
#define configUSE_IDLE_HOOK 0 //设置为1使用空闲钩子(Idle Hook类似于回调函数),0忽略空闲钩子。
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( 100000000UL ) //系统时钟100M,由硬件决定
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) //Systick,1000,也是FreeRTOS的时钟节拍
#define configMAX_PRIORITIES ( 9 ) //配置应用程序有效的优先级数目。任何数量的任务都可以共享一个优先级,使用协程可以单独的给与它们优先权。
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 90 ) //定义空闲任务使用的堆栈大小
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 10 * 1024 ) ) //RTOS内核总计可用的有效的RAM大小
#define configMAX_TASK_NAME_LEN ( 10 )
#define configUSE_TRACE_FACILITY 1 //设置成1表示启动可视化跟踪调试,会激活一些附加的结构体成员和函数
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1 //其它共享空闲优先级的用户任务就绪时,空闲任务立刻让出CPU,用户任务运行,这样确保了能最快响应用户任务。
#define configUSE_MUTEXES 1 //使用互斥信号量
#define configQUEUE_REGISTRY_SIZE 0 //1.它允许在调试GUI中使用一个队列的文本名称来简单识别队列;2.包含调试器需要的每一个记录队列和信号量定位信息;