首先下载FreeRTOS 6.02
解压后,将源文件中的portmacro.h中增加以下三行宏定义
#define vPortSVCHandler SVC_Handler
#define xPortSysTickHandler SysTick_Handler
#define xPortPendSVHandler PendSV_Handler
然后修改FreeRTOSconfig.h文件中的以下宏定议的值
#define configUSE_PREEMPTION 1 //抢先式内核
#define configUSE_IDLE_HOOK 0 //不使用空闲钩子
#define configUSE_TICK_HOOK 0 //不使用时间片钩子
#define configCPU_CLOCK_HZ ( ( unsigned long ) 48000000 ) //内部处理器执行的频率
#define configTICK_RATE_HZ ( ( portTickType ) 1000 ) // 1000Hz的时间片频率,高时间片频率意味着将减少给予每个任务的时间份额
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 1 )//应用程序任务中可用优先级的数目,不应分配高于实际使用的优先数目,占用内存
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 ) //空闲任务使用的堆栈大小
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 10 * 1024 ) ) //内核总共可用的RAM数量
#define configMAX_TASK_NAME_LEN ( 16 ) //当创建一个任务,能够给予描述任务名称的最大容许长度,包括NULL终止字节
#define configUSE_TRACE_FACILITY 0 //不使用可视化追踪功能,如果使用可视化追踪,必须提供追踪缓冲区.
#define configUSE_16_BIT_TICKS 0 //时间片计数器定义为可用的portTickType,1将使portTickType定义为16位无符号类型,0将是32位无符号类型
#define configIDLE_SHOULD_YIELD 1 //控制任务与空闲任务优先级相同时的行为,1时当其他在空闲优先级的任务准备运行时,空闲任务将立刻让出CPU,0空闭任务执行完后才让出时间
#define configKERNEL_INTERRUPT_PRIORITY 255 //应该设置为最低优先级的数值
#define configMAX_SYSCALL_INTERRUPT_PRIORITY 191
#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY 15
其它就参照正常的项目就可以了
FreeRTOS 移植到ST Cortex-3芯片
最新推荐文章于 2024-07-14 06:00:00 发布