RT-Thread 在合宙 Air32F103 开发板上的 BSP 使用指南:快速上手与进阶配置
RT-Thread 在合宙 Air32F103 开发板上的 BSP 使用指南快速上手与进阶配置【免费下载链接】rt-threadRT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/项目地址: https://gitcode.com/gh_mirrors/rt/rt-thread本文围绕 RT-Thread 仓库中 bsp/airm2m/air32f103 的 BSP板级支持包展开介绍基于 Cortex-M3 内核、主频最高 216MHz 的合宙 Air32F103CBT6 开发板资源、外设支持现状以及从编译下载、运行验证到借助 ENV 工具开启更多外设的完整流程。读完本文你将能够独立把 RT-Thread 系统跑在 Air32F103 开发板上并通过 menuconfig 按需启用 UART、SPI Flash、软件 I2C、ADC、定时器等板载外设。开发板与 BSP 简介该 BSP 由合宙airm2m开发团队为 Air32F103 开发板提供说明文档位于 bsp/airm2m/air32f103/README.md主要内容包括开发板资源介绍、BSP 快速上手、进阶使用方法。Air32F103 是一个系列芯片首发型号为Air32F103CBT6其外设与硬件设计兼容市场上一些主流的 F103 型号因此已有的 STM32F103 外设使用经验可以平滑迁移。该芯片的关键特性如下内核ARM Cortex-M3主频最高216MHz存储96KB RAM 128KB FlashGPIO每个 IO 都可以独立设置内部上拉/下拉电阻上述存储与内存参数在 bsp/airm2m/air32f103/board/board.h 中有直接对应定义Flash 起始地址0x08000000、容量 128KBSRAM 容量 96KB同时根据编译器MDK 的__ARMCC_VERSION、IAR 的__ICCARM__、GCC 的__bss_end分别确定堆起始地址HEAP_BEGIN并以AIR32_SRAM_END作为堆结束地址。板载资源资源说明MCUAir32F103CBT6主频 216MHz128KB FLASH96KB RAM调试下载DapLink 调试下载接口串口UART0 转 Type-C USB 接口同时承担调试串口与下载通道开发板的更多硬件细节可以参考合宙官方 LuatOS 文档中关于 Air32F103 开发板章节本文不再展开。外设支持情况本 BSP 当前对外设的支持情况如下表所示片上外设支持情况GPIO支持UART支持SPI支持I2C支持ADC支持TIM支持WDT支持这些外设驱动的实现都位于 bsp/airm2m/air32f103/libraries/rt_drivers 目录下包括drv_gpio.c、drv_usart.c、drv_spi.c、drv_adc.c、drv_timer.c、drv_wdt.c、drv_flash.c等底层依赖同目录下的 AIR32F10xLib 标准外设库与 CMSIS 支持包。使用说明使用说明分为两个章节快速上手面向刚接触 RT-Thread 的新手遵循简单步骤即可将 RT-Thread 操作系统运行在该开发板上看到实验效果进阶使用面向需要在 RT-Thread 上使用更多开发板资源的开发者通过 ENV 工具对 BSP 进行配置开启更多板载外设。快速上手本 BSP 为开发者提供了 MDK4、MDK5 工程并且支持 GCC 开发环境。下面以 MDK5 开发环境为例介绍如何将系统运行起来。硬件连接使用数据线连接开发板到 PC打开电源开关。编译下载双击 bsp/airm2m/air32f103/project.uvprojx 文件打开 MDK5 工程编译并下载程序到开发板。工程默认配置使用DapLink下载程序在通过 DapLink 连接开发板的基础上点击下载按钮即可将程序下载到开发板。此外工程目录还同时提供了 GCC 与 IAR 支持GCC 开发环境对应的工程脚本为 bsp/airm2m/air32f103/SConstruct 与 bsp/airm2m/air32f103/rtconfig.py可使用scons命令编译IAR 工程为 bsp/airm2m/air32f103/project.ewp。从 bsp/airm2m/air32f103/board/SConscript 的源码可以看到不同工具链下会链接不同的启动文件GCC 使用Startup/gcc/startup_air32f10x.sarmcc/armclangMDK使用Startup/arm/startup_air32f10x.siccarmIAR使用Startup/iar/startup_air32f10x.s工程模板对三种工具链的覆盖是完整的。运行结果下载程序成功之后系统会自动运行。观察开发板上 LED 的运行效果红色 LED0 会周期性闪烁。LED0 的引脚定义位于 bsp/airm2m/air32f103/applications/main.c/* defined the LED0 pin: PB2 */ #define LED0_PIN GET_PIN(B, 2)main函数将 PB2 配置为输出模式后在循环中以 500ms 间隔交替输出高低电平rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT); while (1) { rt_pin_write(LED0_PIN, PIN_HIGH); rt_thread_mdelay(500); rt_pin_write(LED0_PIN, PIN_LOW); rt_thread_mdelay(500); }main.c还会在启动时调用RCC_GetClocksFreq读取并打印系统各总线时钟频率用于确认 216MHz 主频配置是否生效。连接开发板对应串口到 PC在终端工具里打开相应的串口115200-8-1-N即波特率 115200、8 位数据、1 位停止位、无校验复位设备后可以看到 RT-Thread 的输出信息\ | / - RT - Thread Operating System / | \ 5.0.0 build Dec 27 2022 10:44:04 2006 - 2022 Copyright by RT-Thread team SYSCLK: 216Mhz, HCLK: 216Mhz, PCLK1: 108Mhz, PCLK2: 216Mhz, ADCCLK: 108Mhz msh 看到msh 命令行提示符后即表示 RT-Thread 已成功运行可以通过串口执行 msh 内置命令。时钟树配置的源码印证上述打印中的时钟数值由 bsp/airm2m/air32f103/board/board.c 中的SystemClock_Config()决定。该函数完成如下初始化序列RCC_DeInit()复位 RCC 寄存器使能 HSE外部高速晶振并等待就绪配置 PLLAIR_RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_27, FLASH_Div_2)即 8MHz HSE × 27 216MHz系统时钟选择 PLL 作为系统时钟源配置总线分频HCLK 不分频216MHz、PCLK1 二分频108MHz、PCLK2 不分频216MHz使能 LSI 与 HSI 内部时钟并等待就绪。从源码结构可以看出Air32F103 在沿用 STM32F103 标准外设库 API 风格的基础上通过AIR_RCC_PLLConfig这类专用接口实现了对 216MHz 高频的扩展支持。进阶使用此 BSP 默认只开启了GPIO和串口1uart1的功能。这一点在 bsp/airm2m/air32f103/rtconfig.h 中有直接体现#define SOC_AIR32F103 #define BSP_USING_GPIO #define BSP_USING_UART #define BSP_USING_UART1同时控制台设备默认绑定到uart1#define RT_CONSOLE_DEVICE_NAME uart1如需使用 SPI Flash、ADC、定时器等更多高级功能需要利用 ENV 工具对 BSP 进行配置步骤如下在bsp目录下打开 ENV 工具输入menuconfig命令配置工程配置好之后保存退出输入pkgs --update命令更新软件包输入scons --targetmdk4/mdk5/iar命令重新生成工程按实际使用的工具链选择mdk4、mdk5或iar生成对应 IDE 工程文件。可配置的外设选项bsp/airm2m/air32f103/board/Kconfig 定义了本 BSP 的硬件驱动配置菜单主要选项及其默认值如下菜单/选项含义默认值依赖SOC_AIR32F103芯片型号自动选中y自动选择ARCH_ARM_CORTEX_M3、RT_USING_COMPONENTS_INIT、RT_USING_USER_MAINBSP_USING_SHELL_TO_USART串口1 作为 msh 控制台y自动选中BSP_USING_UART、BSP_USING_UART1BSP_USING_SPI_FLASH板载 SPI FlashW25Q64挂在 SPI1n自动选中BSP_USING_SPI、RT_USING_SFUD、RT_SFUD_USING_SFDPBSP_USING_GPIO使能 GPIOPIN 设备y自动选中RT_USING_PINBSP_USING_UART1/2/3分别使能 UART1、UART2、UART3n需要BSP_USING_UART开启默认 yBSP_USING_SOFT_I2C1软件 I2C1 总线swi2c1nSCL 引脚默认 24PB0、SDA 引脚默认 25PB1BSP_USING_SPI1/2/3使能 SPI1、SPI2、SPI3 总线n需要BSP_USING_SPI开启BSP_USING_ADC1/2使能 ADC1、ADC2n需要BSP_USING_ADC开启BSP_USING_TIM2/3/4使能 TIM2、TIM3、TIM4时钟设备n需要BSP_USING_TIM开启BSP_USING_ON_CHIP_FLASH使能片内 Flashn—BSP_USING_WDT使能看门狗n自动选中RT_USING_WDT从 Kconfig 定义可以看出各外设的引脚映射约束在 bsp/airm2m/air32f103/board/board.c 中均有对应的初始化实现UARTUART1 → PA9(TX)/PA10(RX)UART2 → PA2(TX)/PA3(RX)UART3 → PC10(TX)/PC11(RX)其中 UART3 需要使能GPIO_PartialRemap_USART3部分重映射SPISPI1 → PA5/PA6/PA7时钟取自 PCLK2216MHz 总线SPI2 → PB13/PB14/PB15时钟取自 PCLK1108MHz 总线TIMTIM1 挂载于 APB2TIM2/3/4 挂载于 APB1定时器时钟统一按 HCLK 频率返回PWMTIM1 → PA8~PA11TIM2 → PA0~PA3TIM3 → PA6/PA7/PB0/PB1TIM4 → PB6~PB9。开启板载 SPI FlashW25Q64示例当在 menuconfig 中打开BSP_USING_SPI_FLASH后构建脚本 bsp/airm2m/air32f103/board/SConscript 会额外把 bsp/airm2m/air32f103/board/ports/spi_flash_init.c 纳入编译。该文件通过组件自动初始化机制完成 SPI Flash 挂载static int rt_hw_spi_flash_init(void) { rt_hw_spi_device_attach(spi1, spi10, GET_PIN(A, 4)); if (RT_NULL rt_sfud_flash_probe(W25Q64, spi10)) { return -RT_ERROR; }; return RT_EOK; } INIT_COMPONENT_EXPORT(rt_hw_spi_flash_init);即把 SPI1 总线上的设备命名为spi10片选 CS 为 PA4再通过 SFUD 组件探测 W25Q64 并注册为块设备随后即可配合 DFS 文件系统使用。片内 Flash 分区FAL当启用 FAL 组件且开启分区表配置FAL_PART_HAS_TABLE_CFG时bsp/airm2m/air32f103/board/ports/fal_cfg.h 提供了如下默认分区划分#define FAL_PART_TABLE \ { \ {FAL_PART_MAGIC_WROD, app, onchip_flash, 0, 112 * 1024, 0}, \ {FAL_PART_MAGIC_WROD, param, onchip_flash, 112* 1024 , 16 * 1024, 0}, \ }即 128KB 片内 Flash 被划分为app分区偏移 0112KB用于应用程序param分区偏移 112KB16KB用于参数存储便于后续结合 OTA 升级或掉电保存场景使用。注意事项工程默认通过 DapLink 下载程序首次使用前请确认 DapLink 驱动已正确安装串口参数必须为115200-8-1-N否则控制台输出会出现乱码默认配置仅开启 GPIO 与 uart1其余外设需通过 menuconfig 显式开启并重新生成工程Air32F103 主频最高可达 216MHz配置系统时钟时注意与 Flash 等待周期FLASH_Div_2匹配。目录结构与源码导读本 BSP 的核心目录结构如下便于读者按需深入路径说明bsp/airm2m/air32f103/applications应用入口main.cLED 闪烁示例与时钟打印bsp/airm2m/air32f103/board板级初始化board.c/board.h、外设引脚映射、FAL 与 SPI Flash 移植ports/bsp/airm2m/air32f103/librariesAIR32F10x 标准外设库、CMSIS、各工具链启动文件及 RT-Thread 设备驱动rt_drivers/bsp/airm2m/air32f103/rtconfig.h当前生效的 RT-Thread 配置由 menuconfig 生成bsp/airm2m/air32f103/rtconfig.pySCons 构建配置定义工具链与编译选项bsp/airm2m/air32f103/board/linker_scriptsIARlink.icf、GCClink.lds、MDKlink.sct三种链接脚本总结RT-Thread 为合宙 Air32F103 开发板提供了开箱即用的 BSP默认仅占用 GPIO 与 uart1 即可跑通系统串口输出 216MHz 主频下的完整启动日志借助 ENV 工具与menuconfig开发者可以按需开启 UART、SPI、软件 I2C、ADC、TIM、WDT、片内 Flash 等外设并通过scons --targetmdk4/mdk5/iar一键重生成工程。配合board.c中清晰的时钟树与引脚映射实现、ports/下的 SFUD/FAL 移植该 BSP 既适合新手快速体验 RT-Thread也适合作为开发者扩展板载外设驱动的参考模板。【免费下载链接】rt-threadRT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/项目地址: https://gitcode.com/gh_mirrors/rt/rt-thread创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

酒店评论情感分析Python实战:从数据清洗到模型调优全流程

酒店评论情感分析Python实战:从数据清洗到模型调优全流程

简介:面向Python课程期末大作业与情感分析入门的一项酒店评论情感分析完整项目,源码本地编译可运行,评审分达95分以上,难度适中且经助教审定,可作为课程设计参考或结课作业模板。压缩包共23个文件、约4.36MB&#xff1…

2026/9/23 15:48:23 阅读更多 →
开题报告文献综述生成工具测评:4款打分对比

开题报告文献综述生成工具测评:4款打分对比

引言:开题季的文献综述难题 开题报告写作季,大量研究生面临文献综述无从下手的困境。本文选取四款主流辅助工具进行实测评分,从生成质量、降重能力、图表处理等多个维度打分,帮助读者找到适配自身需求的产品。测评围绕AI写作工具…

2026/9/23 15:48:23 阅读更多 →
Phoenix 预置 Evaluators 完全指南:LLM 评判器与代码评判器的选型、调用与落地验证

Phoenix 预置 Evaluators 完全指南:LLM 评判器与代码评判器的选型、调用与落地验证

可观测性AI 评测LLMOpsAI 应用人工智能 【免费下载链接】phoenix AI Observability & Evaluation 项目地址: https://gitcode.com/gh_mirrors/phoenix13/phoenix 点击查看 免费下载 本篇技术指南围绕 Arize Phoenix 提供的预置(Pre-Built&#xff0…

2026/9/23 15:48:23 阅读更多 →

最新新闻

人民银行征信系统开发避坑速查手册

人民银行征信系统开发避坑速查手册

人民银行征信系统开发避坑速查手册 面试被问“征信数据如何保证一致性”,你支支吾吾答不上来?别慌,这行代码逻辑你肯定在某个角落写过,只是没和【人民银行征信】这个高大上的词挂钩。 很多后端和前端老哥,平时写 CRUD…

2026/9/23 16:35:31 阅读更多 →
DeepSeek企业落地实战:从API调用到本地部署与多智能体编排

DeepSeek企业落地实战:从API调用到本地部署与多智能体编排

简介:这份《2025 DeepSeek企业落地应用讲义精华完整版》面向企业管理者、数字化转型负责人及AI应用开发者,系统讲解DeepSeek在企业场景中的落地路径。内容涵盖特征价值、交互生成、智能增强、部署开发四大篇章,从数字化转型的价值特征、科技驱…

2026/9/23 16:35:31 阅读更多 →
手机通讯录备份软件选型对比:3种方案性能优化实战

手机通讯录备份软件选型对比:3种方案性能优化实战

手机通讯录备份软件选型对比:3种方案性能优化实战 面试被问原理答不上来?很多开发者在落地手机通讯录备份功能时,往往陷入“能跑就行”的误区。当数据量达到数万条记录,或者面对高并发写入场景时,系统卡顿、数据丢失甚至崩溃就成了常态。这时候,…

2026/9/23 16:35:31 阅读更多 →
小波神经网络用于太阳辐照预测的实战指南

小波神经网络用于太阳辐照预测的实战指南

简介:本资源是一篇聚焦新能源发电预测的学术论文,面向电力系统工程师、光伏电站运维人员及机器学习算法研究者,解决太阳能辐照强度因间歇性与随机性导致的功率预测不准、电网调度困难等实际问题。论文提出一种融合小波分析与神经网络优势的WN…

2026/9/23 16:35:31 阅读更多 →
Mask R-CNN改进机械臂抓取:从实例分割到深度估计的完整路线

Mask R-CNN改进机械臂抓取:从实例分割到深度估计的完整路线

简介:一份面向机械臂抓取与计算机视觉研究者的 PDF 资料,内容围绕基于 Mask R-CNN 的机械臂最优抓取位置检测方法展开,适合深度学习、机器人控制及目标检测方向的初学者与进阶者学习参考,亦可作为机器人抓取课程设计与毕业设计的入…

2026/9/23 16:35:30 阅读更多 →
虚拟场景构建与漫游技术全流程解析:从资产规范化到光照与性能优化

虚拟场景构建与漫游技术全流程解析:从资产规范化到光照与性能优化

虚拟场景构建这行做了快十年,我越来越觉得真正拉开差距的往往不是软件技巧,而是对整条生产链路的把控能力。很多人一上来就扎进建模软件或者引擎里猛肝,结果模型导入引擎后比例错乱、光照漏光、漫游卡顿,返工成本比重新做一遍还高…

2026/9/23 16:34:30 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →