3565|2

267

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【GD32E503评测03】 5分钟移植好FreeRTOS到GD32E503 [复制链接]

  本帖最后由 caizhiwei 于 2021-1-19 22:17 编辑

1. 利用MDK5超强大的功能,可以实现FreeRTOS的快速移植。

首先,打开MDK的Pack工具包,勾线FreeRTOS中间件:

到这里后,编译肯定有3个报错,三个函数已经重复定义了:

在 FreeRTOSConfig.h中有如下三个接口的定义:

/* Map the FreeRTOS port interrupt handlers to their CMSIS standard names. */
#define xPortPendSVHandler                    PendSV_Handler
#define vPortSVCHandler                       SVC_Handler
#define xPortSysTickHandler                   SysTick_Handler

在gd32e50x_it.c 需要屏蔽掉这些函数即可。

/*!
    \brief      this function handles SVC exception
    \param[in]  none
    \param[out] none
    \retval     none
*/
//void SVC_Handler(void)
//{
//}

/*!
    \brief      this function handles DebugMon exception
    \param[in]  none
    \param[out] none
    \retval     none
*/
void DebugMon_Handler(void)
{
}

/*!
    \brief      this function handles PendSV exception
    \param[in]  none
    \param[out] none
    \retval     none
*/
//void PendSV_Handler(void)
//{
//}

/*!
    \brief      this function handles SysTick exception
    \param[in]  none
    \param[out] none
    \retval     none
*/
//void SysTick_Handler(void)
//{
//    delay_decrement();
//}

第三部,添加上我们我们的任务创建函数即可:

#include "systick.h"

#include "gd32e503v_eval.h"
#include "gd32e503v_lcd_eval.h"

#include "bsp_touch.h"
#include "picture.h"

#include <stdio.h>

#include "FreeRTOS.h"
#include "task.h"


#define LED1_TASK_PRIO    ( tskIDLE_PRIORITY + 2 )

void LED1_task(void * pvParameters);



static void led_init(void)
{
    /* initialize the leds */
    gd_eval_led_init(LED1);
    gd_eval_led_init(LED2);
    gd_eval_led_init(LED3);
    gd_eval_led_init(LED4);

    /* close all of leds */
    gd_eval_led_off(LED1);
    gd_eval_led_off(LED2);
    gd_eval_led_off(LED3);
    gd_eval_led_off(LED4);
}


/*!
    \brief      main function
    \param[in]  none
    \param[out] none
    \retval     none
*/
int main(void)
{
    //systick_config();

	led_init();
	
	 /* configure EVAL_COM0 */
    gd_eval_com_init(EVAL_COM0);

    /* configure TAMPER key */
    gd_eval_key_init(KEY_B, KEY_MODE_GPIO);
	
	printf("\r\nHello,eeworld!");
	

    /* configure the GPIO of SPI touch panel */
    touch_panel_gpio_configure();

    //delay_1ms(50);  

	/* configure the EXMC access mode */
    exmc_lcd_init();	
    /* initialize the LCD */
    lcd_init();

    /* clear the LCD screen */
    lcd_clear(LCD_COLOR_WHITE);

	uint8_t len_s;
	char *str;
	uint16_t i;
	
	char_format_struct char_format;
	
	char error_string[]="Hello,EEWORLD!";
	
    /* draw character on LCD screen */
    len_s = sizeof(error_string)-1;
    str = error_string;
    
 
// 	/* configure char format */
//    char_format.char_color = LCD_COLOR_RED;
//    char_format.bk_color = LCD_COLOR_WHITE;
//    char_format.direction = CHAR_DIRECTION_VERTICAL;
//    char_format.font = CHAR_FONT_8_16; 
//	
//    for (i = 0; i < len_s; i++)
//	{
//        lcd_char_display((8*i), 100 + 24, *str++, char_format);
//    }
	

	
	 /* configure char format */
    char_format.char_color = LCD_COLOR_BLUE;
    char_format.bk_color = LCD_COLOR_WHITE;
    char_format.direction = CHAR_DIRECTION_VERTICAL;
    char_format.font = CHAR_FONT_16_24; 
	
    for (i = 0; i < len_s; i++)
	{
        lcd_char_display((16*i), 10, *str++, char_format);
    }
	

	/* 设置优先级分组为4,16个优先级全是抢占优先级 */
    nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0);
	
	
	xTaskCreate(LED1_task, "LED1", configMINIMAL_STACK_SIZE, NULL, LED1_TASK_PRIO, NULL);
	
	/* start scheduler */
    vTaskStartScheduler();
	
    while(1){
    }
	
}





void LED1_task(void * pvParameters)
{  
    for( ;; ){
        /* toggle LED2 each 500ms */
        gd_eval_led_toggle(LED1);;
        vTaskDelay(100);
    }
}


 

最后编译OK,下载运行,LED开始闪烁,OS已经运行起来了!

是不是很简单,没有复杂的 各种文件的添加到工程等等。

欢迎多多交流~

 

最新回复

厉害了!移植真的快,刘辟刘辟,到时候我也试一下!嘿嘿   详情 回复 发表于 2021-1-20 15:19

赞赏

1

查看全部赞赏

点赞(1) 关注(1)
个人签名

gitee/casy

 
 

回复
举报

1942

帖子

2

TA的资源

版主

沙发
 

厉害了!移植真的快,刘辟刘辟,到时候我也试一下!嘿嘿

点评

多多交流,一起学习进步  详情 回复 发表于 2021-1-21 08:56
 
 
 

回复

267

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
w494143467 发表于 2021-1-20 15:19 厉害了!移植真的快,刘辟刘辟,到时候我也试一下!嘿嘿

多多交流,一起学习进步

个人签名

gitee/casy

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表