基于Keil的RTE(run time environment)配置GD32开发环境,移植FreeRTOS

本文讲述了作者从STM32转到GD32芯片的开发经历,强调了国产芯片在性价比、性能和易用性上的提升,以及如何在GD32上使用KeilRTE工具快速搭建开发环境,包括创建工程、配置中断和融合FreeRTOS的过程。
摘要由CSDN通过智能技术生成

前言:

10多年前就用STM32了,最近从STM32转到GD32,感觉国产的芯片发展是真的快,不但更便宜,还更快更好用了(是在是受不了STM32 I2C BUSY的那个BUG)。

先说下,实际上STM32的程序可以直接烧了到GD32里面,用串口或者是JLINK、DAP下载器都可以,程序会直接运行。

STM32最简单的开发应该是用STM32CubeMX+Keil 或者是 STM32CubeIDE(个人感觉不如keil)。而GD32我试了一下,应该最快最方便的应该是用keil 的 RTE工具生成。我测试了一下,其实STM32也是可以用类似的方法从RTE生成的。

开发环境+工具:

Keil 5.28

GD32F10x_AddOn_V2.3.0(从GigaDevice下载,或者是keil 的包管理工具下都行)

JLINK

最小工程创建具体步骤:

1、新建工程,选择器件:

2、在打开的RTE配置里面,选择几个最基本的组件,然后生成代码。

3、新建用户代码。

另外需要注意的是,RTE集成的芯片的启动代码(startup.s),是hd(高密度版本的)。我对比了一下,这个启动代码应该是兼容中密度的(例如我现在用的就是103c8),但是如果是其他版本的,需要自己更换。

4、写一个最简单的main程序

5、GD32的编译器需要配置使用5.06的,默认的是5,是无法正常调试的。

6、选择调试器以及调试接口,按自己的实际硬件来。

7、允许调试,可以看到程序正常运行。

另外,默认用的是108M的速度,这个可以根据自己的需求进行变更。

默认生成的代码里面是没有中断入口的。如果需要的话可以自己拖一个现成的中断文件,或者是需要什么中断,自己写一个,入口的名字都在startup里面写了。

融合FreeRTOS:

1、在RTE里面选上FreeRTOS的组件

2、中断相关的需要进行两处修改。因为STM32/GD32都是16级的中断有限级,与FreeRTOSConfig.h里面的默认值是不一样的,不改会卡死在RTOS的代码里面。

3、简单写一段创建进程的测试代码:

#include <freertos.h>
#include <task.h>
#include <gd32f10x.h>

//#include "stm32f10x_conf.h"

TaskHandle_t test1_hdl;

void test1(void *pvPara)
{
  while (1)
  {
    vTaskDelay(500);
  }
}

int main()
{

  taskENTER_CRITICAL();
  xTaskCreate(
    (TaskFunction_t) test1,
    "test1",
    256,
    (void *)NULL,
    1,
    &test1_hdl
  );
  
  taskEXIT_CRITICAL(); 
    
  vTaskStartScheduler();
  while (1);
}

可见程序准确执行,并停留在任务的调试点里面。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值