S
震惊!“公交车被上高潮了还能坐吗今天”——这背后隐藏的真相,你绝对想不到!
首页
速度
优化工具
☰
首页
速度
收录
工具
首页
/
速度优化
/
铿锵锵锵锵锵好多少诲外:那些关于成长与蜕变的动人旋律
网站优化
潮酷来袭!男生女生一起拆拆很痛的轮滑鞋,解锁夏日速度与激情!
孟若羽封神三部曲是哪三部
2026-06-09 13:45:34
阅读时长:8分钟
562次阅读
核心内容摘要
欲海沉沦与家国旧梦:镜头背后的《色·戒》视觉密码与剧照揭密
w25q
h#ifndef__W25Q64_H#define__W25Q64_H#includemain.h#includespi.h// 引脚定义#defineW25Q64_CS_PINGPIO_PIN_15#defineW25Q64_CS_PORTGPIOA// W25Q64指令集#defineW25Q64_WRITE_ENABLE0x06#defineW25Q64_WRITE_DISABLE0x04#defineW25Q64_READ_STATUS10x05#defineW25Q64_WRITE_STATUS10x01#defineW25Q64_READ_DATA0x03#defineW25Q64_PAGE_PROGRAM0x02#defineW25Q64_SECTOR_ERASE0x20#defineW25Q64_CHIP_ERASE0xC7#defineW25Q64_POWER_DOWN0xB9#defineW25Q64_RELEASE_PD0xAB#defineW25Q64_MANUF_DEVICE_ID0x90#defineW25Q64_JEDEC_ID0x9F// Flash容量参数#defineW25Q64_PAGE_SIZE256#defineW25Q64_SECTOR_SIZE4096#defineW25Q64_TOTAL_SIZE(8*1024*
// 8MB// 函数声明voidW25Q64_Init(void);uint8_tW25Q64_ReadByte(uint32_taddr);voidW25Q64_ReadBytes(uint32_taddr,uint8_t*buf,uint32_tlen);voidW25Q64_WriteByte(uint32_taddr,uint8_tdata);voidW25Q64_WriteBytes(uint32_taddr,uint8_t*data,uint32_tlen);voidW25Q64_ModifyByte(uint32_taddr,uint8_tdata);voidW25Q64_EraseSector(uint32_tsector_addr);voidW25Q64_WaitBusy(void);uint32_tW25Q64_ReadID(void);#endif/* __W25Q64_H */w25q
c#includew25q
h// 私有函数声明staticvoidW25Q64_CS_Low(void);staticvoidW25Q64_CS_High(void);staticvoidW25Q64_WriteEnable(void);staticuint8_tW25Q64_ReadStatus(void);// 初始化函数voidW25Q64_Init(void){W25Q64_CS_High();HAL_Delay(
;// 读取ID验证连接uint32_tidW25Q64_ReadID();if(id0xEF
// W25Q64JV的JEDEC ID{// 初始化成功}}// 读取单个字节uint8_tW25Q64_ReadByte(uint32_taddr){uint8_tcmd[4]{W25Q64_READ_DATA,(addr
0xFF,(addr
0xFF,addr0xFF};uint8_tdata0;W25Q64_CS_Low();HAL_SPI_Transmit(hspi6,cmd,4,
;HAL_SPI_Receive(hspi6,data,1,
;W25Q64_CS_High();returndata;}// 读取多个字节voidW25Q64_ReadBytes(uint32_taddr,uint8_t*buf,uint32_tlen){uint8_tcmd[4]{W25Q64_READ_DATA,(addr
0xFF,(addr
0xFF,addr0xFF};W25Q64_CS_Low();HAL_SPI_Transmit(hspi6,cmd,4,
;HAL_SPI_Receive(hspi6,buf,len,
;W25Q64_CS_High();}// 写入单个字节voidW25Q64_WriteByte(uint32_taddr,uint8_tdata){uint8_tcmd[5]{W25Q64_PAGE_PROGRAM,(addr
0xFF,(addr
0xFF,addr0xFF,data};W25Q64_WriteEnable();W25Q64_CS_Low();HAL_SPI_Transmit(hspi6,cmd,5,
;W25Q64_CS_High();W25Q64_WaitBusy();}// 写入多个字节注意不能跨页写入voidW25Q64_WriteBytes(uint32_taddr,uint8_t*data,uint32_tlen){// 确保不跨页写入uint32_tpage_remainW25Q64_PAGE_SIZE-(addr%W25Q64_PAGE_SIZE);uint32_twrite_len(lenpage_remain)?page_remain:len;uint8_t*cmd(uint8_t*)malloc(write_len
;if(cmdNULL)return;cmd[0]W25Q64_PAGE_PROGRAM;cmd[1](addr
0xFF;cmd[2](addr
0xFF;cmd[3]addr0xFF;memcpy(cmd[4],data,write_len);W25Q64_WriteEnable();W25Q64_CS_Low();HAL_SPI_Transmit(hspi6,cmd,write_len4,
;W25Q64_CS_High();W25Q64_WaitBusy();free(cmd);// 如果还有数据需要写入递归调用if(lenwrite_len){W25Q64_WriteBytes(addrwrite_len,datawrite_len,len-write_len);}}// 修改指定地址的字节先擦除后写入voidW25Q64_ModifyByte(uint32_taddr,uint8_tdata){// 计算所在扇区uint32_tsector_addraddr-(addr%W25Q64_SECTOR_SIZE);uint8_tsector_buffer[W25Q64_SECTOR_SIZE];//
读取整个扇区W25Q64_ReadBytes(sector_addr,sector_buffer,W25Q64_SECTOR_SIZE);//
修改指定字节sector_buffer[addr-sector_addr]data;//
擦除扇区W25Q64_EraseSector(sector_addr);//
重新写入整个扇区// 分页写入每次写入一页256字节for(uint32_ti0;iW25Q64_SECTOR_SIZE;iW25Q64_PAGE_SIZE){W25Q64_WriteBytes(sector_addri,sector_buffer[i],W25Q64_PAGE_SIZE);}}// 擦除扇区4KBvoidW25Q64_EraseSector(uint32_tsector_addr){uint8_tcmd[4]{W25Q64_SECTOR_ERASE,(sector_addr
0xFF,(sector_addr
0xFF,sector_addr0xFF};W25Q64_WriteEnable();W25Q64_CS_Low();HAL_SPI_Transmit(hspi6,cmd,4,
;W25Q64_CS_High();W25Q64_WaitBusy();}// 等待Flash操作完成voidW25Q64_WaitBusy(void){while(W25Q64_ReadStatus()0x
{HAL_Delay(
;}}// 读取JEDEC IDuint32_tW25Q64_ReadID(void){uint8_tcmdW25Q64_JEDEC_ID;uint8_tid_data[3];W25Q64_CS_Low();HAL_SPI_Transmit(hspi6,cmd,1,
;HAL_SPI_Receive(hspi6,id_data,3,
;W25Q64_CS_High();return(id_data[0]
|(id_data[1]
|id_data[2];}// 私有函数实现staticvoidW25Q64_CS_Low(void){HAL_GPIO_WritePin(W25Q64_CS_PORT,W25Q64_CS_PIN,GPIO_PIN_RESET);}staticvoidW25Q64_CS_High(void){HAL_GPIO_WritePin(W25Q64_CS_PORT,W25Q64_CS_PIN,GPIO_PIN_SET);}staticvoidW25Q64_WriteEnable(void){uint8_tcmdW25Q64_WRITE_ENABLE;W25Q64_CS_Low();HAL_SPI_Transmit(hspi6,cmd,1,
;W25Q64_CS_High();}staticuint8_tW25Q64_ReadStatus(void){uint8_tcmdW25Q64_READ_STATUS1;uint8_tstatus;W25Q64_CS_Low();HAL_SPI_Transmit(hspi6,cmd,1,
;HAL_SPI_Receive(hspi6,status,1,
;W25Q64_CS_High();returnstatus;}使用例程#includew25q
h// 测试函数voidmain(void){uint8_tread_data;uint8_twrite_data0xAA;uint32_ttest_addr0x000000;// 测试地址//
初始化W25Q64_Init();//
写入单个字节W25Q64_WriteByte(test_addr,write_data);HAL_Delay(
;//
读取单个字节read_dataW25Q64_ReadByte(test_addr);if(read_datawrite_data){// 写入成功}//
批量写入测试uint8_twrite_buffer[256];uint8_tread_buffer[256];for(inti0;i256;i){write_buffer[i]i;}W25Q64_WriteBytes(0x1000,write_buffer,
;HAL_Delay(
;//
批量读取测试W25Q64_ReadBytes(0x1000,read_buffer,
;//
修改指定地址的数据W25Q64_ModifyByte(0x2000,0x
;//
擦除扇区测试W25Q64_EraseSector(0x
;}CubeMX配置要点SPI6配置· Mode: Full-Duplex Master· Hardware NSS Signal: Disable· Prescaler: 根据HCLK频率调整建议≤50MHzGPIO配置· PA15: GPIO_OutputCS引脚· PB3: SPI6_SCK· PB4: SPI6_MISO· PB5: SPI6_MOSI时钟配置· 确保SPI时钟不超过W25Q64的最大频率104MHz
注意事项写操作前必须擦除Flash只能从1变为0所以写前需要擦除变为0xFF擦除最小单位4KB扇区写操作跨页处理页大小为256字节跨页时需要分页写入修改函数效率W25Q64_ModifyByte会擦除整个扇区频繁修改时应考虑缓存机制这个驱动提供了基本的读写和修改功能可以根据需要扩展更多功能如整片擦除、快速读取等。
新大地影院电影在线播放-新大地影院电影在线播放应用
相关标签
揭秘《王者荣耀》伽罗太华的惊艳瞬间:唯美卧床场景深度解析
恒大42楼包间视频播放平台:颠覆想象的尊享视界,开启您的专属影娱时光
穿越视界,尽享精彩:锕铜铜铜铜铜在线观看免费,你的专属娱乐盛宴
欲漫社:在二次元的海洋里,找到你的精神归属
掘宝秘籍:9.1免费高清素材网站,漫画创作者的灵感加油站!
猫扑MOP破解版下载:重温那些年的青春与激情!
释放无限激情:探索“天天射天天干”的深层魅力
欲梦子:一场关于生活美学的诗意栖居
岁月静好,不如“她”恰似锦绣:解锁“人妻”的别样风情
女人久久:绽放永恒之美,品味岁月留香
汤芳人艺术《巅》:一场颠覆视觉的艺术盛宴,风格解析与美学探索
绿巨人“污蔑”:当愤怒化为力量,谁能定义英雄的色彩?
探索“Brazzers”的文化现象:从互联网到现实的争议与影响
亚洲电影图片视频小说区精彩推荐
🔍
📑
文章目录
二、9.1免费网站漫画:开启你的无限次元之旅!
三、当他卸下铠甲,你看到了怎样的他?
四、每日大赛-寸止挑战主题大赛
五、暗网TV穿梭数字幽灵
🔥
热门优化文章
探索“铜铜铜铜铜好污WWW网站”的无限可能:一场感官与思想的奇妙之旅
2026-05-16 23:19:13
兽皇ZoomDog最新版本更新内容:颠覆想象,重塑体验
2026-05-16 23:19:13
🛠️
实用工具推荐
Nanbeige4.1-3B流式对话工具实测:像微信聊天一样自然的AI体验
如何通过AndroidFaker构建设备隐私防护?完整实践指南
相关优化文章 推荐
浣纱溪畔的绝代风华:西施与她未竟的情书
2026-06-09 13:45:34 9分钟阅读
告别卡顿,拥抱丝滑!Twitter中国版18高危风险9.1最新版本,重塑你的社交体验!
2026-06-09 13:45:34 1分钟阅读
《年轻的后母》:当岁月温柔以待,爱与救赎悄然绽放
2026-06-09 13:45:34 6分钟阅读
↑
百度百家号客服电话人工服务
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3