news 2026/5/28 7:15:56

5.8W25Q64 实验(下)-嵌入式铁头山羊STM32笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5.8W25Q64 实验(下)-嵌入式铁头山羊STM32笔记

实验任务

按钮切换 LED 亮灭,用 W25Q64(上图右下角)保存 LED 的最后一次亮灭状态(亮为 1,暗写 0)。

在断电操作下,重新上电后可以保持 LED 在断电前的亮灭状态(工业中可用作关键参数的保存,在断电后重新加载读取参数,也可以保存 IAP 升级 bin 数据)

目录

1.初始化板载LED

https://www.bilibili.com/video/BV11X4y1j7si?t=157.1&p=32

LED 配置:开漏输出(OD open_drain),接 PC13

上图为初始化板载 LED 具体代码。定义函数声明和函数、开时钟、配引脚和配置、init,放进 main 结束

初始化函数:App_OnBoard_LED_Init

2.初始化按钮

https://www.bilibili.com/video/BV11X4y1j7si?t=281.4&p=32

上图为实验电路图。可以看到按钮的一端接地,一端接 PA0.

上图为按钮初始化具体代码。

按钮结构体成员作用:

成员名

核心功能

button_clicked_cb

按钮点击事件的回调函数(点击后执行)

button_long_pressed_cb

按钮长按事件的回调函数(长按后执行)

button_pressed_cb

按钮按下事件的回调函数(按下瞬间执行)

button_released_cb

按钮松开事件的回调函数(松开瞬间执行)

ClickInterval

点击时间间隔(防误触的时间阈值)

GPIOx

按钮对应的 GPIO 端口(如 GPIOA、GPIOB)

GPIO_Pin

按钮对应的 GPIO 引脚号(如 Pin5、Pin8)

LongPressTickInterval

长按检测时间间隔(轮询长按状态的周期)

LongPressTime

触发长按的最小时长(达到该时长算长按)

上图为按钮初始化具体操作:

函数声明,

函数初始化(开引脚时钟,结构体配置,init),

函数调用,while 执行 My_Button_Proc(&button);

3.使用按钮切换LED的亮灭

https://www.bilibili.com/video/BV11X4y1j7si?t=515.8&p=32

按键按下回调函数声明自定义:button_clicked_cb

按键按下回调函数具体执行

在按钮初始化中加入自定义的回调函数。

这样的话,如果按键按下,就会触发这个回调函数,然后执行 LED 亮灭的切换

4.保存LED的当前状态

https://www.bilibili.com/video/BV11X4y1j7si?t=694.4&p=32

在回调函数中加入 LED 状态变化后保存进入 W25Q64

上图为具体操作

5.恢复LED的状态

https://www.bilibili.com/video/BV11X4y1j7si?t=806.9&p=32

思路:断电复位后,MCU 程序会重新执行。只需要在初始化时读取存储的值即可。

上图为代码具体实现

总结

主要实现了按键控制 LED 翻转,然后 LED 状态存进 W25Q64。整个实验相对简单,主要理解 FLASH 存储器存储数据的思路,在后面对于工业参数的存取、恢复出厂设置、IAP 升级都有一定应用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/27 11:54:14

解决phpstudy_pro 无法启动 MySQL 以及3306被占用的问题

问题说明 首先我们在启动mysql服务的时候,服务无法启动,而且一直重试。 一、是否真的是端口占用 启动 phpstudy_pro,点击 MySQL 的「启动」按钮,若弹出错误提示: MySQL 启动失败:端口 3306 被占用 或 Po…

作者头像 李华
网站建设 2026/5/26 4:39:22

【synchronized 与 ReentrantLock + Condition 的深度对比 Plus版】

Java并发编程:synchronized 与 ReentrantLock Condition 的深度对比——从Monitor队列到惊群效应与精确唤醒前言正文一、每个Java对象天生都能当锁?Monitor的底层结构形象比喻:锁对象就像一个会议室。关键区别:二、synchronized的…

作者头像 李华
网站建设 2026/5/27 10:43:47

基于单片机的智能窗帘控制系统设计与实现

一、设计背景与核心需求 随着智能家居技术的发展,传统窗帘的手动操作已无法满足现代生活对便捷性、舒适性和节能性的需求。高层住宅大尺寸窗帘拉动费力、忘记关窗导致风雨侵入、光照过强影响室内环境等问题频发。基于单片机的智能窗帘控制系统,通过环境感…

作者头像 李华
网站建设 2026/5/26 4:38:32

Java 应用提供对接第三方接口的优雅高级写法

一、真正的高手,不是“调通接口”,而是“设计边界” 对接第三方接口,看似只是发个请求、拿个 JSON,但背后其实是——系统边界的协作与防御设计。 你面对的不是自己可控的代码,而是一个随时可能“变脸”的外部世界: 对方文档写着“此字段必传”,实际却返回 null 测试环境…

作者头像 李华
网站建设 2026/5/27 5:48:03

基于S7 - 1200 PLC的工业冷库等控制系统漫谈

基于S7-1200 PLC工业冷库控制系统 基于PLC的空调控制系统设计。 基于PLC的工业空调机组设计。基于PLC的冷风机组系统设计带解释的梯形图接线图原理图图纸,io分配,组态画面在工业领域,对于温度的精准控制至关重要,无论是冷库、空调…

作者头像 李华
网站建设 2026/5/27 5:14:23

鸿蒙Electron应用商业化效果评估:数据驱动的增长闭环

基于前文对商业化落地的探讨,本次将聚焦“鸿蒙Electron应用商业化效果评估体系”,从“核心指标构建、数据采集分析、优化迭代闭环”三个维度,提供可量化、可落地的评估方案,帮助开发者精准判断商业化健康度并高效优化。 鸿蒙Elect…

作者头像 李华