#ifndef FREERTOS_CONFIG_H

#define FREERTOS_CONFIG_H

#include “stm32f10x.h”

#include “bsp_usart.h”

//针对不同的编译器调用不同的stdint.h文件

#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__)

#include 《stdint.h》

extern uint32_t SystemCoreClock;

#endif

//断言

#define vAssertCalled(char,int) printf(“Error:%s,%d\r\n”,char,int)

#define configASSERT(x) if((x)==0) vAssertCalled(__FILE__,__LINE__)

/************************************************************************

* FreeRTOS基础配置配置选项

*********************************************************************/

/* 置1:RTOS使用抢占式调度器;置0:RTOS使用协作式调度器(时间片)

*

* 注:在多任务管理机制上,操作系统可以分为抢占式和协作式两种。

* 协作式操作系统是任务主动释放CPU后,切换到下一个任务。

* 任务切换的时机完全取决于正在运行的任务。

*/

#define configUSE_PREEMPTION 1

//1使能时间片调度(默认式使能的)

#define configUSE_TIME_SLICING 1

/* 某些运行FreeRTOS的硬件有两种方法选择下一个要执行的任务:

* 通用方法和特定于硬件的方法(以下简称“特殊方法”)。

*

* 通用方法:

* 1.configUSE_PORT_OPTIMISED_TASK_SELECTION 为 0 或者硬件不支持这种特殊方法。

* 2.可以用于所有FreeRTOS支持的硬件

* 3.完全用C实现,效率略低于特殊方法。

* 4.不强制要求限制最大可用优先级数目

* 特殊方法:

* 1.必须将configUSE_PORT_OPTIMISED_TASK_SELECTION设置为1。

* 2.依赖一个或多个特定架构的汇编指令(一般是类似计算前导零[CLZ]指令)。

* 3.比通用方法更高效