news 2026/2/14 23:53:53

零基础玩转RT-Thread:首个LED闪烁项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
零基础玩转RT-Thread:首个LED闪烁项目

快速体验

  1. 打开 InsCode(快马)平台 https://www.inscode.net
  2. 输入框内输入如下内容:
    创建一个最简单的RT-Thread入门项目:1.基于STM32F103C8T6最小系统板;2.实现板载LED每隔500ms闪烁;3.包含串口打印"Hello RT-Thread"功能;4.工程要完整包含RT-Thread内核配置。请用最简化的代码实现,并在关键代码处添加中文注释说明,特别说明:a)如何创建线程 b)如何使用RT-Thread的API c)如何配置工程。输出为MDK工程格式。
  3. 点击'项目生成'按钮,等待项目生成完整后预览效果

最近尝试用RT-Thread做了第一个嵌入式项目——让STM32板子上的LED灯闪烁,并实现串口打印功能。作为新手,记录下这个入门过程,希望对同样刚接触RT-Thread的朋友有帮助。整个过程在InsCode(快马)平台上完成,比传统开发方式省心很多。

  1. 硬件准备与环境搭建
  2. 使用最常见的STM32F103C8T6最小系统板(蓝色小板),板载一颗用户LED(PC13引脚控制)。
  3. 传统方式需要手动安装MDK、芯片支持包等,但在快马平台可以直接创建RT-Thread项目模板,自动配置好编译环境。
  4. 平台内置了RT-Thread最新稳定版,省去了源码下载和版本匹配的麻烦。

  5. 创建基础工程

  6. 在平台上选择"RT-Thread MDK工程"模板,目标芯片设为STM32F103C8T6。
  7. 系统会自动生成包含RT-Thread内核的完整工程结构,包括启动文件、链接脚本等关键配置。
  8. 特别方便的是,平台预置了正确的时钟配置(72MHz主频),不用自己折腾时钟树初始化。

  9. 编写LED线程

  10. 在main.c中创建线程控制LED:
    • rt_thread_create()创建线程,指定入口函数为led_thread_entry
    • 线程栈设为256字节足够(平台会提示合理范围)。
    • 优先级设为25(中等优先级,数值越小优先级越高)。
  11. LED控制逻辑:

    • 在入口函数中用rt_pin_mode()设置PC13为输出模式。
    • 循环内用rt_pin_write()交替设置高低电平,配合rt_thread_mdelay(500)实现500ms间隔。
  12. 添加串口打印

  13. 使用RT-Thread的设备驱动框架操作串口1:
    • 通过rt_device_find("uart1")查找设备。
    • rt_device_open()以读写模式打开串口。
    • 调用rt_device_write()发送"Hello RT-Thread"字符串。
  14. 注意串口引脚默认配置(PA9/PA10),无需额外初始化。

  15. 关键配置说明

  16. 通过rtconfig.h开启必要功能:
    • 定义RT_USING_PIN启用GPIO驱动。
    • 定义RT_USING_DEVICERT_USING_SERIAL启用串口设备。
  17. 在平台的项目配置界面可以可视化修改这些宏,比直接改文件更直观。

  18. 编译与下载

  19. 点击平台上的构建按钮自动编译,错误提示会直接定位到代码行。
  20. 连接开发板后,使用平台集成的ST-Link工具一键下载程序。
  21. 首次下载可能需要安装USB驱动,平台会提供详细指引。

  22. 效果验证

  23. 上电后看到LED规律闪烁。
  24. 用串口助手(如Putty)连接板载串口,波特率115200,收到循环打印的消息。
  25. 如果LED没反应,优先检查接线和板载LED的有效电平(有些板子需要低电平点亮)。

  26. 踩坑总结

  27. 线程栈大小最初设128字节导致运行不稳定,后调整为256字节。
  28. 忘记调用rt_device_open()导致串口无法使用,平台运行时日志会明确报错。
  29. 延时函数误用rt_thread_delay()(以tick为单位)导致时间不准,应改用毫秒单位的rt_thread_mdelay()

整个项目从零到运行只用了不到20分钟,比预想中顺利很多。特别点赞快马平台的两个设计:

  • 智能错误提示:编译错误会标记具体位置,甚至给出修改建议。比如忘记包含头文件时,平台会提示可能缺失的依赖。
  • 硬件无关适配:同样的代码稍作修改就能用在其他STM32板卡上,平台会自动处理不同芯片的底层差异。

对于想快速验证想法的开发者,推荐试试InsCode(快马)平台的一键部署功能。我的LED项目虽然简单,但完整走通了嵌入式开发的全流程,而且全程在浏览器里完成,不需要配任何本地环境。接下来准备用同样的方式学习RT-Thread的信号量和消息队列,平台已经预置了相关示例模板,应该能省下不少查资料的时间。

快速体验

  1. 打开 InsCode(快马)平台 https://www.inscode.net
  2. 输入框内输入如下内容:
    创建一个最简单的RT-Thread入门项目:1.基于STM32F103C8T6最小系统板;2.实现板载LED每隔500ms闪烁;3.包含串口打印"Hello RT-Thread"功能;4.工程要完整包含RT-Thread内核配置。请用最简化的代码实现,并在关键代码处添加中文注释说明,特别说明:a)如何创建线程 b)如何使用RT-Thread的API c)如何配置工程。输出为MDK工程格式。
  3. 点击'项目生成'按钮,等待项目生成完整后预览效果

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/7 15:42:14

C# Lambda表达式实战指南

《lambda》 lambda表达式:可以让我们定义一个变量接收一个函数,主要是作为另外一个函数的参数进行使用,具体体现变量和函数之间使用>,所以其他编程语言称之为箭头函数,但严谨来说c#没有箭头函数。 如果一个函数仅在当前作用域进行使用&am…

作者头像 李华
网站建设 2026/2/4 1:07:33

FilmAgent完整指南:15分钟构建你的AI电影工作室

FilmAgent完整指南:15分钟构建你的AI电影工作室 【免费下载链接】FilmAgent Resources of our paper "FilmAgent: A Multi-Agent Framework for End-to-End Film Automation in Virtual 3D Spaces". New versions in the making! 项目地址: https://git…

作者头像 李华
网站建设 2026/2/11 5:39:58

终极指南:eino框架如何轻松搞定LLM结构化输出解析

终极指南:eino框架如何轻松搞定LLM结构化输出解析 【免费下载链接】eino Go 语言编写的终极大型语言模型(LLM)应用开发框架,强调简洁性、可扩展性、可靠性与有效性。 项目地址: https://gitcode.com/CloudWeGo/eino 在现代…

作者头像 李华
网站建设 2026/2/7 6:20:57

Vite创建Vue3项目:比传统脚手架快10倍的秘诀

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 生成性能对比演示项目:1. 分别用Vite和Vue CLI创建基础Vue3项目 2. 添加包含100个组件的压力测试模块 3. 实现自动化的构建时间对比脚本 4. 热更新响应速度测试页面 5. …

作者头像 李华
网站建设 2026/2/7 18:28:00

uni-app跨平台开发完整指南:从入门到实战

uni-app跨平台开发完整指南:从入门到实战 【免费下载链接】uni-app A cross-platform framework using Vue.js 项目地址: https://gitcode.com/dcloud/uni-app uni-app是基于Vue.js生态构建的跨平台应用开发框架,它让开发者能够使用熟悉的Vue语法…

作者头像 李华
网站建设 2026/2/10 5:34:33

CAD地块分割面积计算工具:专业测绘效率提升方案

CAD地块分割面积计算工具:专业测绘效率提升方案 【免费下载链接】cass和CAD分地分割面积插件 这款**cass和CAD分地分割面积插件**是专为地籍测绘人员打造的高效工具,兼容cass和CAD软件,轻松实现地块分割与面积计算。其特点包括强大的兼容性、…

作者头像 李华