当前位置: 首页 > news >正文

微信公众号开发微网站开发企业网站建设报价

微信公众号开发微网站开发,企业网站建设报价,建设网站具体步骤,saas系统是什么意思前言 #xff08;1#xff09;本系列是基于STM32的项目笔记#xff0c;内容涵盖了STM32各种外设的使用#xff0c;由浅入深。 #xff08;2#xff09;小编使用的单片机是STM32F105RCT6#xff0c;项目笔记基于小编的实际项目#xff0c;但是博客中的内容适用于各种单片…前言 1本系列是基于STM32的项目笔记内容涵盖了STM32各种外设的使用由浅入深。 2小编使用的单片机是STM32F105RCT6项目笔记基于小编的实际项目但是博客中的内容适用于各种单片机开发的同学学习和使用。 学习目标 W25Q64硬件设计。学习SPI通讯协议。完成25Q64芯片的SPI驱动程序编写。 硬件原理图 从上图可以看出 25Q64连接的是单片机的SPI2接口通过SPI2来通讯的。 SPI通讯原理简单介绍理解 典型连线图 简单原理分析 SCK决定SPI的通信速率即 数据传输速率。 数据1高电平 0 低电平。 SPI的四种通讯模式 https://mp.weixin.qq.com/s/ytAad2jdKczzdhD3b92apA 可以看一下上面的资料。 首先我们要了解两个特殊寄存器 分别是 CPOL Clock POlarity和 CPHA Clock PHAse。 CPOL配置SPI总线的极性 CPHA配置SPI总线的相位 SPI总线极性的概念 空闲的时候时钟信号是高电平还是低电平 CPOL 1; SCK 空闲是高电平 CPOL 0; SCK 空闲是低电平 SPI总线的相位的概念 一个时钟周期有2个跳变沿相位决定从那个跳变开始采集数据 CPHA 0; 表示从第一个跳变 开始采集 CPHA 1; 表示从第二个跳变 开始采集 SPI四种模式 模式0: CPOL 0; CPHA 0; 模式1CPOL 0; CPHA 1; 模式2CPOL 1; CPHA 0; 模式3CPOL 1; CPHA 1; 数据传输方向 高位在前MSB 低位在前: LSB SPI的单线 和双线 模式 单线一般用于OLED屏幕单向通讯 双向一般用于芯片之间的双向通讯 特别说明 一般情况下我们不用刻意去学习四种模式的具体细节一般芯片资料里面都会告诉你芯片支持的模式。 25Q64 SPI2的初始化操作 hal_flash.c代码 #include stm32F10x.h #include hal_flash.hvoid hal_spi2Init(void) {SPI_InitTypeDef SPI_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;/* Enable SPI2 and GPIOA clocks */RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);/* Configure SPI2 pins: NSS, SCK, MISO and MOSI */GPIO_InitStructure.GPIO_Pin SPI2_SCK_PIN | SPI2_MISO_PIN | SPI2_MOSI_PIN;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP;GPIO_Init(SPI2_SCK_PORT, GPIO_InitStructure);//SPI2 NSS GPIO_InitStructure.GPIO_Pin SPI2_NSS_PIN;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP;GPIO_Init(SPI2_NSS_PORT, GPIO_InitStructure);GPIO_SetBits(SPI2_NSS_PORT,SPI2_NSS_PIN);/* SPI2 configuration */ SPI_InitStructure.SPI_Direction SPI_Direction_2Lines_FullDuplex; //SPI1设置为两线全双工SPI_InitStructure.SPI_Mode SPI_Mode_Master; //设置SPI1为主模式SPI_InitStructure.SPI_DataSize SPI_DataSize_8b; //SPI发送接收8位帧结构SPI_InitStructure.SPI_CPOL SPI_CPOL_High; //串行时钟在不操作时时钟为高电平SPI_InitStructure.SPI_CPHA SPI_CPHA_2Edge; //第二个时钟沿开始采样数据SPI_InitStructure.SPI_NSS SPI_NSS_Soft; //NSS信号由软件使用SSI位管理SPI_InitStructure.SPI_BaudRatePrescaler SPI_BaudRatePrescaler_8; //定义波特率预分频的值:波特率预分频值为8SPI_InitStructure.SPI_FirstBit SPI_FirstBit_MSB; //数据传输从MSB位开始SPI_InitStructure.SPI_CRCPolynomial 7; //CRC值计算的多项式SPI_Init(SPI2, SPI_InitStructure);/* Enable SPI2 */SPI_Cmd(SPI2, ENABLE); //使能SPI2外设hal_spi2CSDrive(1);//空闲时将片选信号拉高初始化为空闲状态} void hal_spi2CSDrive(unsigned char sta) {if(sta)GPIO_SetBits(SPI2_NSS_PORT,SPI2_NSS_PIN); elseGPIO_ResetBits(SPI2_NSS_PORT,SPI2_NSS_PIN); }//SPIx 读写一个字节 //返回值:读取到的字节 unsigned char hal_spi2ReadWriteByte(unsigned char TxData) { unsigned char retry0; while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE)RESET)//等待发送区空 {retry;if(retry200)return 0;} SPI_I2S_SendData(SPI2,TxData); retry0;while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE)RESET)//等待发送区空 {retry;if(retry200)return 0;} return SPI_I2S_ReceiveData(SPI2);//SPI2-DR; //返回收到的数据 } hal_flash.h代码 #ifndef _HAL_FLASH_H #define _HAL_FLASH_H#define SPI2_SCK_PORT GPIOB #define SPI2_SCK_PIN GPIO_Pin_13#define SPI2_MOSI_PORT GPIOB #define SPI2_MOSI_PIN GPIO_Pin_15#define SPI2_MISO_PORT GPIOB #define SPI2_MISO_PIN GPIO_Pin_14#define SPI2_NSS_PORT GPIOB #define SPI2_NSS_PIN GPIO_Pin_12void hal_spi2Init(void); void hal_spi2CSDrive(unsigned char sta); unsigned char hal_spi2ReadWriteByte(unsigned char TxData);#endif SPI2接口初始化流程拆解代码分析 ● 定义SPI通讯的端口 ● 打开相关时钟 ● 初始化SPI2相关的GPIO口 ● 初始化SPI2相关参数 ● 片选CS初始化 拉高 定义SPI通讯的端口 #define SPI2_SCK_PORT GPIOB #define SPI2_SCK_PIN GPIO_Pin_13#define SPI2_MOSI_PORT GPIOB #define SPI2_MOSI_PIN GPIO_Pin_15#define SPI2_MISO_PORT GPIOB #define SPI2_MISO_PIN GPIO_Pin_14#define SPI2_NSS_PORT GPIOB//其实就是CS片选引脚 #define SPI2_NSS_PIN GPIO_Pin_12打开相关时钟 /* Enable SPI2 and GPIOA clocks */RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);初始化SPI2相关的GPIO口 /* Configure SPI2 pins: NSS, SCK, MISO and MOSI */GPIO_InitStructure.GPIO_Pin SPI2_SCK_PIN | SPI2_MISO_PIN | SPI2_MOSI_PIN;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP;GPIO_Init(SPI2_SCK_PORT, GPIO_InitStructure);//SPI2 NSS GPIO_InitStructure.GPIO_Pin GPIO_Pin_12;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP;GPIO_Init(GPIOB, GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_12); 初始化SPI2相关参数 /* SPI2 configuration */ SPI_InitStructure.SPI_Direction SPI_Direction_2Lines_FullDuplex; //SPI2设置为两线全双工SPI_InitStructure.SPI_Mode SPI_Mode_Master; //设置SPI2为主模式SPI_InitStructure.SPI_DataSize SPI_DataSize_8b; //SP2发送接收8位帧结构SPI_InitStructure.SPI_CPOL SPI_CPOL_High; //串行时钟在不操作时时钟为高电平SPI_InitStructure.SPI_CPHA SPI_CPHA_2Edge; //第二个时钟沿开始采样数据SPI_InitStructure.SPI_NSS SPI_NSS_Soft; //NSS信号由软件使用SSI位管理SPI_InitStructure.SPI_BaudRatePrescaler SPI_BaudRatePrescaler_8; //定义波特率预分频的值:波特率预分频值为8SPI_InitStructure.SPI_FirstBit SPI_FirstBit_MSB; //数据传输从MSB位开始SPI_InitStructure.SPI_CRCPolynomial 7; //CRC值计算的多项式SPI_Init(SPI2, SPI_InitStructure);/* Enable SPI2 */SPI_Cmd(SPI2, ENABLE); //使能SPI2外设 25Q64片选操作拉高 void hal_spi2CSDrive(unsigned char sta) {if(sta)GPIO_SetBits(GPIOB,GPIO_Pin_12); elseGPIO_ResetBits(GPIOB,GPIO_Pin_12); } SPI数据读写函数 SPI读写数据操作原理 SPI 读写操作图示分析 代码分析 //SPIx 读写一个字节 //返回值:读取到的字节 unsigned char hal_spi2ReadWriteByte(unsigned char TxData) { unsigned char retry0; while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE)RESET)//等待发送区空 {retry;if(retry200)return 0;} SPI_I2S_SendData(SPI2,TxData); retry0;while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE)RESET)// {retry;if(retry200)return 0;} return SPI_I2S_ReceiveData(SPI2);//SPI2-DR; //返回收到的数据 }
http://www.yutouwan.com/news/158556/

相关文章:

  • 高新公司网站建设电话杭州企业网站搭建
  • 英文网站外链查询网站开发合同受托方
  • 制作简历模板网站先做网站还是先备案
  • 免费企业网站模板 phpwordpress原创主题简单
  • 钦州网站建网站建设好的公司
  • 淮北市网站建设wordpress单击右键提示
  • 做一个营销型网站有哪些内容游戏网页设计素材
  • 龙岩做网站多少钱seo外链推广工具下载
  • 新网站上线怎么做seo小视频网站如何建设
  • 6个网站建设投广告的平台有哪些
  • 网站建设目标论文信用网站建设意见
  • 微信公众号怎么做链接网站吗网页设计作业报告范文
  • 网站开发有哪些框架ui人机界面设计
  • 卡盟网站建设西部数码怎么上传网站
  • 建立个人网站的详细步骤个人网页设计作品 布局
  • 加强网站集约化建设珠海企业网站制作公司
  • 中国建设部官方网站监理转注册衡阳市建设网站
  • 商机互联做的网站和推广怎么样火车头采集器和wordpress
  • 站长seo综合查询工具中信建设有限责任公司招聘2021
  • 新手怎么学习网站建设本地wordpress怎么弄网站
  • 官方网站欣赏资阳优化团队信息
  • 温州网站运营网站可以叫做系统吗
  • 企业网站搭建程序德阳网站建设网站
  • 网站怎么添加统计代码tornado做网站
  • 长沙微网站制作福州网站建设服务
  • 电子商务网站建设项目的阶段wordpress页面几层
  • 做商业网站要交税吗一个官网
  • 企业内部网站模板下载用手机做网站的软件
  • 可视化响应式网站建设购买腾讯备案网站
  • 网站建设功能最全的软件企业网站建设哪里好