概述
gd32E103的芯片比较强大,m4的内核,120mhz主频,跑freertos是没有问题的。作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。FreeRTOS内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU总是让处于就绪态的、优先级最高的任务先运行。FreeRT0S内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU的使用时间。
下面讲具体步骤。
第一、把freertos的文件拷贝到工程目录下面。
第二、加入这4个头文件
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
#include "semphr.h"
第三、打开freeRTOSConfig文件,对各个参数进行配置。我的配置如下
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ ( ( unsigned long ) 120000000 )
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
#define configMAX_PRIORITIES ( 5 )
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 4 * 1024 ) )
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0
#define configIDLE_SHOULD_YIELD 1
第四步:设置中断优先级组
nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0);
必须这样设置,否则运行不正常。
第五步:
修改systick_config函数
void systick_config(void)
{
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
#endif
/* setup systick timer for 1000Hz interrupts */
if (SysTick_Config(SystemCoreClock / 1000U)){
/* capture error */
while (1){
}
}
/* configure the systick handler priority */
NVIC_SetPriority(SysTick_IRQn, 0x00U);
}
#define xPortPendSVHandler PendSV_Handler
#define vPortSVCHandler SVC_Handler
#define xPortSysTickHandler SysTick_Handler
重新定向这个3个函数,保证指向新的函数,去掉以前旧的函数。
这个很好理解,就是操作系统的心跳函数。
第六步
前面的工作做完了,就可以在主函数里面启动操作系统了。
启动部分如下
xTaskCreate((TaskFunction_t )start_task, //????
(const char* )"start_task", //????
(uint16_t )configMINIMAL_STACK_SIZE, //??????
(void* )NULL, //??????????
(UBaseType_t )tskIDLE_PRIORITY + 3, //?????
(TaskHandle_t* )&StartTask_Handler); //????
vTaskStartScheduler(); //??????
while (1);
初始化任务,里面可以用来初始化数据,同时启动你想启动的任务。这个小小的系统就运行起来了。
最后
以上就是合适保温杯为你收集整理的gd32e103加入freertos的步骤的全部内容,希望文章能够帮你解决gd32e103加入freertos的步骤所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复