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

news/2024/7/2 23:47:31 标签: 单片机, GD32

前言:

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);
}

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


http://www.niftyadmin.cn/n/5405967.html

相关文章

技术总结: PPT绘图

目录 写在前面参考文档技巧总结PPT中元素的连接立方体调整厚度调整图形中的文本3D 图片调整渐变中的颜色 写在前面 能绘制好一个好看的示意图非常重要, 在科研和工作中好的示意图能精准表达出自己的想法, 减少沟通的成本, 可视化的呈现也可以加强自身对系统的理解, 时间很久后…

Sora惊艳出世,AI能否给人类带来新的“视界”?

2月16日&#xff0c;OpenAI公司公布了其首个文生视频大模型Sora&#xff0c;同时展示了多个由Sora生成的最长时间达一分钟的视频&#xff0c;引起科技圈震动。 钢铁侠马斯克对其发出“人类愿赌服输”的感叹&#xff0c;360董事长周鸿祎也作出“Sora意味着AGI实现将从10年缩短到…

【JavaEE】_Spring MVC 项目传参问题

目录 1. 传递单个参数 1.1 关于参数名的问题 2. 传递多个参数 2.1 关于参数顺序的问题 2.2 关于基本类型与包装类的问题 3. 使用对象传参 4. 后端参数重命名问题 4.1 关于RequestPara注解 1. 传递单个参数 现创建Spring MVC项目&#xff0c;.java文件内容如下&#xff…

腾讯云Windows轻量应用服务器的默认密码是什么,以及如何重置?

首先&#xff0c;腾讯云轻量应用服务器的默认用户名是没有设置密码的&#xff0c;首次登录时需要重置密码。这意味着如果你的轻量应用服务器是腾讯云的&#xff0c;那么默认密码是不存在的&#xff0c;需要通过重置密码来获得一个新的密码。 关于如何重置密码&#xff0c;有几…

手机浏览器或微信中唤起小程序

明文URL Schem唤起小程序 业务需求的场景使用文档介绍实现过程遇到的问题注意事项相关文档 业务需求的场景 需要在后台管理系统中的列表数据添加复制功能&#xff0c;复制成功的链接能够在手机浏览器或者微信中打开指定的小程序页面&#xff08;pages/good/detail/index&#…

Leaflet 初始化地图

前言 &#x1f914;&#x1f914; Leaflet系列搁置了好久&#xff0c;趁着deadline来临之际&#xff0c;我会在两周内将这个专栏的内容基本更新完毕&#xff0c;并随着项目的精进将更多优质的文章内容提供给本专栏的订阅者&#xff1b;说正事&#xff0c;在本文中&#xff0c;我…

Markdown进阶语法(公式、小帽、上下标、求和/积分、分式/根式、字体)——沐雨先生

1. 公式 行内公式 写法 $(W_1−W_2)xb_1−b_20$ 显示 ( W 1 − W 2 ) x b 1 − b 2 0 (W_1−W_2)xb_1−b_20 (W1​−W2​)xb1​−b2​0 整行公式 写法 $$(W_1−W_2)xb_1−b_20$$ 显示 ( W 1 − W 2 ) x b 1 − b 2 0 (W_1−W_2)xb_1−b_20 (W1​−W2​)xb1​−b2​…

Spring对IoC的实现

Spring对IoC的实现 一、set注入1.Spring的第一个程序2.注入内部bean和注入外部bean3.注入简单数据类型3.级联属性赋值4.注入数组&#xff08;1&#xff09;注入简单类型数组&#xff08;2&#xff09;注入引用数据类型数组 5.List和Set集合注入&#xff08;1&#xff09;List&a…