FreeRTOS 移植到ST Cortex-3芯片

来源:互联网 发布:淘宝产品推广咋挣钱 编辑:程序博客网 时间:2024/04/30 17:51

首先下载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

其它就参照正常的项目就可以了