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

news2024/11/16 2:24:55

前言:

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.coloradmin.cn/o/1487893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5 分钟配置好 Electron 应用的图标

最近在开发博客本地客户端 HexoPress&#xff0c;应用做好后&#xff0c;需要打包&#xff0c;如果不希望打包出来 App 的图标用的是 Electron 默认的星球环绕的图标&#xff0c;那么需要自己制作图标。 制作图标 首先&#xff0c;你需要给各种操作系统制作一个满足要求的图标…

Python+OpenGL三维模型显示鼠标缩放旋转平移

程序示例精选 PythonOpenGL三维模型显示鼠标缩放旋转平移 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonOpenGL三维模型显示鼠标缩放旋转平移》编写代码&#xff0c;代码整洁&#…

「MySQL」基本操作类型

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;数据库 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 数据库的操作 创建、显示数据库 使用 create 创建一个数据库 create database goods;然后可以用 show databases 来查看已经创建的数…

mac电脑使用pyinstaller打包python脚本

pyinstaller -F template.py 出现报错"AssertionError: Executable contains code signature!" 移除签名 codesign --remove-signature /Users/f7692281/PycharmProjects/TPtestlist/transmit_v6.0.py 打包命令 pyinstaller --windowed transmit_v6.0.py pyinst…

【MATLAB】语音信号识别与处理:T1小波滤波算法去噪及谱相减算法呈现频谱

1 基本定义 T1小波滤波算法是一种基于小波变换的信号去噪算法。它可以有效地去除信号中的噪声&#xff0c;并保留信号的主要特征。该算法的主要思想是将信号分解为多个不同尺度的小波系数&#xff0c;然后通过对小波系数进行阈值处理来去除噪声。 具体来说&#xff0c;T1小波滤…

企业CRM系统选型指南 | 掌握必备功能,提升工作效率

大家好我是卡林&#xff0c;今天分享CRM系统的十大功能&#xff0c;企业CRM系统选型指南。说起CRM的功能&#xff0c;大家会联想到什么&#xff1f;数据库、商机管理或者销售漏斗&#xff0c;这些是大部分人都会联想到的功能&#xff0c;但不太全面。如线索管理、联系人管理、客…

开发苹果iOS应用后如何提交到App Store

文章目录 摘要引言正文一、选择IPA文件和通道二、设置专用密码三、上传IPA文件提交上传界面说明 总结 摘要 本文将介绍使用AppUploader工具提交iOS应用到App Store的详细步骤。通过选择IPA文件和通道、设置专用密码以及进行上传&#xff0c;开发者可以顺利完成应用的提交上传过…

【牛客面试必刷TOP101】Day25.BM38 在二叉树中找到两个节点的最近公共祖先和BM40 重建二叉树

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;牛客面试必刷TOP101 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&…

LeetCode 刷题 [C++] 第279题.完全平方数

题目描述 给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量 。 完全平方数是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#xff0c;其值等于一个整数自乘的积。例如&#xff0c;1、4、9 和 16 都是完全平方数&#xff0c;而 3 和 11…

设计模式(十五)状态模式

请直接看原文:设计模式系列 ------------------------------------------------------------------------------------------------------------------------------- 前言 建议在阅读本文前先阅读设计模式&#xff08;十一&#xff09;策略模式这篇文章&#xff0c;虽说状态…

Python 获取beckhoff数据-OPCUA

1. 背景介绍 OPC UA&#xff08;Unified Architecture&#xff0c;统一架构&#xff09;是下一代的OPC 标准&#xff0c;它是一种工业通讯协议&#xff0c;通过提供一个完整的&#xff0c;安全和可靠的跨平台的架构&#xff0c;以获取实时和历史数据和时间。OPC UA的诞生是因为…

DSP,QX320F28337,数据手册,使用手册

自研32位双核CPU 主频400MHz 单精度浮点运算FPU 三角函数运算TMU flash 1MB&#xff0c;sram 1MB 3个12位ADC&#xff0c;采样率3MSPS 3个14位ADC&#xff0c;采样率2.67MSPS 24个ePWM通道&#xff0c;16个HRPWM&#xff08;150PS&#xff09;

爬虫实战——麻省理工学院新闻

文章目录 发现宝藏一、 目标二、 浅析三、获取所有模块四、请求处理模块、版面、文章1. 分析切换页面的参数传递2. 获取共有多少页标签并遍历版面3.解析版面并保存版面信息4. 解析文章列表和文章5. 清洗文章6. 保存文章图片 五、完整代码六、效果展示 发现宝藏 前些天发现了一…

力扣周赛387

第一题 代码 package Competition.The387Competitioin;public class Demo1 {public static void main(String[] args) {}public int[] resultArray(int[] nums) {int ans[]new int[nums.length];int arr1[]new int[nums.length];int arr2[]new int[nums.length];if(nums.leng…

玩转地下管网三维建模:MagicPipe3D系统

地下管网是保障城市运行的基础设施和“生命线”。随着实景三维中国建设的推进&#xff0c;构建地下管网三维模型与地上融合的数字孪生场景&#xff0c;对于提升智慧城市管理至关重要&#xff01;针对现有三维管线建模数据差异大、建模交互弱、模型效果差、缺乏语义信息等缺陷&a…

Lua 篇(一)— 安装运行Hello World

目录 前言一、Lua 是什么&#xff1f;二、Lua和C#的区别三、安装 LuaLinux 系统上安装Mac OS X 系统上安装Window 系统上安装emmyluaRider 安装(推荐) 四、Lua学习资料 前言 Lua 是一种轻量级的嵌入式脚本语言&#xff0c;它可以与 C 语言无缝集成&#xff0c;提供了强大的编程…

开发一套小程序所需的费用取决于多个因素

随着移动互联网的发展&#xff0c;小程序已经成为许多企业和个人推广业务和服务的重要工具。 不过&#xff0c;对于很多想要开发小程序的人来说&#xff0c;最大的疑问就是开发一套小程序要花多少钱。 这个问题的答案并不是固定的&#xff0c;因为开发一个小程序的成本取决于几…

java 实现文字转语音

1. 内网环境 windows系统 选择jacob技术实现 免费的 从官网下载最新1.20jar包和dll文件 将jar包放到maven仓库中 dll文件放到jdk的bin目录下 项目代码&#xff1a; package com.example.ybxm.controller;import com.jacob.activeX.ActiveXComponent; import com.jacob.com…

代码随想录算法训练营第三十天| 回溯篇总结

文章目录 前言一、组合问题二、切割问题三、子集问题四、排列问题五、性能分析 前言 回溯法就是暴力搜索&#xff0c;并不是什么高效的算法&#xff0c;最多再剪枝一下。 组合问题&#xff1a;N个数里面按一定规则找出k个数的集合 排列问题&#xff1a;N个数按一定规则全排列…

【QT】C/C++ 文件属性设置(隐藏、只读、加密等)方法和程序示例

目录 1文件属性设置 1.1 GetFileAttributes 获取文件属性函数的返回值 1.2 SetFileAttributes 设置文件属性函数 2 文件属性设置示例 1文件属性设置 在MSDN中&#xff0c;文件总共有15种属性&#xff0c;根据磁盘的分区格式不同&#xff0c;文件的属性也会不同。 需要包含头…