1.关于RT-Thread Studio 移植 FSMC LCD

本文档介绍了如何在STM32项目中快速移植FSMC驱动LCD,主要涉及STM32CubeIDE的配置、HAL库代码的移植以及RT-Thread Studio的工程适配。作者分享了个人经验,推荐了原子哥的例程,并指出了解基本原理和利用供应商提供的源码是关键。同时,提到了在ROS环境下进行C++开发时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、描述

对于LCD 使用FSMC驱动的太详细的原理我就不讲解了,因为太具体的我也不是很了解,但是对于移植,知道‘套路’就行。毕竟对于项目的开发,就是要既快又稳定,而且,一般厂家都会配套驱动源码以及配套例程,对于驱动的开发,还是交给那些大佬进行,我懂原理,能够移植他的源码或例程就行。这里我参考原子个的例程,我个人还是比较喜欢原子个的例程,移植也很方便,当然,前提是知道了原理,但是不需要你写驱动。

二、 关于CubeMX或CubeIDE配置程序

我使用的是CubeIDE配置程序,因为这个软件配置好程序还可以直接编译,然后烧到板子上跑一跑,而且还可以很直观的看到flash和RAM的使用情况。

当然,我遥控器使用的是STM32F103ZET6最小系统板子,车载运动系统控制板使用的是STM32F407ZGT6最小系统板。 对于F1的FSMC 地址选择是A10,F4是A6

没问题后就可以移植到RT-Thread Studio的工程去使用了。

当然,需要RT-Thread配置工程支持SRAM,还有,对于程序兼容问题,目前还必须得注释掉一些工程文件的代码(就三个句,不必要可以找到是哪个文件,当他报错了,Ctrl+鼠标 找到他注释掉:)

 

 

 三、剩下就是移植原子哥的hal库代码了

你懂原理,那肯定会移植成功,这里我就不教你了,可以看下原子哥视频或直接B站搜索FSMC LCD与STM32 相关视频。

我都已近把是实物做出来在那了,证明是绝对可行,剩下的就靠你们自己了。

还有一个问题,我是使用了ROS相关的软件包,所以我的最终程序你看到是是使用C++开发的。当然这个不影响,我先是使用C开发,把屏幕移植好才开始做后面的工作的,即我的项目是从屏幕开始的,ROS是最后添加的,即最后才把文件转成cpp文件,毕竟她占用的引脚太多了。

### RT-Thread FSMC扩展SRAM配置与使用教程 #### 1. 环境准备 为了实现RT-Thread操作系统中通过FSMC外扩SRAM的功能,需要准备好如下环境: - 开发板:STM32F4系列开发板(如STM32F407) - IDE:推荐使用CubeIDE进行项目创建和代码编写[^2] - STM32CubeMX用于初始化硬件设置并生成初始代码框架[^1] #### 2. 使用STM32CubeMX配置FSMC接口 启动STM32CubeMX软件,在Pinout&Configuration界面找到`Connectivity`分类下的`FSMC`模块,并启用该功能。对于SRAM连接而言,通常会选择Bank1 NOR/SRAM作为工作模式。 针对具体的引脚分配,需依据实际使用的外部存储器规格书以及PCB布局情况进行调整。一般情况下,地址线、数据线及片选信号应按照标准方式映射至相应的GPIO端口上。 完成上述操作后保存工程文件并通过CubeMX导出适用于所选用集成开发环境的模板代码。 #### 3. 配置RT-Thread内核支持 进入RT-Thread官方文档查阅有关于如何使能对外设的支持章节,确保已开启必要的组件和服务以便后续能够顺利调用API函数访问外部资源。这一步骤可能涉及到修改Kconfig文件或者通过图形化配置工具勾选项来激活特定驱动程序。 另外还需注意检查是否已经包含了正确的头文件声明语句,例如: ```c #include "rtdevice.h" #include "fsmc_sram.h" /* 如果存在的话 */ ``` #### 4. 编写测试应用程序 基于前面几步建立起来的基础之上,现在可以着手构建简单的读/写测试案例了。下面给出一段示范性的代码片段用来验证基本的数据交换逻辑是否正常运作: ```c /* 初始化 SRAM 设备 */ static struct fsmc_device *sram_dev; int main(void){ // ...其他初始化过程... sram_dev = (struct fsmc_device *)rt_malloc(sizeof(struct fsmc_device)); /* 进行设备注册 */ rt_hw_fmc_sram_init(sram_dev); uint8_t test_data[]="Hello,World!"; size_t length=strlen((char*)test_data); /* 向指定位置写入字符串 */ rt_memset(&buffer[0], '\0', sizeof(buffer)); memcpy(&buffer[0], &test_data[0],length); /* 将缓冲区内容复制回原数组以供打印输出 */ memcpy(test_data,&buffer[0],length); printf("Data read from external SRAM:%s\n",test_data); } ``` 以上就是整个流程的大致介绍,具体细节可能会因版本差异和个人需求而有所不同,请参照最新版的手册说明做适当调整。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值