KEA128 移植/嵌入Free_RTOS

话不多说,直接上步骤:

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

猜你喜欢

转载自blog.csdn.net/u011764302/article/details/106860561
128