IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32完美移植RT-Thread实时操作系统 -> 正文阅读

[嵌入式]STM32完美移植RT-Thread实时操作系统

STM32完美移植RT-Thread实时操作系统
官网下载RT-Thread nano:下载 - RT-Thread物联网操作系统
解压打开下载文件夹
打开自己的裸板文件夹
在这里插入图片描述

在自己的裸板文件夹中新建RT-THREAD,在RT-THREAD下新建RT-include、RT-port、RT-source(名字自己定)
在这里插入图片描述

再打开USER新建boaed文件夹
在这里插入图片描述

下面开始复制相关文件
打开RT-Thread——bsp——stm32f103-msh——RTE——RTOS——复制board.c和rtconfig.h到自己的文件夹USER——board下
在这里插入图片描述

在USER——board下新建board.h

打开下载文件夹的src——复制全部文件到自己文件夹RT-Thread——RT-source下
在这里插入图片描述

打开下载文件的libcpu——arm——cortex-m3下复制context_rvds.S和cpuport.c文件到自己文件夹的RT-Thread——RT-port下
在这里插入图片描述

打开下载文件的include下复制全部文件到RT-Thread——RT-include下
再打开下载文件的components下复制两个文件夹到RT-Thread——RT-include下
在这里插入图片描述
在这里插入图片描述

至此所有文件复制完毕

打开工程添加文件
点击 在这里插入图片描述

先添加如下文件夹
在这里插入图片描述

在USER下添加 在这里插入图片描述

在RT-port下添加 在这里插入图片描述

在RT-source下添加 在这里插入图片描述

在RT-include下添加所有刚刚建立文件夹下的文件,包括复制过来的两个文件夹下的文件
在这里插入图片描述

再点击 在这里插入图片描述

选择C/C++
添加路径
在这里插入图片描述

打开stm32f1xx_it下找到如下函数,屏蔽
在这里插入图片描述

在这里插入图片描述

打开board.c找到如图函数
在这里插入图片描述

点击SystemCoreClock找到本体更改合适频率系统频率
在这里插入图片描述

再把系统时钟函数添加到此函数中
在这里插入图片描述

打开更改建立的board.h添加如下代码(sys.h中是系统时钟频率初始化和头文件#include “stm32f1xx.h”)然后在board.c下添加头文件#include “board.h”
在这里插入图片描述

再打开rtconfig.h更改相关参数,根据需要改
#define RT_THREAD_PRIORITY_MAX 8

//表示 RT-Thread 支持多少个优先级,取值范围为 8~256,默认为 32。

#define RT_TICK_PER_SECOND 1000

//表示操作系统每秒钟有多少个 tick即是操作系统的时钟周期,默认为 1000,即操作系统的时钟周期 tick 等于 1ms。

#define RT_ALIGN_SIZE 4

//表示 CPU 处理的数据需要多少个字节对齐,默认为 4 个字节

#define RT_NAME_MAX 8
//表示内核对象名字的最大长度,取值范围为 2~16,默认为 8。

#define RT_USING_COMPONENTS_INIT

//RT-Thread 组件初始化,默认使能

#define RT_USING_USER_MAIN

//使用用户 main 函数,默认打开

#define RT_MAIN_THREAD_STACK_SIZE 512

// main 线程栈大小,取值范围为 1~4086,单位为字节,默认为512
#define RT_DEBUG_INIT 0

//调试配置。包括了内核调试配置,组件调试配置和线程栈溢出检测,目前全部关闭

#define RT_USING_TIMER_SOFT 0

//软件定时器配置,目前关闭,不使用软件定时器

#define RT_USING_SEMAPHORE

//内部通信配置,包括信号量、互斥量、事件、邮箱和消息队列,根据需要配置

#define RT_USING_SMALL_MEM

//内存管理配置
参考网址:http://forum.eepw.com.cn/thread/316958/1/
#define RT_USING_CONSOLE

//控制台配置。控制台即是 rt_kprintf()函数调试输出的设备,通常使用串口。

修改board.c,board.c 是直接从 RT-Thread/3.0.3/bsp 文件夹下面拷贝过来的, 里面存放的是与硬件相关的初始化函数,

static uint32_t _SysTick_Config(rt_uint32_t ticks)

//相关的寄存器定义和初始化函数,这个是跟处理器相关的,直接使用固件库函数,将其注释。

void *rt_heap_begin_get(void) void *rt_heap_end_get(void)

//RT-Thread 堆配置,如果同时定义了 RT_USING_USER_MAIN 和RT_USING_HEAP 这两个宏, 表示 RT-Thread 里面创建内核对象时使用动态内存分配方案。

void rt_hw_board_init()

//RT-Thread 启动的时候会调用一个名为 rt_hw_board_init()的函数,从函数名称我们可以知道它是用来初始化开发板硬件的,比如时钟,比如串口等。

void SysTick_Handler(void)

//SysTick 中断服务函数是一个非常重要的函数, RT-Thread 所有跟时间相关的事情都在里面处理。

找到finsh_port.c屏蔽//#error “TODO 4: Read a char from the uart and assign it to ‘ch’.”

然后编译,没有问题

最后在主函数下添加头文件 在这里插入图片描述

OK,可以完美使用

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-28 09:30:35  更:2021-08-28 09:32:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:42:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码