创建RT-thread软件仿真工程 写RT-thread内核

简介: 创建RT-thread软件仿真工程 写RT-thread内核

新建RT-Thread工程——软件仿真

在开始编写RT-Thread内核之前,我们先新建一个RT-Thread工程,Device选择Cortex-M3(Cortex-M4或Cortex-M7)内核的处理器,调试方式选择软件仿真,最后把RT-Thread移植到STM32开发板上。最后的移植非常简单,只需要换一下启动文件并添加bsp驱动即可。

新建本地工程文件夹

在开始新建工程之前,我们先在本地计算机中新建一个文件夹用于存放工程。可将文件夹命名为“新建RT-Thread工程——软件仿真”(名字可以随意设置),然后在该文件夹下新建各个文件夹和文件,有关这些文件夹的包含关系和作用如表1所示。

表1 工程文件夹根目录下的文件夹及作用

使用KEIL新建工程

New Project

首先打开KEIL5软件,新建一个工程,工程文件放在刚刚创建好的目录Project下面,命名为RT-Thread-ra,其中ra是自定义的,应注意必须用英文,不能用中文。

Select Device for Target

设置好工程名称,确定之后会弹出相应Select Device for Target对话框,选择处理器,这里选择ARMCM4,也可根据Device型号选择ARMCM3或ARMCM7,根据自己的开发板选择

Manage Run-Time Environment

选择好处理器后,单击OK按钮将弹出Manage Run-Time Environment对话框。这里在CMSIS栏中选中CORE,在Device栏中选中Startup文件即可

单击OK按钮,关闭Manage Run-Time Environment对话框之后,刚刚选择的CORE和Startup这两个文件就会添加到工程组中

这两个文件刚开始都是存放在KEIL的安装目录下,当配置Manage Run-Time Environment对话框之后,软件就会把选中的文件从KEIL的安装目录复制到我们的工程目录Project\RTE\Device\(ARMCM3ARMCM4或ARMCM7)下面。其中startup_ARMCM4.s是用汇编语言编写的启动文件,system_ARMCM4.c是用C语言编写的与时钟相关的文件。想了解更加具体的内容,可直接阅读这两个文件的源码。只要是(Cortex-M3、Cortex-M4或Cortex-M7)内核的单片机,这两个文件都适用。

在KEIL工程中新建文件组

创建一个空的main.c

设置软件仿真

没有开发板可以使用这个软件仿真

修改时钟大小

在时钟相关文件system_ARMCM4.c的开头,有一段代码定义了系统时钟的频率为25MHz。在软件仿真时,要确保时间的准确性,代码中系统时钟与软件仿真的时钟必须一致,所以Options for Target对话框中Target选项卡中的时钟频率应该由默认的12改成25。

时钟相关宏定义
#define __HSI      ( 8000000UL)
#define __XTAL      ( 5000000UL)
#define __SYSTEM_CLOCK  (5*__XTAL) /* 5*5000000=25M*/

添加头文件路径

参考《RT-Thread内核实现与应用开发实战指南-STM32》

相关文章
|
存储 虚拟化 Windows
ESXI8.0安装Windows11
HKEY_LOCAL_MACHINE\SYSTEM\Setup 创建一个名为“LabConfig”的项,在“LabConfig”下创建两个32位DWORD值: 键为“BypassTPMCheck”,值为“00000001” 键为“BypassSecureBootCheck”,值为“00000001” 在安装 Windows 11 进入到以下阶段即“现在安装”按 Shift+F10 进入到命令提示符,添加注册表键值绕过 TPM 检查;如果你是从微软官方下载的 ISO 镜像则在提示需要输入密钥阶段进入到命令提示符;之后就可以正常安装了。 REG ADD HKLM\SYSTEM\Setu
10860 0
ESXI8.0安装Windows11
|
3月前
|
缓存 监控 网络协议
【免费开源】基于 STM32 的远程视频监控项目 —— 从无线通信选型到系统架构实战解析
本项目基于STM32实现低成本、低功耗远程视频监控,融合DCMI图像采集、JPEG硬件压缩、Wi-Fi/4G无线传输、MQTT/TCP协议及云端展示。涵盖硬件选型、通信方案对比(推荐Wi-Fi局域网/4G DTU野外)、内存优化与稳定性设计,适配农业、工业、实验室等IoT场景,提供完整开源实战方案。
【免费开源】基于 STM32 的远程视频监控项目 —— 从无线通信选型到系统架构实战解析
|
消息中间件 Linux 芯片
RT-Thread快速入门-体验RT-Thread
RT-Thread快速入门-体验RT-Thread
571 0
RT-Thread快速入门-体验RT-Thread
关于QtCreator使用fcitx无法输入中文的解决方法(从根本解决问题)
关于QtCreator使用fcitx无法输入中文的解决方法(从根本解决问题)
STM32CubeMX PWM
STM32CubeMX PWM
794 9
QR Code
【6月更文挑战第12天】
2715 1
Break 语句和continue语句的区别
Break 语句和continue语句的区别
700 0
|
移动开发 调度 C语言
移植一个实时OS很难?那就手把手教你如何快速移植一个RT-Thread Nano吧!
移植一个实时OS很难?那就手把手教你如何快速移植一个RT-Thread Nano吧!
875 0
|
IDE 开发工具 C++
MDK5软件入门之——基础工程创建及下载和调试
MDK5软件入门之——基础工程创建及下载和调试
963 0
MDK5软件入门之——基础工程创建及下载和调试