STM32驱动TFT LCD(ST7735S)完整集成指南

单片机:STM32F4x HAL库软硬SPI驱动ST7735s 1.8寸LCD屏幕 基于STM32F4x平台HAL库的软硬SPi驱动1.8寸st7735sTFT-LCD屏幕 阅读详情

1. TFT LCD屏幕在STM32工程中的系统化集成

在嵌入式智能家居终端开发中,本地人机交互界面是不可或缺的一环。当主控MCU完成传感器数据采集、网络通信与逻辑控制后,如何将关键状态信息以直观、可靠的方式呈现给用户,直接决定了产品的可用性与专业度。本节聚焦于在基于STM32F103C8T6(“蓝 pill”)的硬件平台上,集成一款1.8英寸SPI接口TFT LCD屏幕(128×160分辨率,ST7735S驱动芯片)的完整工程实践。整个过程涵盖硬件连接定义、CubeMX引脚配置、驱动层移植、初始化流程设计及基础图形绘制,所有操作均严格遵循STM32 HAL库标准开发范式,确保代码可维护性与跨项目复用性。

1.1 硬件接口定义与物理连接规范

该TFT屏幕采用8位并行数据总线(实际仅使用部分信号线)配合专用控制信号,构成典型的MCU直驱架构。其核心控制引脚定义如下,此定义是后续所有软件配置的物理依据:

屏幕丝印标识 功能说明 信号方向 STM32F103C8T6 GPIO 引脚 备注
BL 背光控制 输出 PA13 高电平点亮背光
CS 片选信号 输出 PA12 低电平有效
DC 数据/命令选择 输出 PA11 高电平为数据,低电平为命令
RST 复位信号 输出 PA9 低电平复位
SDA 串行数据(MOSI) 输出 PA7 SPI1_MOSI 或模拟IO均可
SCL 串行时钟(SCLK) 输出 PA5 SPI1_SCK 或模拟IO均可
VCC 电源正极 — 3.3V 板载LDO输出
GND 电源地 — GND 共地

关键工程经验 :在实物接线前,务必使用万用表通断档确认排线两端引脚对应关系。常见错误是将 BL 与 VCC 混淆,或 CS 与 DC 接反,导致屏幕完全无响应。本项目采用8根杜邦线进行一对一硬连接,确保信号完整性。 VCC 与 GND 必须优先连接并确认电压稳定在3.3V±5%,否则驱动IC可能进入异常状态,无法通过软件复位恢复。

1.2 CubeMX引脚配置与时钟树规划

在STM32CubeMX中,引脚配置不仅是功能使能,更是对底层硬件资源的精确映射。本项目采用GPIO模拟SPI(Bit-Banging)方式驱动屏幕,原因在于:其一,ST7735S对时序要求相对宽松,无需高速SPI;其二,避免占用宝贵的硬件SPI外设资源(SPI1已被预留用于ESP8266通信);其三,模拟SPI赋予开发者对每一位信号的完全控制权,便于调试与故障定位。

1.2.1 GPIO端口配置细节

所有LCD相关引脚均配置为推挽输出模式(GPIO_MODE_OUTPUT_PP),输出速度设为 GPIO_SPEED_FREQ_HIGH (50MHz),以保证足够的边沿陡度。具体配置如下:

  • PA13 (BL):默认输出高电平( GPIO_NOPULL , GPIO_OUTPUT_SET ),确保上电即点亮背光。
  • PA12 (CS):默认输出高电平(片选无效),在每次传输前拉低,传输后拉高。
  • PA11 (DC):默认输出低电平(准备发送命令),在发送数据时动态置高。
  • PA9 (RST):默认输出高电平(复位释放),初始化时需执行一次低-高脉冲。
  • PA7 (SDA) 和 PA5 (SCL):作为纯数据线,无默认电平要求,由驱动函数实时控制。

原理阐释 :将 CS 和 DC 配置为推挽输出而非开漏,是因为ST7735S的输入级为标准CMOS结构,无需外部上拉。若错误配置为开漏,会导致信号电平不确定,表现为屏幕显示乱码或完全不工作。 GPIO_SPEED_FREQ_HIGH 的设定并非追求极限速度,而是为了在 HAL_GPIO_WritePin() 调用时,确保 BSRR 寄存器写入后,引脚电平能在数纳秒内完成切换,满足ST7735S最小建立/保持时间要求(典型值为10ns)。

1.2.2 时钟树与系统频率设定

系统主频设定为72MHz(HSE=8MHz, PLL=9),这是STM32F103系列的标称最高工作频率。APB2总线(连接GPIOA)同样运行在72MHz。此频率选择直接影响模拟SPI的时序精度:在72MHz下,单条 HAL_GPIO_WritePin() 指令执行耗时约12个周期(约167ns),足以构建符合ST7735S规格的时钟波形(SCL周期≥200ns)。若系统频率过低(如8MHz),则需插入大量 __NOP() 指令来延长延时,增加代码复杂度与不可预测性。

1.3 驱动代码移植与工程结构整合

驱动代码的集成是软件与硬件的首次实质性握手。本项目使用的驱动库为社区成熟的ST7735S HAL适配版本,其核心优势在于:完全基于HAL库API编写,不依赖任何特定IDE或编译器扩展;模块化设计, lcd.c 与 lcd.h 清晰分离接口与实现;提供丰富的绘图原语(点、线、矩形、圆、字符串)。

1.3.1 文件系统层级整合

将下载的 lcd 文件夹(内含 lcd.c , lcd.h , font.c , font.h 等)完整复制至工程目录下的 Core/Src/ 子目录。此路径选择至关重要,因为:
- Core/Src/ 是CubeMX生成的HAL底层驱动源码存放区,将LCD驱动置于同一层级,便于统一管理编译依赖。
- Core/Inc/ 是头文件包含路径, lcd.h 自然落入其中,供其他模块引用。

1.3.2 编译器包含路径(Include Path)配置

在IDE(如Keil MDK或STM32CubeIDE)中,必须将 Core/Src/lcd 目录显式添加到编译器的包含路径列表中。操作路径通常为: Project Properties → C/C++ Build → Settings → Tool Settings → MCU GCC Compiler → Includes 。添加路径 "${workspace_loc:/${ProjName}/Core/Src/lcd}" 。

关键验证点 :配置完成后,在任意 .c 文件中尝试 #include "lcd.h" ,若IDE未报错且能跳转至头文件定义,则路径配置成功。若出现 fatal error: lcd.h: No such file or directory ,则表明路径未生效,需检查路径拼写、斜杠方向(Windows下应为正斜杠 / )及变量 ${ProjName} 是否正确解析。

1.3.3 头文件依赖注入

在主应用文件 main.c 的全局头文件包含区(位于 /* USER CODE BEGIN Includes */ 与 /* USER CODE END Includes */ 之间),添加以下三行:

#include "lcd.h"
#include "font.h"
#include "lcd_font.h"

其中 lcd.h 声明了所有LCD操作函数原型; font.h 定义了字体数据结构; lcd_font.h 是驱动库内部使用的字体索引头文件。此步骤建立了 main.c 与LCD驱动的功能契约,是后续函数调用的前提。

1.4 屏幕初始化与基础显示功能实现

初始化流程是LCD驱动的生命线,其顺序与参数设置直接决定屏幕能否被正确识别与控制。ST7735S的初始化序列是一个精密的时序协议,必须严格遵循数据手册规定的寄存器写入顺序、值及延时。

1.4.1 初始化函数调用时机

CubeMX生成的 main.c 中, MX_GPIO_Init() 函数负责所有GPIO的初始配置。LCD的初始化必须在此之后、 while(1) 主循环之前执行,以确保所有控制引脚已处于预设的逻辑电平状态。因此,初始化代码应放置在 /* USER CODE BEGIN 2 */ 区域:

/* USER CODE BEGIN 2 */
LCD_Init(); // 执行ST7735S初始化序列
LCD_Fill(0, 0, 127, 159, BLACK); // 填充全屏为黑色背景
/* USER CODE END 2 */

LCD_Init() 函数内部执行以下关键步骤:
1. 硬件复位 :将 RST 引脚拉低至少10ms,再拉高,强制驱动IC进入已知初始状态。
2. 发送初始化命令序列 :依次向ST7735S写入一系列配置寄存器(如 SWRESET , SLPOUT , COLMOD , MADCTL , DISPON 等),每条命令后插入精确延时( HAL_Delay() 或 HAL_GPIO_WritePin() 循环)。
3. 设置显示方向与颜色格式 :通过 MADCTL 寄存器配置屏幕为纵向显示(128x160),并设定颜色格式为16位RGB565。

1.4.2 全屏填充与色彩管理

LCD_Fill(x1, y1, x2, y2, color) 函数是图形绘制的基础。其参数含义为:从坐标 (x1, y1) (左上角)到 (x2, y2) (右下角)的矩形区域,填充指定颜色 color 。对于128×160屏幕,有效坐标范围为 x: 0-127 , y: 0-159 。

颜色值采用16位RGB565格式编码,即高5位为红色(R),中间6位为绿色(G),低5位为蓝色(B)。驱动库在 lcd.h 中预定义了常用色:

#define WHITE          0xFFFF
#define BLACK          0x0000
#define BLUE           0x001F
#define RED            0xF800
#define MAGENTA        0xF81F
#define GREEN          0x07E0
#define CYAN           0x07FF
#define YELLOW         0xFFE0

例如, GREEN 的值 0x07E0 可分解为: R=0b00000=0 , G=0b001111110=126 , B=0b00000=0 ,呈现出纯正的绿色。在初始化后调用 LCD_Fill(0, 0, 127, 159, BLACK) ,可立即验证屏幕是否已成功唤醒并进入显示模式——此时屏幕应呈现均匀的纯黑色。

现象分析与排错 :若屏幕无任何反应,首先检查 BL (背光)引脚电压是否为3.3V;若背光亮但无图像,检查 RST 引脚在上电瞬间是否有明显的低电平脉冲(可用示波器或逻辑分析仪捕获);若出现花屏或偏色,大概率是 MADCTL 寄存器配置错误或 COLMOD (颜色模式)设置不匹配。

1.5 文本显示与字体渲染机制

在确认屏幕基础显示功能正常后,下一步是实现人机交互的核心——文本信息展示。 LCD_ShowString() 函数封装了复杂的字符逐点绘制逻辑,其本质是将ASCII字符映射为位图,并在指定坐标处逐像素绘制。

1.5.1 函数原型与参数详解

LCD_ShowString(uint16_t x, uint16_t y, const char *p, uint16_t fc, uint16_t bc, uint8_t size, uint8_t mode) 函数各参数含义如下:

  • x, y : 字符串起始显示坐标的左上角顶点。
  • p : 指向以 \0 结尾的C风格字符串的指针。
  • fc (Foreground Color): 字符前景色(笔画颜色)。
  • bc (Background Color): 字符背景色(填充色)。
  • size : 字体大小,本驱动支持 12 , 16 , 24 三种字号,对应不同的字模数组。
  • mode : 显示模式, 0 为叠加模式(Transparent), 1 为非叠加模式(Opaque)。
1.5.2 叠加模式(Transparent)与非叠加模式(Opaque)的本质区别

这是初学者最容易混淆的概念,其实质在于绘图时对背景像素的处理策略:

  • 叠加模式 ( mode = 0 ) :在绘制每个字符像素时,仅当该像素在字模中为 1 (即需要显示)时,才将 fc 颜色写入LCD帧缓冲区;若字模中为 0 (即空白区域),则 不执行任何写入操作 ,保留LCD当前该位置的原有像素值。效果是文字仿佛“悬浮”在背景之上,背景内容(如之前填充的黑色或其它图形)透过文字空白处可见。

  • 非叠加模式 ( mode = 1 ) :在绘制每个字符像素时,无论字模中是 1 还是 0 ,都执行写入操作。 1 对应 fc , 0 对应 bc 。效果是文字被一个与 bc 颜色相同的矩形框完全包围,彻底覆盖原有背景。

1.5.3 实际应用示例与效果验证

在 main.c 的 /* USER CODE BEGIN 2 */ 区域,紧随 LCD_Fill() 之后,添加以下代码:

LCD_ShowString(5, 5, "Hello", GREEN, WHITE, 24, 1); // 非叠加模式
// 或者
// LCD_ShowString(5, 5, "Hello", GREEN, BLACK, 24, 0); // 叠加模式

编译、下载并按下板载 RESET 按键后,观察屏幕:
- 若使用非叠加模式( mode=1 ),屏幕上将出现一个绿色“Hello”字样,其周围被一个白色矩形框包围。
- 若使用叠加模式( mode=0 ),屏幕上将出现一个绿色“Hello”字样,其背景为之前填充的纯黑色,文字边缘锐利,无任何白色边框。

工程实践建议 :在智能家居终端中,叠加模式更常用。例如,当需要在动态变化的传感器读数背景(如温度曲线图)上叠加静态标签(如“Temp:”)时,叠加模式可避免反复重绘整个背景,显著提升刷新效率。非叠加模式适用于需要强对比度、确保文字绝对清晰的场景,如报警信息提示。

1.6 常见问题深度剖析与实战排错指南

在LCD集成过程中,90%以上的故障源于配置与连接的细微偏差。以下是基于真实项目经验总结的高频问题及其系统性解决方案。

1.6.1 屏幕全黑无背光

现象 :屏幕完全无光,触摸无反应(若带触控)。
排查路径 :
1. 电源验证 :用万用表直流电压档测量 VCC 与 GND 间电压,确认为3.3V。若为0V,检查 3.3V 电源输出是否正常,杜邦线是否虚接。
2. 背光验证 :测量 BL 引脚对 GND 电压。若为0V,检查 PA13 在CubeMX中是否配置为 Output 且 Default Value 设为 High ;若为3.3V但无光,检查屏幕背光LED是否损坏(可短接 BL 与 VCC 强制点亮测试)。
3. 复位验证 :用示波器观察 RST 引脚。上电后应有至少10ms的低电平脉冲。若无,检查 LCD_Init() 是否被正确调用,或 HAL_GPIO_WritePin() 函数是否因未初始化而失效。

1.6.2 屏幕有背光但显示乱码或花屏

现象 :背光亮,但显示内容为随机彩色噪点、错位色块或固定图案。
根源分析 :此为典型的通信时序或命令序列错误。
解决方案 :
- 检查 CS 与 DC 逻辑 :用逻辑分析仪抓取 CS 与 DC 信号。 CS 应在每次命令/数据传输前拉低,传输完毕后拉高; DC 在发送命令时为低,发送数据时为高。若 DC 始终为低,则屏幕只接收命令,无法显示内容。
- 验证初始化序列 :打开 lcd.c ,找到 LCD_Init() 函数。对照ST7735S官方数据手册,逐条核对发送的寄存器地址(如 0x11 为 SLPOUT )与参数值。一个常见的错误是将 0x36 ( MADCTL )的参数误设为 0xC0 (镜像),而正确值应为 0xC8 (纵向+RGB)。
- 降低时钟频率 :若怀疑时序过快,可在 lcd.c 的 LCD_WR_DATA8() 或 LCD_WR_REG() 函数中,增加 HAL_Delay(1) 或 for(volatile int i=0; i<100; i++); 延时,观察是否改善。

1.6.3 文字显示位置偏移或截断

现象 :“Hello”只显示“Hel”或文字整体向右/向下偏移。
根本原因 :坐标计算错误或字体宽度定义不匹配。
修正方法 :
- 确认坐标系原点 :ST7735S的 (0,0) 是屏幕左上角。 LCD_ShowString(5,5,...) 表示第一个字符的左上角位于距左边界5像素、距上边界5像素处。
- 检查字体宽度 :查看 font.c 中 const unsigned char asc2_2408[95][24] 数组。该数组定义了24号字体,每个字符占用24字节(3行×8列)。若误用16号字体的数组去解析24号字符串,必然导致偏移。
- 计算字符串宽度 : LCD_ShowString() 内部会累加每个字符的宽度。若自定义了非常规字体,需确保 font.h 中 FONT_WIDTH 宏定义与实际字模数据一致。

1.7 性能优化与进阶功能拓展路径

完成基础显示后,可依据项目需求进行性能调优与功能增强,这体现了嵌入式工程师对系统资源的深刻理解。

1.7.1 刷新率优化:双缓冲机制引入

当前方案采用直接绘制到LCD帧缓冲区(Frame Buffer),在绘制复杂图形(如进度条、图表)时,可能出现闪烁。解决方案是引入双缓冲(Double Buffering):
1. 在RAM中开辟一块与屏幕分辨率等大的内存区域(128×160×2 bytes = 40KB),作为离屏缓冲区(Off-screen Buffer)。
2. 所有绘图操作( LCD_DrawPoint , LCD_Fill , LCD_ShowString )均在此缓冲区内进行。
3. 当一帧画面绘制完成,调用 LCD_DisplayBuffer() 函数,将整个缓冲区数据通过DMA或高速SPI一次性刷入LCD。

此举将闪烁降至最低,并为实现动画效果(如淡入淡出、滑动菜单)奠定基础。STM32F103的64KB SRAM足以容纳此缓冲区。

1.7.2 触控功能集成:XPT2046驱动移植

若所选TFT模块集成了四线电阻式触摸屏(XPT2046控制器),可利用STM32的ADC与SPI外设进行扩展。XPT2046通过SPI接收通道选择命令,并返回12位ADC采样值。集成步骤包括:
- 在CubeMX中配置SPI1(用于与XPT2046通信)和ADC1(用于读取XPT2046的 BUSY 引脚,或作为备用)。
- 移植XPT2046驱动,实现 XPT2046_Read_XY() 函数,返回 (x, y) 坐标。
- 在主循环中,周期性调用该函数,并结合 LCD_GetPoint() (获取指定坐标像素值)实现点击反馈。

1.7.3 图形用户界面(GUI)框架选型

对于更复杂的交互需求,可评估轻量级GUI库:
- LVGL :开源、活跃、文档完善,支持多种渲染后端(包括直接Framebuffer和SPI),但对RAM(~32KB)和Flash(~100KB)有较高要求。
- emWin :SEGGER商业库,性能卓越,但需授权许可。
- 自研精简GUI :针对本项目,可定义一套状态机驱动的UI组件(Button, Label, Slider),其核心是 UI_Update() 函数,它根据当前状态( enum UI_State )调用相应的 LCD_* 绘制函数。

我曾在某款环境监测仪项目中,为节省资源,摒弃了GUI库,仅用200行C代码实现了带图标、多级菜单、数据滚动的UI。其核心思想是:将UI视为一组状态变量( current_menu , highlighted_item , scroll_offset ), UI_Update() 函数则是一个巨大的 switch-case ,根据状态组合,精确计算并绘制每一处像素。这种“裸写”方式虽开发初期耗时,但最终固件体积仅增加了3KB,且运行如丝般顺滑。

至此,TFT LCD屏幕已在STM32工程中完成从物理连接、软件配置到功能验证的全链路集成。它不再是一个孤立的外设,而是成为整个智能家居终端系统感知层与用户层之间最直观、最可靠的桥梁。后续章节将探讨如何让这块屏幕与ESP8266协同工作,将云端下发的指令(如“打开客厅灯”)实时转化为屏幕上的动态反馈(如“客厅灯:ON”),从而真正构建起一个闭环的、可交互的智能终端。

ESP32实验03:0.96tft液晶显示屏驱动 基于ST7735s的0.96寸tft屏幕显示 效果展示 实现了时钟显示,基于ds1307模块,时钟字体采用的模拟数码管字体 实现了图标显示,后续用于天气以及状态指示 暂未添加网络校时,以及网络获取天气数据等功能 界面显示没有采用第三方库(暂未找到合适的),采用原始的一个一个图标画点显示 整个实验断断续续耗时接近快2周时间,主要消耗的精力的有几个方面 熟悉和了解ST7735原理接口,及操控方法。难点在于理解其初始化代码和显示原理。 屏幕点亮画点调试,这一部分难点在于找到屏幕的(0,0)坐标,以及 阅读详情

相关推荐

TFT-LCD驱动开发:RGB565显示与ST7735S硬件接口实战

TFT-LCD是一种基于电压调制液晶透光率的非自发光显示技术,其核心原理是通过TFT阵列精确控制每个RGB子像素的灰度,依赖偏振片、彩色滤光片和背光源协同工作。在嵌入式系统中,RGB565色彩格式因其16位紧凑编码与人眼视觉特性(绿色分量优先分配6位)成为带宽与画质的工程平衡点。配合ST7735S等SPI接口驱动芯片,可实现高刷新率图形渲染,广泛应用于STM32等MCU平台的HMI、工业面板与便携设备。本文聚焦于硬件接口时序约束、底层SPI优化、GRAM窗口模型及BMP/中文显示等关键实践环节。

melon的博客 865

ST7735S应用笔记

ST7735S是一块1.8英寸采用SPI通信的TFT全彩屏,分辨率是128*160,这里采用RGB565 16bit的色块编译模式。本文仅设计该屏幕的简单应用,不对底层原理进行深究。

记录学习 2万+

STM32驱动0.96寸TFT屏颜色异常?手把手教你解决ST7735S颜色反演问题

本文详细解析了STM32驱动0.96寸TFT屏时遇到的ST7735S颜色反演问题,提供了三种解决方案:禁用反演功能、软件层颜色取反和重新发送初始化序列。文章还包含硬件连接确认、进阶调试技巧和性能优化建议,帮助开发者快速解决颜色异常问题。

docker7nomad的博客 977

STM32F4X TFTLCD ST7735S使用

TFT-LCD 即薄膜晶体管液晶显示器。其英文全称为:Thin Film Transistor-Liquid Crystal Display。TFT-LCD与无源 TN-LCD、STN-LCD 的简单矩阵不同,它在液晶显示屏的每一个像素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。TFT-LCD 也被叫做真彩液晶显示器。

hwx1546的博客 6325

STM32软件SPI驱动ST7735S TFT-LCD屏幕实战详解

SPI是一种广泛应用于嵌入式系统的同步串行通信协议,常用于连接传感器、存储器和显示模块。硬件SPI虽然传输效率高,但引脚在MCU上通常是固定的,在实际项目引脚冲突或资源受限时不够灵活。软件SPI通过GPIO模拟时钟和数据时序,仅需任意四个空闲引脚即可实现通信,为嵌入式开发提供了高自由度的替代方案。在STM32平台上,软件SPI常被用于驱动小尺寸TFT-LCD屏幕,例如常见的1.8寸ST7735S模块。从GPIO配置、字节发送到时序控制,再到初始化序列和显示缓冲,掌握这一系列原理与技巧,不仅能解决屏幕点亮的工

weixin_28278377的博客 269

stm32f103c8t6软件spi驱动st7735s屏幕

stm32f103c8t6软件spi驱动st7735s屏幕

STM32驱动0.96寸TFT 彩色LCD模块显示

小型的彩色LCD模块如一款0.96寸模块,由ST7735S驱动芯片和LCD屏幕组成。STM32通过驱动ST7735S,从而实现对彩色LCD的驱动。这里将STM32通过硬件SPI驱动0.96寸TFT彩色LCD的参考代码,移植到STM32CUBEIDE开发环境。以STM32G030F6P6为例,可以用于采用ST7735S驱动芯片的其它尺寸LCD屏幕驱动。LCD的模块特性如下: 模块的管脚介绍如下: STM32连接时,采用PA4管脚连接到模块的CS管脚, 采用PA6管脚连接到模块的DC管脚,采用PA12管脚连

Pegasus的软件博客 1万+

linux操作系统使用以太网连接ubuntu,设置固定ipv4

首先,您需要确定要配置的网络接口。可以使用ifconfig -a或ip addr命令来列出当前系统上的所有网络接口及其相关信息。找到您要配置的网络接口名称,例如eth0、ens33或enp0s3;保存并关闭文件后,您需要重启网络服务以使更改生效。在linux操作系统中,要使用交换机连接以太网可以直接使用交互界面;如果你的操作系统没有交互界面,你可以使用命令方式配置;点击ipv4,方式为手动,可以设置ip和子网了;开头,后接网络接口名称。第三步:点击有线最右边圆形控件;第二步:点击有线设置;

2301_79311842的博客 2406

STM32系列(HAL库)——F103C8T6点亮1.44寸TFT-LCD彩屏

1.软件准备 (1)编程平台:Keil5 (2)CubeMX (3)中景园屏幕资料链接:点击跳转 提取码:8888 2.硬件准备 (1)1.44寸TFT彩屏 (2)F1的板子,本例使用经典F103C8T6 (3)ST-link下载器 (4)杜邦线若干 3.模块资料 (1)模块简介: 1.44寸彩色液晶显示模块,128x128分辨率,内置ST7735S控制器,可选配触摸屏,高画质,宽视角,支持8080 8-bit 并行接口与3线、4线串......

嵌入式创客工坊的博客 2万+

3分钟接入满血版DeepSeek-R1:字节火山引擎手把手教程!免费50万tokens!

3分钟接入满血版DeepSeek-R1:字节火山引擎手把手教程!免费50万tokens!

hunteritself的博客 2万+

大学生智能车竞赛初次尝试经验分享--1(硬件绘制电路,pcb部分)

本人机械电子专业大二暑假参加全国大学生智能车竞赛,之前参加过一些其他类型的比赛有一点基础,由于之前疫情影响所以做智能车比赛断代了,没有学长带也没有思路,从一开始的一头雾水逐渐摸索出我感觉比较实用的经验。 一.首先是硬件的准备工作: 1.硬件部分与要自己设计需要的电路制成pcb。推荐使用Altium Designer20,AD比较常用所以有多实用的教学视频,另外需要自己了解布线规则,包括信号线,电源线常用的宽度 一些电源电路,驱动电路建议用multisim仿真,没有问题再进行制版 单片机有关的需要仿真

weixin_52679034的博客 9838

STM32F1+CubeMX——利用ST7735S芯片+SPI通信协议驱动1.44寸TFT LCD

STM32F103C8T6驱动TFT-LCD屏

weixin_43851154的博客 3763

NPU、CPU和GPU

NPU、CPU和GPU是三种不同类型的处理器,它们各自有不同的设计特点和应用场景。NPU(Neural Processing Unit,神经网络处理单元)是一种专门为加速神经网络计算而设计的处理器。

m0_60697583的博客 1758

1.8寸TFT LCD128X160 ST7735S SPI串口屏驱动示例

1.8寸TFT LCD128X160 ST7735S SPI串口屏驱动示例

perseverance51博客 1万+

24届数字IC验证——SV+UVM基础知识汇总(一)

汇总整理在面试过程中常见的问题,如果都能回答下来,那么面试肯定不成问题的分别构建不同抽象级的transaction,来实现复杂的激励。(以前是单一层次的sequence,对激励复用、上层复用不塌友好)不同层级之间的sequence没有继承关系,相互之间进行转换低层次的sequence从高层次的sequencer中获取高层次的sequence,并将其转换为低层次的sequence,再通过低层次的sequencer发送出去如何连接:低层次的sequencer包含高层次sequencer的句柄。

qq_42135020的博客 3153

【ARM Trace32(劳特巴赫) 使用介绍 13 -- Trace32 Var 变量篇】

例如我们已经知道一个符号(可能是变量或者函数)的地址,怎么确定这个地址是一个变量还是一个函数呢?如果是变量的话,变量名是啥?变量定义的位置在哪?如果是函数,函数名是啥?函数定义的位置又在哪呢?查看结构体变量 str_t32 的值。例如我们已经知道了一个符号的地址为。在map文件中的地址为。

CodingCos的博客 2350

【GD32】06 - SPI (含ST7735S TFT-LCD屏幕驱动)

接下来我们要开启引脚复用,SPI一共是四个引脚,MISO,MOSI,SS,SCK,其中SS一般来说我们不让他硬件控制,通常我们会另外软件控制,因为硬件SPI的SS是固定死的,这样可能会和我们其他要用的引脚冲突,而且使用硬件SPI就是为了速度更快,而SS软件另外控制并不会影响多少速度,因此我们就算使用硬件SPI,也会让SS引脚使用软件控制。有了SPI,我们就可以直接封装ST7735S的驱动了,具体ST7735S的指令什么的我就不在这边啰嗦了,之前的文章有小小地介绍一下,文章链接在本文的开头。

m0_63235356的博客 4025

揭秘CAS:深入理解与应用解析

在并发编程中,Compare-And-Swap(CAS)机制作为一种无锁算法,凭借其高效性和避免线程阻塞的优势,受到广泛关注。CAS不仅在底层实现上有着重要地位,还在实际开发中发挥着关键作用。本文将从CAS的工作原理、在Java中的实现及其增强机制来回顾和加深理解一下CAS。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 85万+

STM32F1基于STM32CubeMX配置硬件SPI驱动1.8寸TFT LCD128X160 ST7735S屏幕

STM32F1基于STM32CubeMX配置硬件SPI驱动1.8寸TFT LCD128X160 ST7735S屏幕

perseverance51博客 4028

别再写XPath改DOM了!用OpenClaw零代码搞定爬虫全流程(抓取+清洗+存储)

免费版的大模型调用次数有限制(每天100次),但企业版是无限的,还能私有化部署;大模型分析DOM结构有时候会慢1-2秒,但比起节省的时间,完全可以接受;自定义Skill的文档还不够完善,但社区很活跃,有问题在Discord里问,很快就能得到回复。但总的来说,OpenClaw真的改变了我写爬虫的方式——以前我是“代码的奴隶”,现在我是“需求的提出者”,把时间花在更有价值的业务逻辑上,而不是重复繁琐的DOM调试上。如果你也在被传统爬虫折磨,强烈建议你试试OpenClaw,相信我,用了就回不去了。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1314

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

基于STM32的TFT LCD显示(ST7735S)

GND电源地VCC接5V或3.3v电源SCL接PA12(SCL)SDA接PA15(SDA)RES接PB3DC接PB4CS接PB5BL接PB10。

1501

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【STM32CubeIDE】STM32F103硬件SPI驱动1.8寸TFT LCD128X160 ST7735S屏幕

【STM32CubeIDE】STM32F103硬件SPI驱动1.8寸TFT LCD128X160 ST7735S屏幕

perseverance51博客 5029

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

TFT1.44寸屏ST7735S屏幕使用-stm32f103c8t6

TFT1.44寸屏ST7735S屏幕使用-stm32f103c8t6 K :背景灯 RESET:tft复位 RS:控制线(数据或者命令) SDA:数据线(SPI时作为MOSI) SCK:时钟线 IOVCC:数据有线脚,写数据或者是命令时应该拉低 1.LCD初始化 /初始化lcd void LCD_Init(void) { SPIGPIO_Init(); SPILCD_RST_RESET ; //LCD_RST=0 //SPI接口复位 HAL_Delay(20); // delay 2

qq_39061579的博客 1万+

【亲测免费】 探索STM32F103与ST7735s:打造高效TFT彩屏驱动解决方案

探索STM32F103与ST7735s:打造高效TFT彩屏驱动解决方案 【下载地址】STM32F103驱动128128TFT彩屏ST7735sHAL库开发示例 本项目提供了一个基于STM32F103微控制器的驱动程序,用于驱动128*128分辨率的TFT彩色显示屏,LCD驱动芯片为ST7735s。程序采用了STM32Cu...

gitblog_09796的博客 1039

TFT-LCD驱动原理与STM32 GPIO模拟SPI实战

TFT-LCD是一种基于薄膜晶体管控制液晶光阀的主流显示技术,其核心在于电压驱动液晶分子扭转以调节透光率,依赖背光源实现成像。理解其硬件接口(如SPI)、显存映射(GRAM)与颜色格式(RGB565)是嵌入式图形开发的基础。ST7735S作为典型TFT控制器,集成了时序生成、显存管理和通信接口,需通过精确的寄存器配置(如MADCTL、COLMOD)完成初始化。在资源受限的MCU(如STM32F103)上,GPIO模拟SPI虽牺牲部分速度,却提供了无可替代的时序可控性与引脚灵活性,是掌握底层显示驱动的关键路径

melon的博客 790

STM32F103驱动128*128 TFT彩屏(ST7735s)示例代码

STM32F103驱动128*128 TFT彩屏(ST7735s)示例代码 【下载地址】STM32F103驱动128128TFT彩屏ST7735s示例代码 本仓库提供了一个基于STM32F103微控制器的示例代码,用于驱动128*128分辨率的TFT彩屏,LCD驱动芯片为ST7735s。程序采用STM32标准库进行开发,...

gitblog_09797的博客 816
上一篇: ESP32 GPIO与ESP-IDF工程实践:从LED到蓝牙HID开发基础
下一篇: 字幕生成技术原理与工程实践
普通网友
博客等级 码龄4年 95粉丝 1459原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值