GD32F103移植FreeRTOS

前言

GD32F103C8T6号称可以与STM32F103C8T6芯片完全兼容,PinToPin设计,STM32的程序几乎不用怎么修改便可以直接在芯片上运行。基于这个思路,可以参考STM32F103FreeRTOS的移植思路移植系统。

移植步骤

下载FreeRTOS源码

从FreeRTOS官网下载系统源码,官方地址为:FreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensionsxx

下载最新版本的源码,当前版本为202112.00

下载完成之后解压文件,得到以下文件 

 

文件夹内部的文件就不多做介绍了,大家有兴趣可以在网上查找相关的内容。

FreeRTOS源文件拷贝

工程新建FreeRTOS文件夹,用于存储源文件,接着将FreeRTOSv202112.00\FreeRTOS\Source文件夹内部的所有文件考到自己工程文件夹里。

拷贝完成

 打开portable文件夹,保留MemMangRVDS文件夹内容,其余删除。

由于GD32F103完全兼容STM32的程序,所以我们可以把使用STM32F103的配置文件,配置文件的路径为FreeRTOSv202112.00\FreeRTOS\Demo\CORTEX_STM32F103_Keil,如下图所示。

 将其拷贝至自己工程目录下,我放在了Include文件夹下面。

Keil工程添加FreeRTOS文件

添加FreeRTOS目录,添加源代码。

添加heap_4.c文件,文件路径为:\portable\MemMang

添加port.c文件,文件路径为\portable\RVDS\ARM_CM3

修改FreeRTOSConfig.h文件

将configCPU_CLOCK_HZ修改成108MHz,添加“#define INCLUDE_xTaskGetCurrentTaskHandle   1”配置。

将FreeRTOS端口中断处理程序映射到CMSIS标准名称的定义。 

修改gd32f10x_it.c文件

将SVC_Handler和PendSV_Handler这两个函数屏蔽,否则会出现重复定义。

在 gd32f10x_it.c文件头部添加xPortSysTickHandler函数声明。

 在SysTick_Handler函数内部调用xPortSysTickHandler函数。

添加Include文件

按照以上步骤,FreeRTOS移植完成了,接下来编写测试程序验证是否移植成功。

测试与验证

编写测试程序

#include <stdio.h>
#include "gd32f10x.h"
#include "systick.h"
#include "FreeRTOS.h"
#include "Task.h"


void LED_Init(void)
{
	rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_GPIOB);
    rcu_periph_clock_enable(RCU_AF);

    gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP, ENABLE);
    
    gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_12);
    gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8);


    gpio_bit_reset(GPIOB, GPIO_PIN_4);
}

void LED_Ctrl(int value)
{
    if(value == 0)
	    gpio_bit_reset(GPIOA, GPIO_PIN_12);
	else if(value == 1)
		gpio_bit_set(GPIOA, GPIO_PIN_12);
			
}


void Task_Led1(void * pvParameters)
{
	while(1)
	{
		LED_Ctrl(0);	
		vTaskDelay(500);
		LED_Ctrl(1);	
		vTaskDelay(500);
	}
}
 
 

int main(void)
{
	nvic_priority_group_set(NVIC_PRIGROUP_PRE1_SUB3);
	LED_Init();
	
	xTaskCreate(Task_Led1,"TaskLed1",configMINIMAL_STACK_SIZE,NULL,2,NULL);
	vTaskStartScheduler();
	
	while(1){}
	
}

 通过程序可以验证LED按0.5S闪烁。

总结

GDF103系列芯片使用FreeRTOS进行单片机开发可以快速搭建搭建应用框架,专注应用层开发。希望我们国产芯片越做越强吧。

GD32官网:兆易创新

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: GD32F303是一款基于ARM Cortex-M4内核的微控制器,支持Keil开发环境和RTOS(实时操作系统)。 GD32F303是GigaDevice公司研发的一款高性能微控制器,采用ARM Cortex-M4内核,主频最高可达72MHz。它具有丰富的外设资源,包括多个定时器、通用串行接口、通用并行接口、SPI、I2C等,能够满足多种应用需求。 Keil是一款强大的嵌入式系统开发工具,提供了一整套用于编译、调试和程序下载的工具链。它集成了编译器、调试器和仿真器,可以方便地进行代码编写和调试。在Keil环境下,我们可以针对GD32F303进行开发,提高开发效率。 RTOS是一种实时操作系统,它可以为多任务应用提供任务管理、时间管理、资源管理以及任务间通信等功能,使系统具有更高的实时性和可靠性。在GD32F303上使用RTOS可以很好地实现多任务调度和并发执行,提高系统的效率和响应速度。 在GD32F303上使用RTOS有助于解决多任务协作和资源共享的问题。它可以将系统分成多个独立的任务,并通过调度算法分配处理器时间片,从而实现多任务的并发执行。同时,RTOS还提供了任务间通信和互斥机制,保证任务之间的数据共享和操作的正确性。 总之,GD32F303与RTOS和Keil开发环境的结合,为嵌入式系统开发带来了便利和高效。它能够满足多任务应用的需求,提供可靠的任务管理和资源管理功能,实现系统的高性能和实时性。 ### 回答2: gd32f303 rtos keil是指使用Keil开发工具和gd32f303微控制器平台进行RTOS开发。gd32f303是一款由吉大正元微电子有限公司(GigaDevice Semiconductor Inc.)生产的Cortex-M4内核的微控制器芯片,具有丰富的外设接口和强大的功能。 RTOS是实时操作系统(Real-Time Operating System)的缩写,它提供了任务管理、内存管理、中断处理等功能,可以使我们更方便地编写嵌入式系统的软件。 Keil是一种集成开发环境(IDE),它提供了一整套用于开发、调试和测试嵌入式系统软件的工具。Keil与gd32f303 微控制器平台兼容,并可与RTOS相结合使用,以提供更加高效和可靠的嵌入式系统开发环境。 使用gd32f303 rtos keil可以帮助开发人员更轻松地构建和管理多个任务,实现实时调度和资源共享。Keil提供了友好的图形用户界面和调试工具,可帮助开发人员更快地理解和排查问题。 通过gd32f303 rtos keil,开发人员可以充分利用gd32f303微控制器平台的丰富外设和强大性能来开发各种应用,如物联网设备、工业自动化、消费电子等。 总之,gd32f303 rtos keil组合使得嵌入式系统开发更加高效和可靠,能够快速实现实时任务调度和资源管理,并利用gd32f303微控制器平台的优势,为各种应用提供更好的性能和可靠性。 ### 回答3: GD32F303是一款基于ARM Cortex-M4内核的微控制器,采用了GD32系列的芯片架构。这一系列芯片性能强大,适用于高性能应用。 RTOS是实时操作系统的缩写,是一种可以实时响应任务的操作系统。在嵌入式系统中,RTOS常用于需要实时控制和实时响应的应用。Keil是一家知名的嵌入式软件工具提供商,他们提供了一套完整的开发工具,包括集成开发环境(IDE)和编译器。 有关GD32F303和RTOS的结合使用,我们可以使用Keil提供的工具来开发应用。首先,我们可以使用Keil IDE来编写代码,并使用Keil编译器进行编译。然后,我们可以使用Keil提供的调试工具来调试应用程序,以确保它的运行正常。 对于RTOS的选择,可以根据具体需求来选择适合的RTOS。例如,如果需要高度实时性能和可靠性,可以选择一些常见的RTOS,如FreeRTOS或RTOS。这些RTOS提供了丰富的功能,如任务调度,同步和通信机制,以及错误处理等。 在使用GD32F303与RTOS开发应用时,需要先选择一个适合的RTOS,并了解其API和编程模型。然后,根据需求编写应用程序,使用RTOS提供的函数和特性来完成各种任务。 总的来说,GD32F303与RTOS相结合使用,可以实现高性能的实时控制和响应。Keil提供了完整的开发工具,可以帮助开发人员轻松地开发GD32F303与RTOS的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值