diff --git a/README.md b/README.md index 65fb1452b2a6a9f4a76aacab050a934b30f63007..ba3513e08d4a3a43233614f7ca585345fd93327b 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,6 @@ [![进阶学习](other/novice-guide/figures/2.png)](#进阶学习) [![应用开发](other/novice-guide/figures/3.png)](#应用开发) -

-初次使用 RT-Thread 操作系统进行开发的小伙伴,可以参考本篇文档的学习路线进行上手入门。 -

- # 版本简介 @@ -19,7 +15,7 @@ RT-Thread 主要采用 C 语言编写,浅显易懂,方便移植。它把面 相较于 Linux 操作系统,RT-Thread 体积小,成本低,功耗低、启动快速,除此以外 RT-Thread 还具有实时性高、占用资源小等特点,非常适用于各种资源受限(如成本、功耗限制等)的场合。虽然 32 位 MCU 是它的主要运行平台,实际上很多带有 MMU、基于 ARM9、ARM11 甚至 Cortex-A 系列级别 CPU 的应用处理器在特定应用场合也适合使用 RT-Thread。 -适用于需要使用 RT-Thread 的丰富功能,如各类外设、物联网组件、软件包等的场景。[更多...](/rt-thread-version/rt-thread-standard/README.md) +适用于需要使用 RT-Thread 的丰富功能,如各类外设、物联网组件、软件包等的场景... ![Software_framework_diagram](other/novice-guide/figures/4.png) @@ -33,237 +29,18 @@ RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发 **支持架构**:ARM:Cortex M0/ M3/ M4/ M7 等、RISC-V 及其他。 -**功能**:线程管理、线程间同步与通信、时钟管理、中断管理、内存管理。[更多...](/rt-thread-version/rt-thread-nano/an0038-nano-introduction.md) - +**功能**:线程管理、线程间同步与通信、时钟管理、中断管理、内存管理... ## ** Smart 版本 ** RT-Thread Smart 是基于 RT-Thread 操作系统上的混合操作系统,简称为 rt-smart,它把应用从内核中独立出来,形成独立的用户态应用程序,并具备独立的地址空间(32 位系统上是 4G 的独立地址空间)。 -以下是 rt-smart 的整体结构框图,在硬件平台的基础上通过 MMU、系统调用的方式把整个系统分成了内核态及用户态。[更多...](/rt-thread-version/rt-thread-smart/introduction/rt-smart-intro/rt-smart-intro.md) +以下是 rt-smart 的整体结构框图,在硬件平台的基础上通过 MMU、系统调用的方式把整个系统分成了内核态及用户态... ![Software_framework_diagram](other/novice-guide/figures/5.png) - -# 学习路线 - -从版本简介中可以看出,`Nano 版本` 是 `标准版本` 的极简内核版本,`Smart 版本` 是在 `标准版本` 上增加了用户态创造而来,所以学习 `标准版本` 是学习 RT-Thread 的基础。本篇文章以学习 **RT-Thread 标准版本** 为例,为初学者制定学习路线如下,分为入门学习、进阶学习、应用开发。 -## 入门学习 - - - -### ** 无 RTOS 经验 ** - - - -**针对人群:有 C 语言、嵌入式基础,想系统学习 RT-Thread 操作系统** - -#### 模拟运行 - -[Keil MDK 模拟器 STM32F103 体验](/rt-thread-version/rt-thread-standard/tutorial/quick-start/stm32f103-simulator/stm32f103-simulator.md) - -#### 快速上手 - -推荐使用 [潘多拉开发板](https://item.taobao.com/item.htm?id=583527145598) 配套使用 [潘多拉开发板教程](https://gitee.com/Armink/IoT_Board),或者以下主流的学习板进行学习,不建议没有任何基础就将 RT-Thread 移植到一块开发板上。 - -- [RT-Thread 潘多拉 STM32L475 上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/iot_board/quick-start.md) -- [野火霸道 STM32F103 上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/stm32f103-fire-arbitrary/quick-start.md) -- [正点原子 nanoSTM32F103 上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/stm32f103-atk-nano/quick-start) -- [野火挑战者 STM32F429 上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/stm32f429-fire-challenger/quick-start.md) -- [正点原子探索者 STM32F407 上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/stm32f407-atk-explorer/quick-start.md) -- [正点原子阿波罗 STM32F429 上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/stm32f429-atk-apolo/quick-start.md) -- [野火 I.MX RT1052 上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/imxrt1052-fire-mini/quick-start.md) -- [正点原子 I.MX RT1052 号令者上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/imxrt1052-atk-commander/quick-start.md) -- [OPENHW Core-V-MCU](/rt-thread-version/rt-thread-standard/tutorial/quick-start/openhw-core-v-mcu/quick-start.md) -- [其他...](/rt-thread-version/rt-thread-standard/tutorial/quick-start/more.md) - -#### 内核学习 - -[内核视频教程](https://www.rt-thread.org/video.html) - -《内核实验手册》 - -### ** 有 RTOS 经验 ** - - - -**针对人群:学过 FreeRTOS 或 uC/OS, 想把 RT-Thread 使用起来** - -#### 快速上手 - -准备一块板子,根据 RT-Thread 支持的板子 BSP 进行 [快速上手](/rt-thread-version/rt-thread-standard/tutorial/quick-start/more.md),或者根据 [STM32 系列 BSP 制作教程进行移植](https://github.com/RT-Thread/rt-thread/blob/master/bsp/stm32/README.md)。 - -如果使用 Ubuntu 进行开发,可以参考:[在 Ubuntu 下开发 RT-Thread](/rt-thread-version/rt-thread-standard/application-note/setup/qemu/ubuntu/an0005-qemu-ubuntu.md)。 - -#### 编程指南 - -快速学习内核,参考:[《RT-Thread 编程指南》](https://www.rt-thread.org/download/manual/um4003-rtthread-programming-manual.pdf)。 - -#### API 手册 -查看 [在线 API 手册](https://www.rt-thread.org/document/api/) 或 [下载 API 手册](https://www.rt-thread.org/document/api/api.zip)。 - -#### 第三方 RTOS 兼容层 -为方便之前有其他 RTOS 使用经验的用户快速上手 RT-Thread,以及将基于其他 RTOS 的 API 编写的应用层代码快速移植到 RT-Thread 上,RT-Thread 社区编写了第三方 RTOS 兼容层。目前支持以下第三方 RTOS 的 API 无感移植: - -- [uCOS-II操作系统兼容层](https://github.com/mysterywolf/RT-Thread-wrapper-of-uCOS-II) -- [uCOS-III操作系统兼容层](https://github.com/mysterywolf/RT-Thread-wrapper-of-uCOS-III) - - - -## 进阶学习 - - - -### ** 开发工具 ** -#### Env 工具 - -Env 工具:Env 工具用于对源码功能进行配置或裁剪,可以生成 MDK/IAR/GCC 工程,需要配合 MDK/IAR/GCC 使用,详见 [Env 用户手册](/development-tools/env/env.md)。 - -#### RT-Thread IDE - -RT-Thread Studio :可以在 Studio 中下载源码包并创建 rt-thread 工程,独立完成开发、编译、下载、调试等功能,并能进行功能裁剪,详见 [RT-Thread Studio 用户手册](/development-tools/rtthread-studio/um/studio-user-manual.md)。 - -### ** 设备与驱动 ** - - - -[IO 设备模型](/rt-thread-version/rt-thread-standard/programming-manual/device/device.md) - -[PIN 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/pin/pin.md) - -[UART 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/uart/uart_v1/uart.md) - -[UART 设备V2版本](/rt-thread-version/rt-thread-standard/programming-manual/device/uart/uart_v2/uart.md) - -[CAN 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/can/can.md) - -[HWTIMER 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/hwtimer/hwtimer.md) - -[I2C 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/i2c/i2c.md) - -[PWM 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/pwm/pwm.md) - -[RTC 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/rtc/rtc) - -[SPI 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/spi/spi) - -[WATCHDOG 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/watchdog/watchdog) - -[SENSOR 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/sensor/sensor) - -[更多...](/rt-thread-version/rt-thread-standard/programming-manual/device/device.md) -### ** 组件 ** - - - -[FinSH 控制台](/rt-thread-version/rt-thread-standard/programming-manual/finsh/finsh) - -[文件系统](/rt-thread-version/rt-thread-standard/programming-manual/filesystem/filesystem) - -[netdev 网卡](/rt-thread-version/rt-thread-standard/programming-manual/netdev/netdev) - -[SAL 套接字抽象层](/rt-thread-version/rt-thread-standard/programming-manual/sal/sal) - -[AT 命令](/rt-thread-version/rt-thread-standard/programming-manual/at/at) - -[ulog 日志](/rt-thread-version/rt-thread-standard/programming-manual/ulog/ulog) - -[utest 测试框架](/rt-thread-version/rt-thread-standard/programming-manual/utest/utest) - -[动态模块](/rt-thread-version/rt-thread-standard/programming-manual/dlmodule/dlmodule) - -[POSIX 接口](/rt-thread-version/rt-thread-standard/programming-manual/libc/posix/introduction) - -[电源管理](/rt-thread-version/rt-thread-standard/programming-manual/pm/pm) - -[更多...](/rt-thread-version/rt-thread-standard/programming-manual/finsh/finsh) - - - -## 应用开发 - -| 应用开发列表 | 应用开发列表 | -| ------------------------------------------------------------ | ------------------------------------------------------------ | -| [使用 Eclipse 开发 RT-Thread](/rt-thread-version/rt-thread-standard/application-note/setup/qemu/eclipse/an0020-qemu-eclipse) | [CmBacktrace应用](/rt-thread-version/rt-thread-standard/application-note/debug/cmbacktrace/an0013-CmBacktrace) | -| [使用 VS Code 开发 RT-Thread](/rt-thread-version/rt-thread-standard/application-note/setup/qemu/vscode/an0021-qemu-vscode) | [在STM32 Nucleo 开发板上使用 RW007 WiFi 模块](/rt-thread-version/rt-thread-standard/application-note/packages/rw007_module_using/an0034-rw007-module-using) | -| [使用 Env 创建 RT-Thread 项目工程](/rt-thread-version/rt-thread-standard/application-note/setup/standard-project/an0017-standard-project) | [在 STM32L4 上应用 littlefs 文件系统](/rt-thread-version/rt-thread-standard/application-note/components/dfs/an0027-littlefs) | -| [搭建RT-Thread项目框架](/rt-thread-version/rt-thread-standard/application-note/setup/standard-project/an0017-standard-project) | [在潘多拉上使用 SFUD 操作 Flash](/rt-thread-version/rt-thread-standard/application-note/components/sfud/an0048-sfud) | -| [在IoT Board上实现电源管理](/rt-thread-version/rt-thread-standard/application-note/system/pm/an0025-pm) | [STM32 通用 Bootloader](/rt-thread-version/rt-thread-standard/application-note/system/rtboot/an0028-rtboot) | -| [网络协议栈驱动移植](/rt-thread-version/rt-thread-standard/application-note/components/network/an0010-lwip-driver-porting) | [wireshark 抓取 tls 数据包](/rt-thread-version/rt-thread-standard/application-note/packages/mbedtls_wireshark_sniffer/an0029-mbedtls_wireshark_sniffer) | -| [在STM32F429上应用网络功能](/rt-thread-version/rt-thread-standard/application-note/components/network/an0011-network-started) | [在 STM32 上应用 C++](/rt-thread-version/rt-thread-standard/application-note/components/cplusplus/an0035-cpp) | -| [在STM32F429上应用文件系统](/rt-thread-version/rt-thread-standard/application-note/components/dfs/an0012-dfs) | [STM32 上使用 PWM](/rt-thread-version/rt-thread-standard/application-note/driver/pwm/an0037-rtthread-driver-pwm) | -| [FreeModbus 应用笔记](/rt-thread-version/rt-thread-standard/application-note/packages/freemodbus/an0036-freemodbus) | [STM32 上使用 USB Host 读写 U 盘](/rt-thread-version/rt-thread-standard/application-note/driver/usb/an0046-rtthread-driver-usbh) | -| [应用AT组件连接ESP8266模块](/rt-thread-version/rt-thread-standard/application-note/components/at/an0014-at-client) | [QEMU网络视频教程](/rt-thread-version/rt-thread-standard/tutorial/qemu-network/README) | -| [多线程非阻塞网络编程](/rt-thread-version/rt-thread-standard/application-note/components/network/an0019-tcpclient-socket) | [使用QEMU运行动态模块组件](/rt-thread-version/rt-thread-standard/application-note/components/dlmodule/an0023-dlmodule) | - -[应用设计参考...](https://www.rt-thread.org/projects.html) - -## Demo 示例 - -![演示效果图](other/novice-guide/figures/i12.gif) - -| Demo演示和教程 | Sample示例 | -| ------------------------------------------------------------ | ------------------------------------------------------------ | -| [基于RT-Thread和i.MX RT1052的开源AutoQuad飞控](https://mp.weixin.qq.com/s/OYyE1QmtFLp17IKHPEDUfg) | [内核示例代码](https://github.com/RT-Thread-packages/kernel-sample) | -| [基于RT-Thread的开源飞控StarryPilot](https://mp.weixin.qq.com/s/j3ihGjkZ5Jt0hwUkgY9AdQ) | [设备示例代码](https://github.com/RT-Thread-packages/peripheral-sample) | -| [基于RT-Thread的人体健康监测系统](https://mp.weixin.qq.com/s/ptiz9UFzbVH-jt2gNVvlHg) | [文件系统示例代码](https://github.com/RT-Thread-packages/filesystem-sample) | -| [基于RT-Thread的激光雷达避障小车](https://mp.weixin.qq.com/s/rjKExoGqhI1cPErGogEHDQ) | [网络示例代码](https://github.com/RT-Thread-packages/network-sample) | -| [基于RT-Thread的蓝牙遥控平衡小车](https://mp.weixin.qq.com/s/bslr8Z2vyoT5uOVNXsafjA) | | -| [蜂鸣器播放器](/rt-thread-version/rt-thread-standard/tutorial/beep-player/) | | -| [分布式温度监控系统](/rt-thread-version/rt-thread-standard/tutorial/temperature-system/) | | -| [智能车教程](/rt-thread-version/rt-thread-standard/tutorial/smart-car/) | | - -## 代码贡献 - -| 开发指南 | 代码规范 | 提交代码 | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [软件包开发指南](/rt-thread-version/rt-thread-standard/development-guide/package/package) | [RT-Thread编程风格](https://gitee.com/rtthread/rt-thread/blob/master/documentation/contribution_guide/coding_style_cn.md) | [向RT-Thread贡献代码](/rt-thread-version/rt-thread-standard/development-guide/github/github) | -| [STM32系列BSP制作教程](https://github.com/RT-Thread/rt-thread/blob/master/bsp/stm32/docs/STM32系列BSP制作教程.md) | [BSP开发规范](https://github.com/RT-Thread/rtthread-specification) | | -| [传感器驱动开发指南](/rt-thread-version/rt-thread-standard/development-guide/sensor/sensor_driver_development) | | | - -# 文档中心说明 - -[![License: Apache License 2.0](/_media/license-Apache2-0.svg)](https://github.com/RT-Thread/rt-thread/blob/master/LICENSE) -star -star -star -fork - - -为加强 RT-Thread 开源社区建设,加速完善 RT-Thread 中文文档中心内容,现将文档中心编辑权限予以开放,详情参见 PR 提交规范。欢迎社区小伙伴踊跃参与修改,提交 PR。本文档中心使用 docsify 搭建。 - -## 目录说明 - -如下是 RT-Thread 在线文档中心的主要目录说明: - -development-tools:RT-Thread Studio IDE 和开发辅助工具 Env 的文档。 - -rt-thread-version:RT-Thread 各种版本:标准版本、nano 版本、smart 版本。 - -```tree - ├─development-tools # 工具 - │ ├─_sidebar.md # 侧边导航栏 - │ ├─build-config-system # 构建相关 - │ ├─env # Env 工具 - │ └─rtthread-studio # Studio IDE - ├─rt-thread-version # RT-Thread 各版本 - │ ├─rt-thread-nano # rt-thread nano 版本 - │ │ └─_sidebar.md # 侧边导航栏 - │ ├─rt-thread-smart # rt-thread smart 版本 - │ │ └─_sidebar.md # 侧边导航栏 - │ └─rt-thread-standard # rt-thread 标准版本 - │ ├─_sidebar.md # 侧边导航栏 - │ ├─application-note # 应用笔记 - │ ├─development-guide # 开发指南 - │ ├─packages-manual # 软件包指南 - │ ├─programming-manual # 编程手册 - │ └─tutorial # 小项目教程系列 - └─other - └─novice-guide # 新手入门 -``` - ## 许可协议 ![知识共享许可协议](../../_media/creativecommons.png)
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。 diff --git a/_coverpage.md b/_coverpage.md index 25becfdd7b4702ad27ebb57dc4969b498fffab44..b6a7452f7689b6c174da77eb7e4e10852d137be2 100644 --- a/_coverpage.md +++ b/_coverpage.md @@ -3,7 +3,7 @@ ![logo](_media/icon.png) [新手指导](/other/novice-guide/README.md) -[标准版本](/rt-thread-version/rt-thread-standard/README.md) -[Nano版本](/rt-thread-version/rt-thread-nano/an0038-nano-introduction.md) +[标准版本 V4.1.1](/rt-thread-version/rt-thread-standard/README.md) + diff --git a/index.html b/index.html index c2e4434f3eacaf665aa7149592c8d33053d7b901..d7243a9091912a4399baedbb9c447c89bf127ab8 100644 --- a/index.html +++ b/index.html @@ -137,7 +137,7 @@ setInterval('transTip()', 1000); } var url = 'https://gitee.com/rtthread/docs-online/blob/master/' + vm.route.file - var editHtml = '[:pencil: 修改此文档 ](' + url + ')      [:page_with_curl:《PR提交规范》](/other/pr-rule/pr-rule)\n' + var editHtml = ':triangular_flag_on_post: V4.1.1       [:pencil: 修改此文档 ](' + url + ')      [:page_with_curl:《PR提交规范》](/other/pr-rule/pr-rule)\n' return '\n\n'+ editHtml + @@ -182,11 +182,11 @@ (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?0e240e5a81fc0731ec2e166298d176e1"; - var s = document.getElementsByTagName("script")[0]; + var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); - + - \ No newline at end of file + diff --git a/other/_navbar.md b/other/_navbar.md index a239082cb8dc78270d11ddef7a282ee983da2250..d308c05a27f3422eff281baeae31605bdd3ae460 100644 --- a/other/_navbar.md +++ b/other/_navbar.md @@ -6,9 +6,10 @@ * [新手指导](/other/novice-guide/README.md) -* [标准版本](/rt-thread-version/rt-thread-standard/README.md) -* [Nano 版本](/rt-thread-version/rt-thread-nano/an0038-nano-introduction.md) +* [标准版本 V4.1.1](/rt-thread-version/rt-thread-standard/README.md) + + diff --git a/other/novice-guide/README.md b/other/novice-guide/README.md index 977522cf041b4832732f7d6120085e6fdda958fa..b27d06a0144d0291231c5f6b7b778144862f4da0 100644 --- a/other/novice-guide/README.md +++ b/other/novice-guide/README.md @@ -3,10 +3,6 @@ [![进阶学习](figures/2.png)](#进阶学习) [![应用开发](figures/3.png)](#应用开发) -

-初次使用 RT-Thread 操作系统进行开发的小伙伴,可以参考本篇文档的学习路线进行上手入门。 -

- # 版本简介 @@ -19,9 +15,7 @@ RT-Thread 主要采用 C 语言编写,浅显易懂,方便移植。它把面 相较于 Linux 操作系统,RT-Thread 体积小,成本低,功耗低、启动快速,除此以外 RT-Thread 还具有实时性高、占用资源小等特点,非常适用于各种资源受限(如成本、功耗限制等)的场合。虽然 32 位 MCU 是它的主要运行平台,实际上很多带有 MMU、基于 ARM9、ARM11 甚至 Cortex-A 系列级别 CPU 的应用处理器在特定应用场合也适合使用 RT-Thread。 -适用于需要使用 RT-Thread 的丰富功能,如各类外设、物联网组件、软件包等的场景。[更多...](/rt-thread-version/rt-thread-standard/README.md) - -![Software_framework_diagram](figures/4.png) +适用于需要使用 RT-Thread 的丰富功能,如各类外设、物联网组件、软件包等的场景... ## ** Nano 版本 ** @@ -33,240 +27,18 @@ RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发 **支持架构**:ARM:Cortex M0/ M3/ M4/ M7 等、RISC-V 及其他。 -**功能**:线程管理、线程间同步与通信、时钟管理、中断管理、内存管理。[更多...](/rt-thread-version/rt-thread-nano/an0038-nano-introduction.md) - +**功能**:线程管理、线程间同步与通信、时钟管理、中断管理、内存管理... ## ** Smart 版本 ** RT-Thread Smart 是基于 RT-Thread 操作系统上的混合操作系统,简称为 rt-smart,它把应用从内核中独立出来,形成独立的用户态应用程序,并具备独立的地址空间(32 位系统上是 4G 的独立地址空间)。 -以下是 rt-smart 的整体结构框图,在硬件平台的基础上通过 MMU、系统调用的方式把整个系统分成了内核态及用户态。[更多...](/rt-thread-version/rt-thread-smart/introduction/rt-smart-intro/rt-smart-intro.md) +以下是 rt-smart 的整体结构框图,在硬件平台的基础上通过 MMU、系统调用的方式把整个系统分成了内核态及用户态... ![Software_framework_diagram](figures/5.png) - -# 学习路线 - -从版本简介中可以看出,`Nano 版本` 是 `标准版本` 的极简内核版本,`Smart 版本` 是在 `标准版本` 上增加了用户态创造而来,所以学习 `标准版本` 是学习 RT-Thread 的基础。本篇文章以学习 **RT-Thread 标准版本** 为例,为初学者制定学习路线如下,分为入门学习、进阶学习、应用开发。 -## 入门学习 - - - -### ** 无 RTOS 经验 ** - - - -**针对人群:有 C 语言、嵌入式基础,想系统学习 RT-Thread 操作系统** - -#### 模拟运行 - -[Keil MDK 模拟器 STM32F103 体验](/rt-thread-version/rt-thread-standard/tutorial/quick-start/stm32f103-simulator/stm32f103-simulator.md) - -#### 快速上手 - -推荐使用 [潘多拉开发板](https://item.taobao.com/item.htm?id=583527145598) 配套使用 [潘多拉开发板教程](https://gitee.com/Armink/IoT_Board),或者以下主流的学习板进行学习,不建议没有任何基础就将 RT-Thread 移植到一块开发板上。 - -- [RT-Thread 潘多拉 STM32L475 上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/iot_board/quick-start.md) -- [野火霸道 STM32F103 上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/stm32f103-fire-arbitrary/quick-start.md) -- [正点原子 nanoSTM32F103 上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/stm32f103-atk-nano/quick-start) -- [野火挑战者 STM32F429 上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/stm32f429-fire-challenger/quick-start.md) -- [正点原子探索者 STM32F407 上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/stm32f407-atk-explorer/quick-start.md) -- [正点原子阿波罗 STM32F429 上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/stm32f429-atk-apolo/quick-start.md) -- [野火 I.MX RT1052 上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/imxrt1052-fire-mini/quick-start.md) -- [正点原子 I.MX RT1052 号令者上手指南](/rt-thread-version/rt-thread-standard/tutorial/quick-start/imxrt1052-atk-commander/quick-start.md) -- [其他...](/rt-thread-version/rt-thread-standard/tutorial/quick-start/more.md) - -#### 内核学习 - -[内核视频教程](https://www.rt-thread.org/video.html) - -《内核实验手册》 - -### ** 有 RTOS 经验 ** - - - -**针对人群:学过 FreeRTOS 或 uC/OS, 想把 RT-Thread 使用起来** - -#### 快速上手 - -准备一块板子,根据 RT-Thread 支持的板子 BSP 进行 [快速上手](/rt-thread-version/rt-thread-standard/tutorial/quick-start/more.md),或者根据 [STM32 系列 BSP 制作教程进行移植](https://github.com/RT-Thread/rt-thread/blob/master/bsp/stm32/README.md)。 - -如果使用 Ubuntu 进行开发,可以参考:[在 Ubuntu 下开发 RT-Thread](/rt-thread-version/rt-thread-standard/application-note/setup/qemu/ubuntu/an0005-qemu-ubuntu.md)。 - -#### 编程指南 - -快速学习内核,参考:[《RT-Thread 编程指南》](https://www.rt-thread.org/download/manual/um4003-rtthread-programming-manual.pdf)。 - -#### API 手册 -查看 [在线 API 手册](https://www.rt-thread.org/document/api/) 或 [下载 API 手册](https://www.rt-thread.org/document/api/api.zip)。 - -#### 第三方 RTOS 兼容层 -为方便之前有其他 RTOS 使用经验的用户快速上手 RT-Thread,以及将基于其他 RTOS 的 API 编写的应用层代码快速移植到 RT-Thread 上,RT-Thread 社区编写了第三方 RTOS 兼容层。目前支持以下第三方 RTOS 的 API 无感移植: - -- [uCOS-II操作系统兼容层](https://github.com/mysterywolf/RT-Thread-wrapper-of-uCOS-II) -- [uCOS-III操作系统兼容层](https://github.com/mysterywolf/RT-Thread-wrapper-of-uCOS-III) - - - -## 进阶学习 - - - -### ** 开发工具 ** -#### Env 工具 - -Env 工具:Env 工具用于对源码功能进行配置或裁剪,可以生成 MDK/IAR/GCC 工程,需要配合 MDK/IAR/GCC 使用,详见 [Env 用户手册](/development-tools/env/env.md)。 - -#### RT-Thread IDE - -RT-Thread Studio :可以在 Studio 中下载源码包并创建 rt-thread 工程,独立完成开发、编译、下载、调试等功能,并能进行功能裁剪,详见 [RT-Thread Studio 用户手册](/development-tools/rtthread-studio/um/studio-user-manual.md)。 - -### ** 设备与驱动 ** - - - -[IO 设备模型](/rt-thread-version/rt-thread-standard/programming-manual/device/device.md) - -[PIN 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/pin/pin.md) - -[UART 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/uart/uart_v1/uart.md) - -[UART 设备V2版本](/rt-thread-version/rt-thread-standard/programming-manual/device/uart/uart_v2/uart.md) - -[CAN 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/can/can.md) - -[HWTIMER 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/hwtimer/hwtimer.md) - -[I2C 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/i2c/i2c.md) - -[PWM 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/pwm/pwm.md) - -[RTC 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/rtc/rtc) - -[SPI 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/spi/spi) - -[WATCHDOG 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/watchdog/watchdog) - -[SENSOR 设备](/rt-thread-version/rt-thread-standard/programming-manual/device/sensor/sensor) - -[更多...](/rt-thread-version/rt-thread-standard/programming-manual/device/device.md) -### ** 组件 ** - - - -[FinSH 控制台](/rt-thread-version/rt-thread-standard/programming-manual/finsh/finsh) - -[文件系统](/rt-thread-version/rt-thread-standard/programming-manual/filesystem/filesystem) - -[netdev 网卡](/rt-thread-version/rt-thread-standard/programming-manual/netdev/netdev) - -[SAL 套接字抽象层](/rt-thread-version/rt-thread-standard/programming-manual/sal/sal) - -[AT 命令](/rt-thread-version/rt-thread-standard/programming-manual/at/at) - -[ulog 日志](/rt-thread-version/rt-thread-standard/programming-manual/ulog/ulog) - -[utest 测试框架](/rt-thread-version/rt-thread-standard/programming-manual/utest/utest) - -[动态模块](/rt-thread-version/rt-thread-standard/programming-manual/dlmodule/dlmodule) - -[POSIX 接口](/rt-thread-version/rt-thread-standard/programming-manual/posix/posix) - -[电源管理](/rt-thread-version/rt-thread-standard/programming-manual/pm/pm) - -[更多...](/rt-thread-version/rt-thread-standard/programming-manual/finsh/finsh) - - - -## 应用开发 - -| 应用开发列表 | 应用开发列表 | -| ------------------------------------------------------------ | ------------------------------------------------------------ | -| [使用 Eclipse 开发 RT-Thread](/rt-thread-version/rt-thread-standard/application-note/setup/qemu/eclipse/an0020-qemu-eclipse) | [CmBacktrace应用](/rt-thread-version/rt-thread-standard/application-note/debug/cmbacktrace/an0013-CmBacktrace) | -| [使用 VS Code 开发 RT-Thread](/rt-thread-version/rt-thread-standard/application-note/setup/qemu/vscode/an0021-qemu-vscode) | [在STM32 Nucleo 开发板上使用 RW007 WiFi 模块](/rt-thread-version/rt-thread-standard/application-note/packages/rw007_module_using/an0034-rw007-module-using) | -| [使用 Env 创建 RT-Thread 项目工程](/rt-thread-version/rt-thread-standard/application-note/setup/standard-project/an0017-standard-project) | [在 STM32L4 上应用 littlefs 文件系统](/rt-thread-version/rt-thread-standard/application-note/components/dfs/an0027-littlefs) | -| [搭建RT-Thread项目框架](/rt-thread-version/rt-thread-standard/application-note/setup/standard-project/an0017-standard-project) | [在潘多拉上使用 SFUD 操作 Flash](/rt-thread-version/rt-thread-standard/application-note/components/sfud/an0048-sfud) | -| [在IoT Board上实现电源管理](/rt-thread-version/rt-thread-standard/application-note/system/pm/an0025-pm) | [STM32 通用 Bootloader](/rt-thread-version/rt-thread-standard/application-note/system/rtboot/an0028-rtboot) | -| [网络协议栈驱动移植](/rt-thread-version/rt-thread-standard/application-note/components/network/an0010-lwip-driver-porting) | [wireshark 抓取 tls 数据包](/rt-thread-version/rt-thread-standard/application-note/packages/mbedtls_wireshark_sniffer/an0029-mbedtls_wireshark_sniffer) | -| [在STM32F429上应用网络功能](/rt-thread-version/rt-thread-standard/application-note/components/network/an0011-network-started) | [在 STM32 上应用 C++](/rt-thread-version/rt-thread-standard/application-note/components/cplusplus/an0035-cpp) | -| [在STM32F429上应用文件系统](/rt-thread-version/rt-thread-standard/application-note/components/dfs/an0012-dfs) | [STM32 上使用 PWM](/rt-thread-version/rt-thread-standard/application-note/driver/pwm/an0037-rtthread-driver-pwm) | -| [FreeModbus 应用笔记](/rt-thread-version/rt-thread-standard/application-note/packages/freemodbus/an0036-freemodbus) | [STM32 上使用 USB Host 读写 U 盘](/rt-thread-version/rt-thread-standard/application-note/driver/usb/an0046-rtthread-driver-usbh) | -| [应用AT组件连接ESP8266模块](/rt-thread-version/rt-thread-standard/application-note/components/at/an0014-at-client) | [QEMU网络视频教程](/rt-thread-version/rt-thread-standard/tutorial/qemu-network/README) | -| [多线程非阻塞网络编程](/rt-thread-version/rt-thread-standard/application-note/components/network/an0019-tcpclient-socket) | [使用QEMU运行动态模块组件](/rt-thread-version/rt-thread-standard/application-note/components/dlmodule/an0023-dlmodule) | - -[应用设计参考...](https://www.rt-thread.org/projects.html) - -## Demo 示例 - -![演示效果图](figures/i12.gif) - -| Demo演示和教程 | Sample示例 | -| ------------------------------------------------------------ | ------------------------------------------------------------ | -| [基于RT-Thread和i.MX RT1052的开源AutoQuad飞控](https://mp.weixin.qq.com/s/OYyE1QmtFLp17IKHPEDUfg) | [内核示例代码](https://github.com/RT-Thread-packages/kernel-sample) | -| [基于RT-Thread的开源飞控StarryPilot](https://mp.weixin.qq.com/s/j3ihGjkZ5Jt0hwUkgY9AdQ) | [设备示例代码](https://github.com/RT-Thread-packages/peripheral-sample) | -| [基于RT-Thread的人体健康监测系统](https://mp.weixin.qq.com/s/ptiz9UFzbVH-jt2gNVvlHg) | [文件系统示例代码](https://github.com/RT-Thread-packages/filesystem-sample) | -| [基于RT-Thread的激光雷达避障小车](https://mp.weixin.qq.com/s/rjKExoGqhI1cPErGogEHDQ) | [网络示例代码](https://github.com/RT-Thread-packages/network-sample) | -| [基于RT-Thread的蓝牙遥控平衡小车](https://mp.weixin.qq.com/s/bslr8Z2vyoT5uOVNXsafjA) | | -| [蜂鸣器播放器](/rt-thread-version/rt-thread-standard/tutorial/beep-player/) | | -| [分布式温度监控系统](/rt-thread-version/rt-thread-standard/tutorial/temperature-system/) | | -| [智能车教程](/rt-thread-version/rt-thread-standard/tutorial/smart-car/) | | - -## 代码贡献 - -| 开发指南 | 代码规范 | 提交代码 | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| [软件包开发指南](/rt-thread-version/rt-thread-standard/development-guide/package/package) | [RT-Thread编程风格](https://gitee.com/rtthread/rt-thread/blob/master/documentation/contribution_guide/coding_style_cn.md) | [向RT-Thread贡献代码](/rt-thread-version/rt-thread-standard/development-guide/github/github) | -| [STM32系列BSP制作教程](https://github.com/RT-Thread/rt-thread/blob/master/bsp/stm32/docs/STM32系列BSP制作教程.md) | [BSP开发规范](https://github.com/RT-Thread/rtthread-specification) | | -| [传感器驱动开发指南](/rt-thread-version/rt-thread-standard/development-guide/sensor/sensor_driver_development) | | | - -# 文档中心说明 - -[![License: Apache License 2.0](../../_media/license-Apache2-0.svg)](https://github.com/RT-Thread/rt-thread/blob/master/LICENSE) -github-star -github-fork -star -fork - - -为加强 RT-Thread 开源社区建设,加速完善 RT-Thread 中文文档中心内容,现将文档中心编辑权限予以开放,详情参见[《PR 提交规范》](/other/pr-rule/pr-rule)。欢迎社区小伙伴踊跃参与修改,提交 PR。 - -本文档中心使用 docsify 搭建,包含搜索组件,如需搜索可点击左上角进行搜索。 - -![search](figures/search.jpg) - -## 目录说明 - -如下是 RT-Thread 在线文档中心的主要目录说明: - -development-tools:RT-Thread Studio IDE 和开发辅助工具 Env 的文档。 - -rt-thread-version:RT-Thread 各种版本:标准版本、nano 版本、smart 版本。 - -```tree - ├─development-tools # 工具 - │ ├─_sidebar.md # 侧边导航栏 - │ ├─build-config-system # 构建相关 - │ ├─env # Env 工具 - │ └─rtthread-studio # Studio IDE - ├─rt-thread-version # RT-Thread 各版本 - │ ├─rt-thread-nano # rt-thread nano 版本 - │ │ └─_sidebar.md # 侧边导航栏 - │ ├─rt-thread-smart # rt-thread smart 版本 - │ │ └─_sidebar.md # 侧边导航栏 - │ └─rt-thread-standard # rt-thread 标准版本 - │ ├─_sidebar.md # 侧边导航栏 - │ ├─application-note # 应用笔记 - │ ├─development-guide # 开发指南 - │ ├─packages-manual # 软件包指南 - │ ├─programming-manual # 编程手册 - │ └─tutorial # 小项目教程系列 - └─other - └─novice-guide # 新手入门 -``` - ## 许可协议 ![知识共享许可协议](../../_media/creativecommons.png)
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。 diff --git a/rt-thread-version/rt-thread-standard/_navbar.md b/rt-thread-version/rt-thread-standard/_navbar.md index 99cde98e0b69feb63a8bf40f33489762d66442dd..7f84506a5a3d72abd3ed6344c8e6ec02e69d0855 100644 --- a/rt-thread-version/rt-thread-standard/_navbar.md +++ b/rt-thread-version/rt-thread-standard/_navbar.md @@ -5,9 +5,10 @@ - [:cn: 中文](/) --> * [新手指导](/other/novice-guide/README.md) -* [标准版本](/rt-thread-version/rt-thread-standard/README.md) -* [Nano 版本](/rt-thread-version/rt-thread-nano/an0038-nano-introduction.md) +* [标准版本 V4.1.1](/rt-thread-version/rt-thread-standard/README.md) + + diff --git a/rt-thread-version/rt-thread-standard/_sidebar.md b/rt-thread-version/rt-thread-standard/_sidebar.md index 2db2b93808f4e1d94e2835e98e34180600f5a35b..727a507f644a7e6b1f5b321572d665cd52e7c8e6 100644 --- a/rt-thread-version/rt-thread-standard/_sidebar.md +++ b/rt-thread-version/rt-thread-standard/_sidebar.md @@ -3,7 +3,8 @@ - **RT-Thread 标准版本** - 简介 - [RT-Thread 简介](/rt-thread-version/rt-thread-standard/README.md) -- 快速上手 + + + +- 内核 V4.1.1 - [内核基础](/rt-thread-version/rt-thread-standard/programming-manual/basic/basic.md) - [线程管理](/rt-thread-version/rt-thread-standard/programming-manual/thread/thread.md) - [时钟管理](/rt-thread-version/rt-thread-standard/programming-manual/timer/timer.md) @@ -27,10 +29,11 @@ - [内存管理](/rt-thread-version/rt-thread-standard/programming-manual/memory/memory.md) - [中断管理](/rt-thread-version/rt-thread-standard/programming-manual/interrupt/interrupt.md) - [内核移植](/rt-thread-version/rt-thread-standard/programming-manual/porting/porting.md) - - [原子操作](/rt-thread-version/rt-thread-standard/programming-manual/atomic/atomic.md) - - [SMP 介绍与移植](/rt-thread-version/rt-thread-standard/programming-manual/smp/smp.md) + + - [内核API更新日志](/rt-thread-version/rt-thread-standard/api-released-log/kernel-api-released-log.md) -- 设备和驱动 + + + + diff --git a/rt-thread-version/rt-thread-standard/programming-manual/basic/basic.md b/rt-thread-version/rt-thread-standard/programming-manual/basic/basic.md index c13c0f1a07c283040a4c7d7945dea3d1f0cc1721..b0a82376789981ce20930856fb6845607e98b53a 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/basic/basic.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/basic/basic.md @@ -84,7 +84,6 @@ int $Sub$$main(void) } ``` - 在这里 `$Sub$$main` 函数调用了 rtthread_startup() 函数,其中 rtthread_startup() 函数的代码如下所示: ```c @@ -408,34 +407,21 @@ struct rt_object ```c enum rt_object_class_type { - RT_Object_Class_Thread = 0, /* 对象为线程类型 */ -#ifdef RT_USING_SEMAPHORE - RT_Object_Class_Semaphore, /* 对象为信号量类型 */ -#endif -#ifdef RT_USING_MUTEX - RT_Object_Class_Mutex, /* 对象为互斥量类型 */ -#endif -#ifdef RT_USING_EVENT - RT_Object_Class_Event, /* 对象为事件类型 */ -#endif -#ifdef RT_USING_MAILBOX - RT_Object_Class_MailBox, /* 对象为邮箱类型 */ -#endif -#ifdef RT_USING_MESSAGEQUEUE - RT_Object_Class_MessageQueue, /* 对象为消息队列类型 */ -#endif -#ifdef RT_USING_MEMPOOL - RT_Object_Class_MemPool, /* 对象为内存池类型 */ -#endif -#ifdef RT_USING_DEVICE - RT_Object_Class_Device, /* 对象为设备类型 */ -#endif - RT_Object_Class_Timer, /* 对象为定时器类型 */ -#ifdef RT_USING_MODULE - RT_Object_Class_Module, /* 对象为模块 */ -#endif - RT_Object_Class_Unknown, /* 对象类型未知 */ - RT_Object_Class_Static = 0x80 /* 对象为静态对象 */ + RT_Object_Class_Null = 0x00, /**< 对象未使用. */ + RT_Object_Class_Thread = 0x01, /**< 对象是 thread. */ + RT_Object_Class_Semaphore = 0x02, /**< 对象是 semaphore. */ + RT_Object_Class_Mutex = 0x03, /**< 对象是 mutex. */ + RT_Object_Class_Event = 0x04, /**< 对象是 event. */ + RT_Object_Class_MailBox = 0x05, /**< 对象是 mail box. */ + RT_Object_Class_MessageQueue = 0x06, /**< 对象是 message queue. */ + RT_Object_Class_MemHeap = 0x07, /**< 对象是 memory heap. */ + RT_Object_Class_MemPool = 0x08, /**< 对象是 memory pool. */ + RT_Object_Class_Device = 0x09, /**< 对象是 device. */ + RT_Object_Class_Timer = 0x0a, /**< 对象是 timer. */ + RT_Object_Class_Module = 0x0b, /**< 对象是 module. */ + RT_Object_Class_Memory = 0x0c, /**< 对象是 memory. */ + RT_Object_Class_Unknown = 0x0e, /**< 对象是 unknown. */ + RT_Object_Class_Static = 0x80 /**< 对象是 static object. */ }; ``` @@ -645,11 +631,9 @@ RT-Thread 的一个重要特性是高度可裁剪性,支持对内核进行精 /* 开启静态内存池的使用 */ #define RT_USING_MEMPOOL -/* 定义该宏可开启两个或以上内存堆拼接的使用,未定义则关闭 */ -#define RT_USING_MEMHEAP - -/* 开启小内存管理算法 */ +/* 开启小内存管理算法,并作为 heap 使用 */ #define RT_USING_SMALL_MEM +#define RT_USING_SMALL_MEM_AS_HEAP /* 关闭 SLAB 内存管理算法 */ /* #define RT_USING_SLAB */ @@ -689,6 +673,8 @@ RT-Thread 的一个重要特性是高度可裁剪性,支持对内核进行精 ```c /* 定义该宏可开启系统 FinSH 调试工具的使用,未定义则关闭 */ #define RT_USING_FINSH +/* 开启系统 FinSH 时:定义该宏开启 MSH 功能 */ +#define FINSH_USING_MSH /* 开启系统 FinSH 时:将该线程名称定义为 tshell */ #define FINSH_THREAD_NAME "tshell" @@ -707,13 +693,6 @@ RT-Thread 的一个重要特性是高度可裁剪性,支持对内核进行精 #define FINSH_THREAD_STACK_SIZE 4096 /* 开启系统 FinSH 时:定义命令字符长度 */ #define FINSH_CMD_SIZE 80 - -/* 开启系统 FinSH 时:定义该宏开启 MSH 功能 */ -#define FINSH_USING_MSH -/* 开启系统 FinSH 时:开启 MSH 功能时,定义该宏默认使用 MSH 功能 */ -#define FINSH_USING_MSH_DEFAULT -/* 开启系统 FinSH 时:定义该宏,仅使用 MSH 功能 */ -#define FINSH_USING_MSH_ONLY ``` (7)关于 MCU @@ -722,9 +701,8 @@ RT-Thread 的一个重要特性是高度可裁剪性,支持对内核进行精 /* 定义该工程使用的 MCU 为 STM32F103ZE;系统通过对芯片类型的定义,来定义芯片的管脚 */ #define STM32F103ZE -/* 定义时钟源频率 */ -#define RT_HSE_VALUE 8000000 - +/* 定义该宏开启 GPIO 的使用 */ +#define BSP_USING_GPIO /* 定义该宏开启 UART1 的使用 */ #define RT_USING_UART1 ``` diff --git a/rt-thread-version/rt-thread-standard/programming-manual/interrupt/interrupt.md b/rt-thread-version/rt-thread-standard/programming-manual/interrupt/interrupt.md index a31f6f44d06d1193ed381b53d077f476fa870f52..a8dc5fe5930c4174a4cb887e6ec24f3fff776a54 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/interrupt/interrupt.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/interrupt/interrupt.md @@ -441,7 +441,7 @@ void rt_interrupt_leave(void); 在上层应用中,在内核需要知道当前已经进入到中断状态或当前嵌套的中断深度时,可调用 rt_interrupt_get_nest() 接口,它会返回 rt_interrupt_nest。如下: ```c -rt_uint8_t rt_interrupt_get_nest(void); +RT_WEAK rt_uint8_t rt_interrupt_get_nest(void); ``` 下表描述了 rt_interrupt_get_nest() 的返回值 diff --git a/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md b/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md index 29841d68b567f5e0d6a3d671cddf586d2ddb01cf..087a36f87e6411bd9364298ce5de86380bc7ae5b 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md @@ -702,6 +702,7 @@ rt_err_t rt_mutex_take (rt_mutex_t mutex, rt_int32_t time); 当用户不想在申请的互斥量上挂起线程进行等待时,可以使用无等待方式获取互斥量,无等待获取互斥量使用下面的函数接口: ```c +/* 4.0.4 add */ rt_err_t rt_mutex_trytake(rt_mutex_t mutex); ``` diff --git a/rt-thread-version/rt-thread-standard/programming-manual/ipc2/ipc2.md b/rt-thread-version/rt-thread-standard/programming-manual/ipc2/ipc2.md index 4b685e5b606f449cebdbbcfd13b23365322eb935..a7493bbd764b218a461a80491dae4dcf6d10500d 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/ipc2/ipc2.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/ipc2/ipc2.md @@ -128,7 +128,7 @@ rt_err_t rt_mb_detach(rt_mailbox_t mb); 线程或者中断服务程序可以通过邮箱给其他线程发送邮件,发送邮件函数接口如下: ```c -rt_err_t rt_mb_send (rt_mailbox_t mb, rt_uint32_t value); +rt_err_t rt_mb_send (rt_mailbox_t mb, rt_ubase_t value); ``` 发送的邮件可以是 32 位任意格式的数据,一个整型值或者一个指向缓冲区的指针。当邮箱中的邮件已经满时,发送邮件的线程或者中断程序会收到 -RT_EFULL 的返回值。下表描述了该函数的输入参数与返回值: @@ -147,7 +147,7 @@ rt_err_t rt_mb_send (rt_mailbox_t mb, rt_uint32_t value); ```c rt_err_t rt_mb_send_wait (rt_mailbox_t mb, - rt_uint32_t value, + rt_ubase_t value, rt_int32_t timeout); ``` @@ -186,7 +186,7 @@ rt_err_t rt_mb_urgent (rt_mailbox_t mb, rt_ubase_t value); 只有当接收者接收的邮箱中有邮件时,接收者才能立即取到邮件并返回 RT_EOK 的返回值,否则接收线程会根据超时时间设置,或挂起在邮箱的等待线程队列上,或直接返回。接收邮件函数接口如下: ```c -rt_err_t rt_mb_recv (rt_mailbox_t mb, rt_uint32_t* value, rt_int32_t timeout); +rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout); ``` 接收邮件时,接收者需指定接收邮件的邮箱句柄,并指定接收到的邮件存放位置以及最多能够等待的超时时间。如果接收时设定了超时,当指定的时间内依然未收到邮件时,将返回 - RT_ETIMEOUT。下表描述了该函数的输入参数与返回值: @@ -528,6 +528,7 @@ rt_err_t rt_mq_send (rt_mq_t mq, void* buffer, rt_size_t size); 用户也可以通过如下的函数接口向指定的消息队列中发送消息: ```c +/* 4.0.2 add*/ rt_err_t rt_mq_send_wait(rt_mq_t mq, const void *buffer, rt_size_t size, @@ -552,7 +553,7 @@ rt_mq_send_wait() 与 rt_mq_send() 的区别在于有等待时间,如果消息 发送紧急消息的过程与发送消息几乎一样,唯一的不同是,当发送紧急消息时,从空闲消息链表上取下来的消息块不是挂到消息队列的队尾,而是挂到队首,这样,接收者就能够优先接收到紧急消息,从而及时进行消息处理。发送紧急消息的函数接口如下: ```c -rt_err_t rt_mq_urgent(rt_mq_t mq, void* buffer, rt_size_t size); +rt_err_t rt_mq_urgent(rt_mq_t mq, const void *buffer, rt_size_t size); ``` 下表描述了该函数的输入参数与返回值: diff --git a/rt-thread-version/rt-thread-standard/programming-manual/memory/memory.md b/rt-thread-version/rt-thread-standard/programming-manual/memory/memory.md index da409353ade8378c026932f86c1ea10c3756826f..5f56fa16aaa5324104d6ae3cfe5a47926c9e9e87 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/memory/memory.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/memory/memory.md @@ -117,10 +117,10 @@ void rt_system_heap_init(void* begin_addr, void* end_addr); 在使用 memheap 堆内存时,必须要在系统初始化的时候进行堆内存的初始化,可以通过下面的函数接口完成: ```c -rt_err_t rt_memheap_init(struct rt_memheap *memheap, - const char *name, - void *start_addr, - rt_uint32_t size) +rt_err_t rt_memheap_init(struct rt_memheap *memheap, + const char *name, + void *start_addr, + rt_size_t size) ``` 如果有多个不连续的 memheap 可以多次调用该函数将其初始化并加入 memheap_item 链表。下表描述了该函数的输入参数与返回值: @@ -168,7 +168,7 @@ rt_malloc 函数会从系统堆空间中找到合适大小的内存块,然后 ```c int *pi; pi = rt_malloc(100); -if(pi == NULL) +if(pi == NULL) { rt_kprintf("malloc failed\r\n"); } diff --git a/rt-thread-version/rt-thread-standard/programming-manual/thread/thread.md b/rt-thread-version/rt-thread-standard/programming-manual/thread/thread.md index a45b13c559dc00797c51e1bf95deca7f76275163..9c74dd8bf1804eadc06270d373427a3c836e3b5f 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/thread/thread.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/thread/thread.md @@ -170,7 +170,9 @@ static void thread_entry(void* parameter) ### 线程状态切换 -RT-Thread 提供一系列的操作系统调用接口,使得线程的状态在这五个状态之间来回切换。几种状态间的转换关系如下图所示: +RT-Thread 提供一系列的操作系统调用接口,使得线程的状态在这五个状态之间来回切换。几种状态间的转换关系如下图所示 + +> 注: 4.0.0 版本增加 RT_THREAD_RUNNING 运行状态,在这之前,运行状态与就绪状态公用 RT_THREAD_READY。 ![线程状态转换图](figures/04thread_sta.png)