当前位置:首页 > 工业控制 > 电子电路设计合集
[导读]该项目是一个基于 RT-Spark STM32 开发板的实时、裸机硬件接口。它充当了一个交互式的控制面板,将物理世界与数字世界连接起来。通过读取来自一个 5 个方向操纵杆的输入,该系统会立即触发数字逻辑来控制外部独立的 LED,并在高速 16 位 TFT 液晶显示屏上呈现动态文本。

该项目是一个基于 RT-Spark STM32 开发板的实时、裸机硬件接口。它充当了一个交互式的控制面板,将物理世界与数字世界连接起来。通过读取来自一个 5 个方向操纵杆的输入,该系统会立即触发数字逻辑来控制外部独立的 LED,并在高速 16 位 TFT 液晶显示屏上呈现动态文本。

你为什么决定去做这件事呢?

我想要摒弃现代操作系统所提供的保护机制,深入探究硬件在硅层层面的真实运作方式。我决定不依赖像 Linux 或实时操作系统(RTOS)这样的东西,而是使用 STM32 的硬件抽象层(HAL)编写“裸机”C 代码。

我想要迎接这样的挑战:

•研究如何通过物理引脚映射来传输电信号。

•对第三方驱动软件(RT-Thread)进行解码和修改,使其能够在裸机环境中运行。

•理解像灵活静态内存控制器(FSMC)这样的复杂内存总线,以便将图形数据传输至屏幕。

这是一次纯粹的嵌入式系统工程实践——修复浮动复位引脚、调整内存地址,并让硬件严格按照我编写的程序指令运行。

它是如何运作的?

该系统以持续的高速循环模式运行,由 168/180 MHz 的系统时钟驱动,执行三个主要阶段:

硬件初始化:在启动时,C 代码会手动切换特定的 GPIO 引脚。它将液晶显示屏背光引脚(PF9)拉高以提供电源,并向硬件复位引脚(PD3)发送精确的电气时序信号,以使屏幕从默认的睡眠状态中唤醒。

输入监听:微控制器会快速读取与五向操纵杆相连的 GPIO 引脚的电压状态。它会主动检测低电平信号(这意味着按钮已被按下且电路已接地)。该软件甚至还会考虑到物理硬件的特殊性,通过电子方式将左右输入引脚(GPIO_PIN_5 和 GPIO_PIN_2)进行交换,以匹配用户的实际操作方向。

动态输出:一旦检测到输入信号,逻辑就会将该信号导向两个方向。首先,它会将指定的 LED 引脚拉低,从而点亮彩色灯光。其次,它会利用映射到内存地址 0x68000000 的 FSMC 来快速覆盖液晶显示屏上的像素,从而在漆黑的背景上显示清晰的白色确认信息(例如,“左侧按钮已被按下”)。

实际的最终结果:

摄像机从一片空白的黑色屏幕开始,屏幕上显示着“Hello World”的启动文字。一只手进入画面并按下操纵杆的向上按钮,点亮了红色指示灯。接着操纵杆被向左和向右按压;每次按压后,屏幕上会立即以白色字体显示特定的文字“左侧按钮已被按下”和“右侧按钮已被按下”,按压结束后这些文字会立即消失。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭