S
Fish Speech-1.5语音生成效率对比:CPU vs GPU推理速度与质量权衡
首页
速度
优化工具
☰
首页
速度
收录
工具
首页
/
速度优化
/
智能化面试数据洞察:连锁门店招聘的核心赋能手段
网站优化
MiniCPM-V-2_6效果展示:实测OCR、多图推理,效果惊艳到不敢相信
Qwen2.5-32B-Instruct在医疗健康中的应用:智能诊断辅助系统
2026-06-08 20:12:59
阅读时长:9分钟
562次阅读
核心内容摘要
2026新规落地,网络安全迎来“大考”!这6大专业是未来高薪领域
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会擦除整个扇区频繁修改时应考虑缓存机制这个驱动提供了基本的读写和修改功能可以根据需要扩展更多功能如整片擦除、快速读取等。
海角社区id:1120.7126,登陆入口地址-海角社区id:1120.7126,登陆入口地址应用
相关标签
揭秘《原神》芭芭拉旅行者奖励视频最新进展:信仰的力量,治愈的旋律
跨越星辰大海,赵薇的120分钟精彩人生:不止于璀璨,更在于深耕
汤姆叔叔的温馨提示:让生活充满暖意与智慧
78落入13:数字的奇遇与生命的低语
妈妈不可以下载:一场关于爱与成长的数字断舍离
“66m成长模式视频66模式”:解锁无限可能,开启智慧人生新篇章
发现超刺激的18禁网站
视界新生,感官觉醒:高清时代下的“成人”品鉴之旅
A一级片:超越感官的极致体验,探索视觉艺术的新维度
精品视频99:点亮你的视界,定义你的精彩
岗本视频:不止于“视”,更是“为”的深度探索
探索“成人网”的无限可能:知识、乐趣与成长的全新维度
51大赛-每日大赛--双马尾琴
解锁无限可能:美女搞基软件,你的专属社交新次元_1
🔍
📑
文章目录
二、范冰大战黑金刚:一场颠覆想象的视觉盛宴与国货崛起之路
三、茄子视频苏州晶体:穿越时空的影像对话,解锁城市记忆的新维度
四、女角色脸红流口水流眼泪翻白眼的原因
五、黑土ドラ脚法教学视频
🔥
热门优化文章
开题报告 springboot和vue申请书杂志社订户信息管理系统
2026-05-16 23:19:13
OFA图像描述模型5分钟快速上手:零基础生成英文图片描述
2026-05-16 23:19:13
🛠️
实用工具推荐
张符雨:定格风华,倾鉴灵动之美
探索无限精彩,尽在91视频免费观看
相关优化文章 推荐
探索“大菠萝官方官网隐藏入口”:数字游乐场的秘密通道
2026-06-08 20:12:59 6分钟阅读
解锁“干逼软件”的潜能:从入门到精通的极致体验
2026-06-08 20:12:59 2分钟阅读
伊甸园的呼唤:2023年10月,一场关于美好生活的探索之旅
2026-06-08 20:12:59 8分钟阅读
↑
百度百家号客服电话人工服务
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