話不多說,直接上步驟:
1.準備一個KEA128的空工程,如LED閃爍工程
2.去除工程中的PendSV_Handler和SVC_Handler,以免報錯重定義
3.將Free_RTOS相關文件複製入系統,這裏我是從原子的工程裏面複製來的
4.將RTOS系統文件加入工程,KEA128是CM0+內核的,所以port.c應該選擇 portable\RVDS\ARM_CM0中的
5.修改FreeRTOSConfig.h中的各項宏定義:
1.configUSE_PORT_OPTIMISED_TASK_SELECTION 設置爲0,CM0+內核不支持CLZ指令
2.configCPU_CLOCK_HZ 設置系統頻率,我這裏爲40M
3.configTICK_RATE_HZ 設置時鐘節拍,這裏爲1000
4.configMINIMAL_STACK_SIZE 設置空閒任務使用的堆棧大小,這裏爲128
5.configTOTAL_HEAP_SIZE 設置給系統使用的總內存大小,這裏爲8KB,即總內存的一半
6.configLIBRARY_LOWEST_INTERRUPT_PRIORITY 設置最低中斷優先級,由於KEA128只有兩位用於優先級配置,所以這裏爲3
7.configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 設置系統可管理的最高中斷優先級,我這裏設置爲2,即優先級0、1 不被系統控制
8.configPRIO_BITS 設置NVIC使用幾個位來配置中斷優先級,這裏上面說過了,爲2
6.增加 SysTick_Handler 的處理
void SysTick_Handler(void)
{
if(xTaskGetSchedulerState()!=taskSCHEDULER_NOT_STARTED)//ϵͳÒѾÔËÐÐ
{
xPortSysTickHandler();
}
}
7.主函數中初始化任務前記得初始化SysTick,並把中斷頻率定爲1000HZ
至此大功告成!需要源代碼的可以在此下載:https://download.csdn.net/download/u011764302/12536057