五一假期闲来无事,决定做一件一直想尝试的事情:将《STM32F103 TFT开发板综合测试程序 京东方玻璃》这个示例程序移植到embassy-stm32平台。
整个过程大约花费了一天半的时间,期间充分利用了GitHub Copilot和Claude 3.7 Sonnet等AI工具,大大提升了开发效率。
原项目采用的是C语言,并基于STM32官方已不再维护的SPL(Standard Peripheral Library)库。
项目仓库地址: https://github.com/jmjoy/stm32f103-tft-board-boe-suite
移植效果展示

为什么选择embassy?
embassy是一个基于Rust语言的异步嵌入式开发框架,具有以下显著优势:
- 全自动
wfe(Wait For Event)机制,极致省电embassy自动管理低功耗等待,极大降低了能耗,非常适合对功耗敏感的嵌入式场景。 - 基于Rust的
async/await,原生支持多任务
利用Rust的异步编程模型,可以轻松实现多任务并发,无需传统的RTOS(实时操作系统),简化了任务调度和资源管理。 - Rust所有权机制,杜绝外设配置错误
Rust的类型系统和所有权机制能够在编译期捕获外设使用中的潜在错误,提升系统稳定性和安全性。 - 丰富的
embassy生态系统,简化嵌入式开发流程
借助embassy及其配套库,可以方便地集成各种外设驱动和中间件,大幅提升开发效率。
强烈推荐嵌入式爱好者和从业者尝试使用embassy,体验Rust异步嵌入式开发的高效与安全!
后记
在完成基本移植后,我对LCD屏幕背光控制进行了额外的改进。基于我对LCD屏幕BLK(背光)引脚的理解,该引脚应该可以通过PWM信号调整屏幕亮度。然而,令人惊讶的是,这款开发板直接将BLK引脚通过弱上拉电阻连接到VCC,完全没有利用背光调节功能。
为了实现背光亮度调节功能,我外接了一块使用相同通信协议的LCD屏幕,并将其BLK引脚连接到开发板的PB8引脚(该引脚默认可复用为TIM4的CH3通道)。随后,我修改了代码,实现了屏幕亮度的循环渐变效果。

这一改进不仅增强了显示效果,还顺便为项目增加了一个展示embassy框架使用PWM控制的实用示例,为有兴趣深入学习的开发者提供了更多参考。

说些什么吧!