![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RT-Thread学习
机器灵魂注入师
一名在不断精进的嵌入式软件开发工程师,很庆幸能从事自己喜欢的工作。
愿你要永远抱有一颗好奇之心。
愿你出走半生,归来仍是少年。
展开
-
RT-Thread Nano 的工程建立
1、使用STM32CubeMx建立工程1.1、选择芯片建工程1.2、选择下载方式,我这里是SWD模式。1.3、电路存在外部时钟的,勾选,否则时钟使用外部时钟无法配置1.4、配置时钟1.5、 工程配置1.6、配置一下uart1,为使用shell做准备1.7、RT-Thread 操作系统重定义 HardFault_Handler、PendSV_Handler、SysTick_H...原创 2019-12-05 00:01:39 · 502 阅读 · 0 评论 -
RT-Thread Env工具 --- 工程构建命令使用总结
一、资料RT-thread官方Env用户手册:Env用户手册。二、个人总结2.1、scons --dist搭建项目框架,使用此命令在对应的 BSP 目录下使用,会生成一个 dist 目录,这便是开发项目的目录结构,包含了RT-Thread源码及BSP相关工程,不相关的BSP文件夹及libcpu都会被移除,并且可以随意拷贝此工程到任何目录下使用。生成的工程如下,可以随便拷贝到任何位置使用...原创 2019-07-19 22:15:34 · 2430 阅读 · 0 评论 -
RT-Thread内核学习(认真系列) -- (3)线程间同步
一、概述二、信号量信号量是一种轻型的用于解决线程间同步问题的内核对象,线程可以获取或释放它,从而达到同步或互斥的目的。信号量工作示意图如下图所示,每个信号量对象都有一个信号量值和一个线程等待队列,信号量的值对应了信号量对象的实例数目、资源数目,假如信号量值为 5,则表示共有 5 个信号量实例(资源)可以被使用,当信号量实例数目为零时,再申请该信号量的线程就会被挂起在该信号量的等待...原创 2019-03-30 08:40:58 · 495 阅读 · 0 评论 -
rt-thread 构建工程的链接脚本文件解读
一、链接脚本的作用二、不同开发环境的脚本2.1、MDK脚本文件格式如下图:文件内的内容,需要修改如下:原创 2019-05-25 16:53:15 · 1652 阅读 · 0 评论 -
rt-thread 构建工程的构建脚本文件解读
一、文件的作用SConscript脚本决定 MDK/IAR 工程的生成以及编译过程中要添加的文件。二、解读文件原创 2019-05-25 17:32:52 · 334 阅读 · 0 评论 -
rt-thread 构建工程的构建脚本文件解读
一、概述SConscript脚本决定 MDK/IAR 工程的生成以及编译过程中要添加文件。二、文件解读import osimport rtconfigfrom building import *Import('SDK_LIB')cwd = GetCurrentDir() #获取当前文件路径# add general driverssr...原创 2019-05-26 23:35:59 · 1059 阅读 · 0 评论 -
RT-Thread的一些重要概念
1、静态对象和动态对象RT-Thread 内核采用面向对象的设计思想进行设计,系统级的基础设施都是一种内核对象,例如线程,信号量,互斥量,定时器等。内核对象分为两类:静态内核对象和动态内核对象,静态内核对象通常放在RW 段和 ZI 段中,在系统启动后在程序中初始化;动态内核对象则是从内存堆中(RAM中除RW 段和 ZI 段剩下的内存)创建的,而后手工做初始化。2、RT_ALIGN_SIZE...原创 2019-05-18 17:17:30 · 909 阅读 · 0 评论 -
RT-Thread内核学习(认真系列) ---- (5)内存管理
一、概述计算机系统中,变量、中间数据一般存放在 RAM 中,只有在实际使用时才将它们从 RAM 调入到CPU 中进行运算。一些数据需要的内存大小需要在程序运行过程中根据实际情况确定,这就要求系统具有对内存空间进行动态管理的能力,在用户需要一段内存空间时,向系统申请,系统选择一段合适的内存空间分配给用户,用户使用完毕后,再释放回系统,以便系统将该段内存空间回收再利用。RT-Threa...原创 2019-03-31 16:19:34 · 2313 阅读 · 0 评论 -
有用的暂存的
1、如何在Keil中添加AStyle对代码进行格式化处理2、RT-Thread 编程风格3、快速构建RT-Thread 可通用的软件包原创 2019-05-23 23:42:53 · 129 阅读 · 0 评论 -
RT-Thread 能力认证习题总结 ---- 第四周
第四周:小车要求:了解传感器驱动开发,作业1:组装好小车。已经提供了代码,通过移植代码,并完成 hc_sr04.c 文件中的3个填空,将小车跑起来。效果是能实现避障功能。作业2:总结实现HC-SR04驱动,都有什么步骤。作业3(选做):有ENC28J60或ESP8266或RW007模块的,可以尝试将小车传感器数据发送到onenet云平台。【注:没有小车的,可以使用其他传感器,按照文档中心...原创 2019-06-01 15:12:02 · 753 阅读 · 0 评论 -
RT-thread 传感器驱动开发 ---- 以超声波模块HC-SR04为例
一、前期准备超声波模块HC-SR04介绍:https://blog.csdn.net/super828/article/details/84112824。传感器驱动开发指南:https://www.rt-thread.org/document/site/development-guide/sensor/sensor_driver_development/#。传感器驱动框架介绍:http...原创 2019-05-30 00:10:24 · 2810 阅读 · 2 评论 -
W25qxxx 实现文件系统 ---- 基于RT-thread嵌入式操作系统
一、资料准备二、简单实现步骤2.1、裸机实现通过spi协议读写w25qxxx模块该步骤是底层基础,了解spi协议和实现使用spi协议对模块进行读取。参考原子的《STM32F4开发指南-库函数版本_V1.1》的第三十章。 链接:STM32F4开发指南-库函数版本_V1.1 提取码:9od82.2、SFUD (Serial Flash Universal Driver)...原创 2019-06-17 21:45:55 · 1465 阅读 · 0 评论 -
舵机 ---- 工作原理及其应用、基于RT-thread的代码实现
一、原理舵机的原理其实蛮简单的,把一篇讲的很好的文章推荐一下,把原理和使用STM32实现都说的很好了,我就不给世界的存储增加负担了。链接:https://blog.csdn.net/weixin_38075894/article/details/80027600。二、一些注意事项2.1、上电位置不处于中心位置问题点:由于摇臂随便安装,导致舵机上电时,摇臂所指的位置不是中心位置。...原创 2019-06-24 20:17:01 · 945 阅读 · 0 评论 -
DS18B20 数字温度传感器的使用 ---- 基于RT-thread操作系统的Sensor 框架
博客参考自智能家居DIY教程连载(1)之前用RT-thread的线程读取过ds18b20的温度,涉及到比较具体的时序问题,见博客DS18B20 数字温度传感器的使用和基于RT-thread操作系统的实现一、Sensor 框架介绍为了降低传感器模块使用难度,增加传感器驱动的可复用性,避免了重复开发驱动(重复造轮子)的麻烦RT-thread设计了 Sensor 驱动框架。Sensor 驱动框...原创 2019-07-24 22:48:10 · 1248 阅读 · 0 评论 -
NRF24L01(2.4G无线通信模块)的使用 ---- 基于RT-thread操作系统对应的软件包
一、概述二、软件包的使用2.1、获取软件包在menuconfig选中nRF21L01软件包在 env 中输入pkgs --update 命令,将其获取到了本地。使用 scons --target=mdk5即可将该组件添加到MDk5的工程。2.2、待续。。。三、遇到的问题及解决方法本地文件没有NRF24L01软件包。解决:env使用 pkgs --upgrade 命令...原创 2019-08-14 23:35:32 · 2138 阅读 · 0 评论 -
红外遥控器的实现 ---- 基于STM32&&RT-thread操作系统
一、概述红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点。所以其广泛地被应用在我们生活的方方面面。红外遥控的编码目前广泛使用的是:NEC Protocol 的PWM(脉冲宽度调制)和Philips RC-5 Protocol 的PPM(脉冲位置调制)。本文讲述的编码方式是PWM调制。接收模块如下所示:发送模块如下所示:...原创 2019-08-20 23:20:25 · 778 阅读 · 0 评论 -
RT-thread 的Kconfig简单语法
目录一、Kconfig的作用二、元素解释2.1、menu && endmenu2.2、config2.3、comment2.4、if && endif2.5、遇到再说,待续。。。。。一、Kconfig的作用Kconfig 对内核和组件的功能进行配置,对组件进行自由裁剪。二、元素解释2.1、menu ...原创 2019-05-25 16:40:05 · 3001 阅读 · 0 评论 -
RT-Thread ---- 传感器驱动开发
一、参考资料官方文档参考:1、传感器驱动框架介绍。2、传感器驱动开发指南。二、开发原创 2019-05-14 21:54:52 · 1579 阅读 · 0 评论 -
RT-Thread学习笔记(4)- 空闲任务
(一)空闲任务的含义及特点因为只要处于正常供电状的,CPU是不能停下来,总需要干点事情,所以需要干一个无聊的事情来占据这段时间,我们也可以称空闲任务是CPU不干事情的时候干的事情(这里的事情指的是正事)。空闲任务的主要特点如下:1、空闲必须存在,初始化2、空闲任务的优先级是最低的空闲任务初始化的代码如下: void rt_thread_idle_init(void) ...原创 2018-07-28 14:59:20 · 2669 阅读 · 1 评论 -
RT-Thread学习笔记(1)- 系统启动代码和用户入口代码
(一)废话 RT-Thread是一个来自中国的开源物联网操作系统,它提供了非常强的可伸缩能力:从一个可以运行在ARM Cortex-M0芯片上的极小内核,到中等的ARM Cortex-M3/4/7系统,甚至是运行于MIPS32、ARM Cortex-A系列处理器上功能丰富系统。 顺潮流而学,RTT是一个很有前途的操作系统,所以有精力学学,总没有坏处。 本次学...原创 2018-07-22 10:32:50 · 2327 阅读 · 0 评论 -
RT-Thread学习笔记(2)- 流水灯代码分析与系统滴答时钟
(一)流水灯例程流水灯的例程如下,我们只用了一个函数就实现了,现在我们逐层分析一下。其实led_sample_init()这个函数创建了一个线程(任务),这样相当于在RTT 操作系统上注册了,相当于 人有了身份证一样,有了自己的ID, 第一个参数led_thread 是一个任务控制块,有着系统完成任务管理需要的各种信息。第二个参数则是线程的 名称。第三个参数是线程的实体,里面的...原创 2018-07-23 00:31:17 · 1907 阅读 · 0 评论 -
RT-Thread学习笔记(6)- RT-Thread中断服务程序的书写注意
在RT-Thread中,中断服务程序的书写和在裸机开发的写法差不多,区别是加入一组API函数,如下: rt_interrupt_enter(); //通知操作系统此时进入中断状态 rt_interrupt_leave();//通知操作系统此时离开中断状态对于使用方法,我们以系统滴答定时器中断为例,在中断服务程序的开始后和最后分别加上这两个API函数,如下:/** ...原创 2018-10-21 16:41:00 · 5555 阅读 · 0 评论 -
RT-Thread学习笔记(7)- 堆的初始化和使用
对于这部分课程的学习,主要使用的是RTT的API函数进行操作。对于堆的空间大小,是需要自己分配大小的,以STM32为例,下图标出了堆的设置大小: 下面聊聊RT-Thread的API。1、rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END); 使用堆栈前必须用这个函数(在rt_config.h上声明宏)。#ifd...原创 2018-10-24 23:49:25 · 2302 阅读 · 0 评论 -
RT-Thread 工具用户手册总结
1、RT-Thread env 工具用户手册:RT-Thread env 工具用户手册。env 是 RT-Thread 推出的开发辅助工具,针对基于 RT-Thread 操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。其内置的 menuconfig 提供了简单易用的配置剪裁工具,可对内核、组件和软件包进行自由裁剪,使系统以搭积木的方式进行构建。主要特性:me...原创 2019-01-05 16:14:35 · 974 阅读 · 2 评论 -
RT-Thread ---- 文件系统的使用及遇到的问题
一、官方资料1、RT-Thread文档之虚拟文件系统:https://www.rt-thread.org/document/site/programming-manual/filesystem/filesystem/2、STM32F429 上应用文件系统:https://www.rt-thread.org/document/site/application-note/components/...原创 2019-04-25 23:50:24 · 1703 阅读 · 0 评论 -
RT-Thread内核移植关键代码解析(3) ---- 实现 rt_hw_context_switch_to()
一、源码rt_hw_context_switch_to()没有来源线程,切换到目标线程,在调度器启动第一个线程的时候被调用。只使用一次。其执行逻辑流程图如下所示:其采用汇编语言来实现,如下所示:;/*; * void rt_hw_context_switch_to(rt_uint32 to);; * r0 --> to; * this fucntion is used...原创 2019-04-26 13:52:53 · 2826 阅读 · 0 评论 -
RT-Thread 能力认证习题总结 ---- 第二周
作业1:若现在控制台对应的是UART1,如何在UART2上实现控制台功能,请描述?作业2:提供代码- PIN设备:如果开发板上有 user key,请使用按键PIN中断控制led的亮灭。- 其他设备:根据开发板的情况,做相关实验。SPI/I2C/UART/…作业3:在自己的开发板上使用spi flash 虚拟文件系统FatFS,能使用文件系统的各个命令,提供截图。作业4:使用文件系统,将...原创 2019-04-26 23:15:57 · 1410 阅读 · 0 评论 -
RT-Thread ---- 控制台功能的实现
一、准备1.1 、 安装putty终端,将其配置为使用com串口,配置方法:https://blog.csdn.net/Galdys/article/details/23922531。二、实现2.1、rt_kprintf()函数的实现其实现的源码如下:/** * This function will print a formatted string on system ...原创 2019-04-27 08:58:01 · 3474 阅读 · 0 评论 -
RT-Thread 文件系统的命令
1、echo用于字符串的输出详细解释:https://www.cnblogs.com/Spiro-K/p/6360489.html2、ls展现当前目录详解:https://www.runoob.com/linux/linux-comm-ls.html3、cat查看文本内容详解:https://www.runoob.com/linux/linux-comm-cat.htm...原创 2019-05-03 23:53:26 · 1981 阅读 · 0 评论 -
RT-Thread内核移植关键代码解析(1) ----中断打开和关闭
RT-Thread的开中断与关中断的代码如下图所示:一、rt_hw_interrupt_disable()函数源代码采用汇编编写,如下:;/*; * rt_base_t rt_hw_interrupt_disable(void);; */rt_hw_interrupt_disable PROC ;PROC伪指令定义函数 EXPORT rt_hw_int...原创 2019-04-24 18:37:48 · 4033 阅读 · 1 评论 -
RT-Thread ----- TCP/IP 学习
一、TCP/IP入门视频1、快速学习TCP/IP原创 2019-04-24 23:46:31 · 1448 阅读 · 0 评论 -
RT-Thread内核移植关键代码解析(2) ---- 实现线程栈初始化
一、代码实现的解释rt-thread线程栈的初始化代码如下,其中注释已经给出了一些说明。rt_uint8_t *rt_hw_stack_init(void *tentry, //线程入口函数 void *parameter, //线程入口参数 ...原创 2019-04-25 16:23:28 · 1348 阅读 · 2 评论 -
rt-thread 实现内核 ---- 各个文件作用记录
1、startup_ARMCM3.s汇编编写的启动文件,由ARM统一提供。2、system_ARMCM3.c是 C 语言编写的跟时钟相关的文件。3、rtdef.h#define rt_inline static __inline内联标识符定义,详细说明:http://www.cnblogs.com/tyroneren/p/6264520.html。#defi...原创 2019-05-14 10:39:09 · 483 阅读 · 0 评论 -
RT-Thread学习笔记(3)- 线程的创建与删除
(一)RTT的线程RTT的线程相当于别的RTOS的任务,它的组成有三部分:1、线程代码:类似我们以前在写裸机代码的时候,实现某个功能的函数,在这个地方实现我们的功能逻辑。2、线程控制块:是一个结构体,每一个线程都有属于自己的结构体,方便RTT来管理,实现诸如任务调度、启动、删除等操作。3、堆栈:保存对应线程的环境,方便重新获取CPU使用权时恢复离开时的状态。(二)动态线程与静态...原创 2018-07-24 23:32:20 · 5588 阅读 · 2 评论