| |
|
开发:
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,在RT-THREAD下新建RT-include、RT-port、RT-source(名字自己定) 再打开USER新建boaed文件夹 下面开始复制相关文件 在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下 至此所有文件复制完毕 打开工程添加文件 先添加如下文件夹 在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更改相关参数,根据需要改 //表示 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 #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_USING_TIMER_SOFT 0 //软件定时器配置,目前关闭,不使用软件定时器 #define RT_USING_SEMAPHORE //内部通信配置,包括信号量、互斥量、事件、邮箱和消息队列,根据需要配置 #define RT_USING_SMALL_MEM //内存管理配置 //控制台配置。控制台即是 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例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |