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 升级都有一定应用。

相关推荐
云析赢指标公式网429 分钟前
文华财经指标源码笔记:WINNER筹码函数、控盘变量与MACD变体的调试记录
java·笔记·算法
无心水44 分钟前
22、数学与经济管理(运筹学) 核心考点与学习笔记
人工智能·笔记·学习·架构师·软考·软考架构师·软考系统架构师
路上有只喵1 小时前
认识元器件 · 单片机(MCU/MPU/SOC) · 实战篇6
单片机·嵌入式硬件
国科安芯1 小时前
核电站蒸汽发生器传热管在役无损检测模拟前端的低噪声供电研究
嵌入式硬件·ldo·低压差线性稳压器·无损检测·核电站·蒸汽发生器·传热管
xxwl5852 小时前
Nginx 基础学习笔记
笔记·学习·nginx
January12072 小时前
【AI方法笔记】2026-11-02:模型流式吐 JSON 时,前端会遇到四种崩法
前端·人工智能·笔记·json
集芯微电科技有限公司2 小时前
40V/24A高频率增强型GaN HEMT功率开关管/高频DC转换/电动工具/GaN充电器 方案首选
人工智能·科技·单片机·嵌入式硬件·深度学习·神经网络·生成对抗网络
十八岁牛爷爷2 小时前
STM32H7 长时间运行后 HTTP 断连:从“串口还活着”到 TX 描述符错账
stm32·单片机·嵌入式硬件
Lxx_Zw3 小时前
串口命令如何从字符串长成协议:帧头、长度、校验和与状态机
c语言·stm32·单片机·嵌入式硬件
snysy3 小时前
# 磁盘IO性能fio测试实操笔记
笔记·磁盘io·fio