基于STM32F411使用SPI+DMA驱动LCD

本文介绍了如何使用标准库,结合SPI和DMA驱动LCD,具体步骤包括创建STM32F411CE工程,配置SPI、DMA和时钟参数,以及解决发送后标志位忙碌的问题。最后提供了项目获取方式。

在这里插入图片描述▬▬▬▬▬▶SPI+DMA驱动LCD◀▬▬▬▬▬


⚔️前言

其实HAL库我用不太习惯,一直也是用的标准库

但HAL库确实是好上手一些,可以快速的创建一个工程

这次就当尝试一下吧,因为用的比较少,我会记录的详细一些


⚔️先看效果

F411CE 硬件SPI+DMA驱动LCD


⚔️如图点击,创建新工程

在这里插入图片描述


⚔️搜索型号,双击选择

在这里插入图片描述


⚔️左边这些都能点开,有兴趣可以点开康康

在这里插入图片描述


Systemcore Core 如图选择

选择的是外部高速时钟,陶瓷晶振

这里设置是为了等下配置系统时钟
在这里插入图片描述


⚔️SYS 打开SWD接口,不配置的话芯片的SWD口会锁住

如果你恰好没配置,点击查看解决办法

在这里插入图片描述


⚔️Connectivity SPI设置主机全双工(你也可以选别的)

在这里插入图片描述


⚔️SPI基础配置

Frame Format 这个默认摩托罗拉

Data Size 数据位

First Bit 选择先发高位或者低位,MSB为高位

Prescaler 系统分频,这个影响到SPI速度,后面还会提一次

CPOL 时钟空闲是高电平或低电平

CPHA 奇数偶数采样选择,这两个是SPI的基础知识

CRC校验这里不开启

使能使用的软件控制,我其实是直接拉的GND

在这里插入图片描述


⚔️ DMA配置 点击ADD添加

Stram流,其实就是通道,具体的流通道请看通道映射

Direction 方向选择,无非就内存到外设,外设到内存

Priority 优先级 随便选了没什么影响

increment address 地址递增 因为我要往外设发数组里面的值,所以我本身(Memory)要设置为递增

Datawidth 数据宽度,8位 16位 32位 这里主从宽度要相同

mode模式,可设置为正常或循环,正常就是只发一次

在这里插入图片描述


⚔️ 时钟设置,直接拉到100M

在这里插入图片描述


⚔️ 拉完到100M,再回过头来看这个SPI速度就到了主频的一半

在这里插入图片描述


⚔️生成代码

Project Name 工程名字

Project location 路径

IDE选择MDK-ARM 也就是keil

在这里插入图片描述


生成独立的ch文件方便查看
在这里插入图片描述
全部配置完成点击GENERATE CODE生成工程即可


⚔️打开LCD模板

在这里插入图片描述


这里有个坑,我用DMA发送,发送一次后标志位一直是busy

在网上找了好久 后来调用1ms延时+HAL_SPI_Abort(&hspi1)

函数解决

在这里插入图片描述


⚔️项目获取

在这里插入图片描述▬▬▬▬▬▶点击获取工程代码◀▬▬▬▬▬

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日落悬崖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值