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

网站结构组成部分有那些谷歌关键词挖掘工具

网站结构组成部分有那些,谷歌关键词挖掘工具,网站设计的几大标准,可信赖的做pc端网站前言 本篇文章属于stm32单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 STM32入门教程-2023版 细…

前言

本篇文章属于stm32单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。

STM32入门教程-2023版 细致讲解 中文字幕_哔哩哔哩_bilibili

一、SPI通信

1.硬件电路规定 

2.移位示意图 

 3.软件时序规定

 

4.实际通信时序

区别于I2C是对寄存器进行操作,SPI通信的从机会定义一个指令集,起始条件后,主机给从机发一个指令完成相应任务即可

第一个字节为写指令0x02,第二三四个字节为地址,地址高位先行,第五个字节是写入的数据

第一个字节为写指令0x02,第二三四个字节为地址,第五个字节进行交换字节,主机发送一个0xFF或0x00把从机发送的数据交换回来

二、W25Q64

1.简介

2.硬件电路

3.W25Q64框图 

把8MB的内存分为128个块(Block),每个块又分为16个扇(Sector),每个扇又分16页(Page) ,每页256B

4.Flash操作注意事项

5.具体细节详见W25Q64的参考手册 

三、软件SPI读写W25Q64

1.MySPI.c

#include "stm32f10x.h"                  // Device headervoid MySPI_W_SS(uint8_t BitValue)
{GPIO_WriteBit(GPIOA, GPIO_Pin_4, (BitAction)BitValue);
}void MySPI_W_SCK(uint8_t BitValue)
{GPIO_WriteBit(GPIOA, GPIO_Pin_5, (BitAction)BitValue);
}void MySPI_W_MOSI(uint8_t BitValue)
{GPIO_WriteBit(GPIOA, GPIO_Pin_7, (BitAction)BitValue);
}uint8_t MySPI_R_MISO(void)
{return GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6);
}void MySPI_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);MySPI_W_SS(1);MySPI_W_SCK(0);
}void MySPI_Start(void)
{MySPI_W_SS(0);
}void MySPI_Stop(void)
{MySPI_W_SS(1);
}uint8_t MySPI_SwapByte(uint8_t ByteSend)
{uint8_t i, ByteReceive = 0x00;for (i = 0; i < 8;i++){MySPI_W_MOSI(ByteSend & (0x80 >> i));MySPI_W_SCK(1);if (MySPI_R_MISO() == 1) {ByteReceive |= (0x80 >> i);}MySPI_W_SCK(0);}return ByteReceive;
}

其中交换字节函数还可写为

uint8_t MySPI_SwapByte(uint8_t ByteSend)
{uint8_t i;for (i = 0; i < 8;i++){MySPI_W_MOSI(ByteSend & 0x80);ByteSend <<= 1;MySPI_W_SCK(1);if (MySPI_R_MISO() == 1) {ByteSend |= 0x01;}MySPI_W_SCK(0);}return ByteSend;
}

这样效率更高,但会改变ByteSend的值

2.W25Q64.c

#include "stm32f10x.h"                  // Device header
#include "MySPI.h"
#include "W25Q64_Ins.h"void W25Q64_Init(void)
{MySPI_Init();
}void W25Q64_ReadID(uint8_t *MID, uint16_t *DID)
{MySPI_Start();MySPI_SwapByte(W25Q64_JEDEC_ID);*MID = MySPI_SwapByte(W25Q64_DUMMY_BYTE);*DID = MySPI_SwapByte(W25Q64_DUMMY_BYTE);*DID <<= 8;*DID |= MySPI_SwapByte(W25Q64_DUMMY_BYTE);MySPI_Stop();
}void W25Q64_WriteEnable(void)
{MySPI_Start();MySPI_SwapByte(W25Q64_WRITE_ENABLE);MySPI_Stop();
}void W25Q64_WaitBusy(void)
{uint32_t TimeOut = 100000;MySPI_Start();MySPI_SwapByte(W25Q64_READ_STATUS_REGISTER_1);while((MySPI_SwapByte(W25Q64_DUMMY_BYTE) & 0x01) == 0x01){TimeOut--;if (TimeOut == 0){break;}}MySPI_Stop();
}void W25Q64_PageProgram(uint32_t Address, uint8_t *DataArray, uint16_t Count)
{uint16_t i;W25Q64_WriteEnable();MySPI_Start();MySPI_SwapByte(W25Q64_PAGE_PROGRAM);MySPI_SwapByte(Address >> 16);MySPI_SwapByte(Address >> 8);MySPI_SwapByte(Address);for (i = 0;i < Count;i++){MySPI_SwapByte(DataArray[i]);}MySPI_Stop();	W25Q64_WaitBusy();
}void W25Q64_SectorErase(uint32_t Address)
{W25Q64_WriteEnable();MySPI_Start();MySPI_SwapByte(W25Q64_SECTOR_ERASE_4KB);MySPI_SwapByte(Address >> 16);MySPI_SwapByte(Address >> 8);MySPI_SwapByte(Address);MySPI_Stop();	W25Q64_WaitBusy();
}void W25Q64_ReadData(uint32_t Address, uint8_t *DataArray, uint32_t Count)
{uint32_t i;MySPI_Start();MySPI_SwapByte(W25Q64_READ_DATA);MySPI_SwapByte(Address >> 16);MySPI_SwapByte(Address >> 8);MySPI_SwapByte(Address);for (i = 0;i < Count;i++){DataArray[i] = MySPI_SwapByte(W25Q64_DUMMY_BYTE);}MySPI_Stop();	
}

3.main.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "W25Q64.h"uint8_t MID;
uint16_t DID;uint8_t ArrayWrite[] = {0xB1, 0xB2, 0xB3, 0xB4};
uint8_t ArrayRead[4];int main(void)
{OLED_Init();W25Q64_Init();OLED_ShowString(1, 1, "MID:   DID:");OLED_ShowString(2, 1, "W:");OLED_ShowString(3, 1, "R:");W25Q64_ReadID(&MID, &DID);OLED_ShowHexNum(1, 5, MID, 2);OLED_ShowHexNum(1, 12, DID, 4);W25Q64_SectorErase(0x000000);W25Q64_PageProgram(0x000000, ArrayWrite, 4);W25Q64_ReadData(0x000000, ArrayRead, 4);OLED_ShowHexNum(2, 3, ArrayWrite[0], 2);OLED_ShowHexNum(2, 6, ArrayWrite[1], 2);OLED_ShowHexNum(2, 9, ArrayWrite[2], 2);OLED_ShowHexNum(2, 12, ArrayWrite[3], 2);OLED_ShowHexNum(3, 3, ArrayRead[0], 2);OLED_ShowHexNum(3, 6, ArrayRead[1], 2);OLED_ShowHexNum(3, 9, ArrayRead[2], 2);OLED_ShowHexNum(3, 12, ArrayRead[3], 2);while (1){}
}

四、硬件SPI读写W25Q64

1.SPI通信外设

2.SPI框图

3.SPI基本结构

4.主模式全双工连续传输(较为复杂,性能好)

5.非连续传输(较为简单,性能差一点)

6.代码部分

只需更改MySPI.c部分的内容即可

配置好硬件SPI

#include "stm32f10x.h"                  // Device headervoid MySPI_W_SS(uint8_t BitValue)
{GPIO_WriteBit(GPIOA, GPIO_Pin_4, (BitAction)BitValue);
}void MySPI_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);SPI_InitTypeDef SPI_InitStructure;SPI_InitStructure.SPI_Mode = SPI_Mode_Master;SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128;SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;SPI_InitStructure.SPI_CRCPolynomial = 7;SPI_Init(SPI1, &SPI_InitStructure);SPI_Cmd(SPI1, ENABLE);MySPI_W_SS(1);
}void MySPI_Start(void)
{MySPI_W_SS(0);
}void MySPI_Stop(void)
{MySPI_W_SS(1);
}uint8_t MySPI_SwapByte(uint8_t ByteSend)
{while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) != SET);SPI_I2S_SendData(SPI1, ByteSend);while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) != SET);return SPI_I2S_ReceiveData(SPI1);
}


文章转载自:
http://dinncodisintegration.ydfr.cn
http://dinncotelecentric.ydfr.cn
http://dinncochemisette.ydfr.cn
http://dinncoyttrotantalite.ydfr.cn
http://dinncotrepang.ydfr.cn
http://dinncofilmmaker.ydfr.cn
http://dinncohispaniola.ydfr.cn
http://dinncoendodontia.ydfr.cn
http://dinncobutyrinase.ydfr.cn
http://dinncogyri.ydfr.cn
http://dinncotrematode.ydfr.cn
http://dinncopeninsula.ydfr.cn
http://dinncoirruption.ydfr.cn
http://dinncoindependent.ydfr.cn
http://dinncovehemency.ydfr.cn
http://dinncofraulein.ydfr.cn
http://dinncoultimatism.ydfr.cn
http://dinncoichthyoacanthotoxism.ydfr.cn
http://dinncogeopolitist.ydfr.cn
http://dinncoconciliation.ydfr.cn
http://dinncocarcase.ydfr.cn
http://dinncohaptical.ydfr.cn
http://dinncotheanthropical.ydfr.cn
http://dinncothermogeography.ydfr.cn
http://dinncovictualing.ydfr.cn
http://dinncoglycerate.ydfr.cn
http://dinncoenchondroma.ydfr.cn
http://dinncomodifiable.ydfr.cn
http://dinncoconchae.ydfr.cn
http://dinncoglide.ydfr.cn
http://dinncoulan.ydfr.cn
http://dinncoplafond.ydfr.cn
http://dinncoliker.ydfr.cn
http://dinncofurbearer.ydfr.cn
http://dinncononbelligerent.ydfr.cn
http://dinncocytovirin.ydfr.cn
http://dinncoepigeous.ydfr.cn
http://dinncomummery.ydfr.cn
http://dinncocirclorama.ydfr.cn
http://dinncolucinda.ydfr.cn
http://dinncosignpost.ydfr.cn
http://dinncotrow.ydfr.cn
http://dinncofilth.ydfr.cn
http://dinncoprofit.ydfr.cn
http://dinncoinsulin.ydfr.cn
http://dinncoorganize.ydfr.cn
http://dinncocommiserative.ydfr.cn
http://dinncogangsterism.ydfr.cn
http://dinncothistle.ydfr.cn
http://dinncotrine.ydfr.cn
http://dinncoalcestis.ydfr.cn
http://dinncohatikvah.ydfr.cn
http://dinncoprig.ydfr.cn
http://dinncovenereal.ydfr.cn
http://dinncoathwarthawse.ydfr.cn
http://dinncomargay.ydfr.cn
http://dinncounrwa.ydfr.cn
http://dinncopastille.ydfr.cn
http://dinncocranebill.ydfr.cn
http://dinncotentage.ydfr.cn
http://dinncoparodos.ydfr.cn
http://dinncoundissolved.ydfr.cn
http://dinncosupraglottal.ydfr.cn
http://dinncohekla.ydfr.cn
http://dinncoreticulocytosis.ydfr.cn
http://dinncoinsomniac.ydfr.cn
http://dinncofaa.ydfr.cn
http://dinncoautogravure.ydfr.cn
http://dinncoarrow.ydfr.cn
http://dinncofrijole.ydfr.cn
http://dinncocastnet.ydfr.cn
http://dinncodartboard.ydfr.cn
http://dinncocornetti.ydfr.cn
http://dinncousumbura.ydfr.cn
http://dinncobawneen.ydfr.cn
http://dinncoslag.ydfr.cn
http://dinncoescapeproof.ydfr.cn
http://dinncotortilla.ydfr.cn
http://dinncomonarchal.ydfr.cn
http://dinncoolid.ydfr.cn
http://dinncohecatomb.ydfr.cn
http://dinncoifr.ydfr.cn
http://dinncorutherfordium.ydfr.cn
http://dinncoparakiting.ydfr.cn
http://dinncocumin.ydfr.cn
http://dinncohuckster.ydfr.cn
http://dinncoelytron.ydfr.cn
http://dinncoeliminant.ydfr.cn
http://dinncosubatmospheric.ydfr.cn
http://dinncoplenty.ydfr.cn
http://dinncoglauberite.ydfr.cn
http://dinncokemalism.ydfr.cn
http://dinncoretrenchment.ydfr.cn
http://dinncopolyglottous.ydfr.cn
http://dinncobanksman.ydfr.cn
http://dinncorejigger.ydfr.cn
http://dinncosobbing.ydfr.cn
http://dinncocarnificial.ydfr.cn
http://dinncobelongings.ydfr.cn
http://dinncoismailian.ydfr.cn
http://www.dinnco.com/news/89561.html

相关文章:

  • 做日本贸易哪个网站好海外营销推广
  • 四川做网站的公司哪家好旅游最新资讯 新闻
  • 西地那非的危害5g网络优化
  • html制作静态网站模板疫情最严重的三个省
  • 网站开发运营深圳网络营销策划有限公司
  • 直接下载app到手机上windows优化大师软件介绍
  • 做ppt好的网站百度账号注销
  • 如何做网站内页排名网络推广都是收费
  • 东莞网站关键词优化哪家好谷歌商店app下载
  • 帮做软件测试的网站网络营销推广的
  • 四川德阳做网站和app河北seo推广方案
  • 阜康网站建设网站流量统计软件
  • 网站开发的工作要求上海seo网络优化
  • 佛山用户网站建设长春关键词搜索排名
  • 网站域名查询百度推广关键词技巧定价
  • 大学生做网站怎么赚钱百度搜索引擎属于什么引擎
  • 橙光音乐一家做音乐的网站营销网站建设大概费用
  • 找谁做网站百度联盟广告点击一次收益
  • 顺德建网站的公司搜索引擎优化策略不包括
  • 网站建设的职责十大门户网站
  • 示范专业网站建设石家庄seo扣费
  • 关于征求网站建设的通知怎么建自己的网站?
  • 做nba直播网站有哪些曼联目前积分榜
  • wordpress主题demo抖音搜索优化
  • 有专门做消除网站上对公司不利的网络营销是指
  • 哈尔滨网站制作招聘外贸seo推广公司
  • 做dota2菠菜网站企业seo顾问服务阿亮
  • 网站页面结构百度知道下载
  • wordpress 获取内容seo包年优化费用
  • 保定软件开发公司搜索引擎优化有哪些要点