K_A39_012 基于STM32驱动W25Q32 模块读写数据 串口+OLED0.96显示

news2024/11/19 4:45:49

K_A39_012 基于STM32驱动W25Q32 模块读写数据 串口+OLED0.96显示

  • 所有资源导航
  • 一、资源说明
  • 二、基本参数
    • 参数
    • 引脚说明
  • 三、驱动说明
    • 时序
    • 对应程序:
  • 四、部分代码说明
    • 1、接线引脚定义
      • 1.2、STM32F103C8T6+W25Q32 模块
  • 五、基础知识学习与相关资料下载
  • 六、视频效果展示与程序资料获取
  • 七、注意事项
  • 八、接线说明
    • STM32F103C8T6

请添加图片描述

所有资源导航

其他资料目录 直戳跳转

一、资源说明

单片机型号测试条件模块名称代码功能

| STM32F103C8T6 | 晶振8M/系统时钟72M |W25Q32 模块 |STM32F103C8T6驱动W25Q32 模块 串口与OLED0.96双显示 |

二、基本参数

参数

请添加图片描述

引脚说明

W25Q32 模块引脚说明
VCC正极 3.3V供电
GNDGND 电源负极
MISOSPI总线 主机输入从机输出引脚
MOSISPI总线 主机输出从机输入引脚
SCKSPI总线 时钟引脚
CS片选信号脚

三、驱动说明

时序

请添加图片描述

对应程序:

SPI初始化程序:
/**
  * @brief  SPI_FLASH初始化
  * @param  无
  * @retval 无
  */
void SPI_FLASH_Init(void)
{
  SPI_InitTypeDef  SPI_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;
	
	/* 使能SPI时钟 */
	FLASH_SPI_APBxClock_FUN ( FLASH_SPI_CLK, ENABLE );
	
	/* 使能SPI引脚相关的时钟 */
 	FLASH_SPI_CS_APBxClock_FUN ( FLASH_SPI_CS_CLK|FLASH_SPI_SCK_CLK|
																	FLASH_SPI_MISO_PIN|FLASH_SPI_MOSI_PIN, ENABLE );
	
  /* 配置SPI的 CS引脚,普通IO即可 */
  GPIO_InitStructure.GPIO_Pin = FLASH_SPI_CS_PIN;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(FLASH_SPI_CS_PORT, &GPIO_InitStructure);
	
  /* 配置SPI的 SCK引脚*/
  GPIO_InitStructure.GPIO_Pin = FLASH_SPI_SCK_PIN;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(FLASH_SPI_SCK_PORT, &GPIO_InitStructure);

  /* 配置SPI的 MISO引脚*/
  GPIO_InitStructure.GPIO_Pin = FLASH_SPI_MISO_PIN;
  GPIO_Init(FLASH_SPI_MISO_PORT, &GPIO_InitStructure);

  /* 配置SPI的 MOSI引脚*/
  GPIO_InitStructure.GPIO_Pin = FLASH_SPI_MOSI_PIN;
  GPIO_Init(FLASH_SPI_MOSI_PORT, &GPIO_InitStructure);

  /* 停止信号 FLASH: CS引脚高电平*/
  SPI_FLASH_CS_HIGH();

  /* SPI 模式配置 */
  // FLASH芯片 支持SPI模式0及模式3,据此设置CPOL CPHA
  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  SPI_InitStructure.SPI_CRCPolynomial = 7;
  SPI_Init(FLASH_SPIx , &SPI_InitStructure);

  /* 使能 SPI  */
  SPI_Cmd(FLASH_SPIx , ENABLE);
	
}

四、部分代码说明

1、接线引脚定义

需要自定义引脚可在此处更改,STM32要自定义引脚的话也要注意引脚时钟使能的更改

1.2、STM32F103C8T6+W25Q32 模块


#define      FLASH_SPIx                        SPI1
#define      FLASH_SPI_APBxClock_FUN          RCC_APB2PeriphClockCmd
#define      FLASH_SPI_CLK                     RCC_APB2Periph_SPI1

//CS(NSS)引脚 片选选普通GPIO即可
#define      FLASH_SPI_CS_APBxClock_FUN       RCC_APB2PeriphClockCmd
#define      FLASH_SPI_CS_CLK                  RCC_APB2Periph_GPIOA    
#define      FLASH_SPI_CS_PORT                 GPIOA
#define      FLASH_SPI_CS_PIN                  GPIO_Pin_4

//SCK引脚
#define      FLASH_SPI_SCK_APBxClock_FUN      RCC_APB2PeriphClockCmd
#define      FLASH_SPI_SCK_CLK                 RCC_APB2Periph_GPIOA   
#define      FLASH_SPI_SCK_PORT                GPIOA   
#define      FLASH_SPI_SCK_PIN                 GPIO_Pin_5
//MISO引脚
#define      FLASH_SPI_MISO_APBxClock_FUN     RCC_APB2PeriphClockCmd
#define      FLASH_SPI_MISO_CLK                RCC_APB2Periph_GPIOA    
#define      FLASH_SPI_MISO_PORT               GPIOA 
#define      FLASH_SPI_MISO_PIN                GPIO_Pin_6
//MOSI引脚
#define      FLASH_SPI_MOSI_APBxClock_FUN     RCC_APB2PeriphClockCmd
#define      FLASH_SPI_MOSI_CLK                RCC_APB2Periph_GPIOA    
#define      FLASH_SPI_MOSI_PORT               GPIOA 
#define      FLASH_SPI_MOSI_PIN                GPIO_Pin_7


五、基础知识学习与相关资料下载

1、STC89C52RC程序下载 直戳跳转

2、STM32F103C8T6程序下载
(1)串口下载 直戳跳转
(2)ST-LINK下载 直戳跳转
(3)J-LINK下载 直戳跳转
(4)DAP-LINK下载 直戳跳转

3、OLED0.96程序说明 直戳跳转

4、串口助手下载与使用
(1)安信可调试助手使用 直戳跳转
(2) sscom33串口调试助手使用 直戳跳转
(3)STC-ISP串口调试助手使用 直戳跳转

六、视频效果展示与程序资料获取

视频连接 直戳跳转
资料获取 ( 滑到最后添加个人号)

七、注意事项

1、VCC GND请勿接反,接反易烧
2、OLED显示异常时,排除接线接触不良

八、接线说明

STM32F103C8T6

  
/************************************************************************************
//  功能描述   : W25Q32模块测试程序
//  测试条件   : STM32F103C8T6   晶振8M  系统时钟72M
接线
W25Q32模块-------------------------------STM32F103C8T6
VCC------------------------------------3.3V
GND------------------------------------GND
CS-------------------------------------PA4 //
SCK------------------------------------PA5 //	
MISO-----------------------------------PA6 //	
MOSI-----------------------------------PA7 //	

OLED0.96模块---------------------------STM32F103C8T6
VCC------------------------------------3.3V
GND------------------------------------GND
SCL------------------------------------PB8 //
SDA------------------------------------PB9 //	

*************************************************************************************/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/541626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 429. N 叉树的层序遍历

429. N 叉树的层序遍历 描述 给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。 树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。 示例 示例1 输入&…

货拉拉Java开发实习

目录 1.Java的重载和重写有什么区别2.什么情况下需要用到重载3.有很多个字符串和变量,需要把它们加起来,这时候用String会有什么问题4.有没有其它的替代方案5.StringBuffer和StringBuilder有什么区别6.一个自定义对象,分别创建了两个实例&…

5分钟梳理银行测试,文末附带实战项目

很多银行招聘都要求有相关从业经验,这对于想跨入这个岗位的0经验从业同学可真犯了难 “你都不让我上岗,我哪来的工作经验呢?” 为了解决这个问题,小柠檬整理了本篇文章,从3个方面介绍银行项目是如何进行测试的 银行…

springboot---IoC 和 AOP

目录 引语IoC传统开发模式的弊端控制反转和依赖注入 AOP面向对象的局限性面向切面编程 总结 引语 Inversion of Control,缩写为IoC:控制反转 Aspect-oriented programming,缩写为AOP:面向切面编程 IoC和AOP是spring框架最核心的…

VMware Workstation 与 Device/Credential Guard 不兼容.在禁用 Device/Credenti

这个时候我们需要去关掉几个功能 1、关闭Hyper-V 打开控制面板首页,找到“程序”,然后找到“启用或关闭Windows功能”,找到“Hyper-V”,有勾中的全部都取消掉,如果这一步操作失败,不要紧,继续…

使用马哈鱼SQLFlow分析聚合函数中的数据流列

聚合函数通常将列作为参数,在本文中,我们将讨论在用作函数参数的列和聚合函数之间创建什么样的数据流。 1. COUNT() COUNT()可以采用COUNT(),也可以采用任何列名,甚至可以采用空参数。如果参数为空或为列,则参数和函…

DatenLord前沿技术分享 No.25

达坦科技专注于打造新一代开源跨云存储平台DatenLord,通过软硬件深度融合的方式打通云云壁垒,致力于解决多云架构、多数据中心场景下异构存储、数据统一管理需求等问题,以满足不同行业客户对海量数据跨云、跨数据中心高性能访问的需求。在本周…

【已解决】使用Arduino调试ARM时编译错误error: ordered comparison of pointer with integer zero的解决方法

在使用Arduino的资源库对STM32编程时,出现: error: ordered comparison of pointer with integer zero (byte* {aka unsigned char*} and int) 编译错误的解决方法。 Arduino因其开源和易用性,丰富的三方资源,受到很多人的喜欢…

Android无线调试

1、首先在系统环境变量——》新建——》"ANDROID_ADB_SERVER_PORT",值:手机的端口号 2、通过adb kill-server,adb start-server,重启abd 3、最后使用:adb connect ip:port(如:192.16…

【SpringBoot】SpringBoot 纯后端项目如何自定义异常页面(Whitelabel Error Page)

文章目录 背景安排方案步骤 验证 背景 一个短链服务,业务将长链接给我,我转换成短地址,用户访问短地址时,我再做redirect;没有前端,纯后端项目短链会有过期时间,过期后将返回错误信息某一天一个…

GPT 专业应用:如何让GPT策划方案

身为一名职场打工人,或多或少会面临需要写策划案的难题。 不管是策划一场线下活动,还是策划业务发展的方向; 甚至到生活中还需要策划婚礼,策划房屋装修,策划和朋友的聚会等等。那么如何快速积累经验,找准…

JavaScript全解析——Ajax教程(上)

AJAX 是Asynchronous JavaScript And XML的缩写。 它不是一种编程语言。它是一种基于HTML、CSS、JavaScript 和 XML,让开发更好、更快和更有互动的 Web 应用的技术。 什么是ajax 认识前后端交互 前后端交互就是前端与后端的一种通讯方式,主要使用的技…

关于一个C++项目:高并发内存池的开发过程(二)

文章目录 内存释放操作的总述thread cachecentral cachepage cachecentral cache的TODO实现何时维护这张映射表? tc_dealloc的修改申请大内存的适配写在最后 上篇文章梳理了内存申请操作的流程,大概测试了一下,没有发现什么问题。这篇文章将梳…

Simulink 自动代码生成电机控制:软件在环测试(SIL)步骤总结

目录 前言 模型配置 SIL模型生成 模型仿真对比 总结 前言 电机模型仿真可以叫做模型在环测试(MIL),至于SIL就是软件在环仿真测试,说白了就是验证生成的代码有没有问题,如果有问题那在模型里面修复,不要…

点餐小程序实战教程05-点餐功能开发

目录 1 点餐需求分析2 变量定义3 点餐分类功能实现4 菜品展示功能开发5 实现切换分类时过滤数据总结我们上一篇设计了点餐分类及点餐信息数据源的功能,本篇我们介绍一下如何开发点餐功能。 1 点餐需求分析 看一下页面是分为两部分,左侧是侧边栏导航,用来展示点餐的分类信息。…

论文解读 | 《基于采样的MPC控制的约束视觉》

原创 | 文BFT机器人 引言 Introduction 视觉伺服控制方案,如基于图像的(IBVS),基于姿态的(PBVS)或基于混合的(HBVS),在过去的几十年里得到了广泛的发展。众所周知,要处理的主要问题涉及局部极小点或奇异点的存在、可见性约束、联合…

缺少ssl模块

nginx采用源码安装方式 1、 查看是否有模块,如下没有 /usr/local/nginx/sbin/nginx -V1.1、 备份nginx配置文件 cp -a nginx.conf nginx.conf.bak2、 进nginx安装包目录 ./configure --prefix/usr/local/nginx --with-http_stub_status_module --with-http_ssl_mo…

将 NGINX 部署为 API 网关

现代应用架构的核心是 HTTP API。HTTP 支持快速构建和轻松维护应用。HTTP API 提供了一个通用接口,因此不必考虑应用的规模大小,无论是单独用途的微服务还是大型综合应用。 HTTP 不仅可以支持超大规模互联网,也可用于提供可靠和高性能的 API …

解决一个诡异的java空指针问题的案例

最近在看java类加载器的资料,于是写了一个自定义类加载器测试一下,结果就悲剧了,直接报空指针! 跟着报错指引看代码37行是什么东东? 就是一个inputStream, 然后看看它的定义: 这玩意就是从classpath读取cla…

html实现一个一闪一闪的按钮,CSS实现一个一闪一闪的按钮,Css闪烁点标,css设置按钮层次感,css按钮美化,CSS按钮动画过渡,CSS按钮添加阴影

效果 动态 静态 实现 底部多加了几个过渡按钮 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>#app {margin: 2% auto;text-align: center;}.lay-btn-box {position: relative;display: …