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

vue做pc网站ps网页制作素材

vue做pc网站,ps网页制作素材,qq邮箱网页版登录入口,wordpress移动版修改本专栏记录STM32开发各个功能的详细过程#xff0c;方便自己后续查看#xff0c;当然也供正在入门STM32单片机的兄弟们参考#xff1b; 本小节的目标是#xff0c;系统主频64 MHZ,采用高速外部晶振#xff0c;实现PB11,PB10 引脚模拟I2C 时序#xff0c;对M24C08 的EEPRO… 本专栏记录STM32开发各个功能的详细过程方便自己后续查看当然也供正在入门STM32单片机的兄弟们参考 本小节的目标是系统主频64 MHZ,采用高速外部晶振实现PB11,PB10 引脚模拟I2C 时序对M24C08 的EEPROM 进行读。 原理通过模拟I2C接(PB10:CLK,PB11:DTA)与M24C08 EEPROM进行读写实验。 涉及到的知识配置I2C通信STM32CubeMX的使用 文章目录 1 新建工程2 配置SWD下载引脚3 配置RCC4 设置系统主频5 生成工程6 增加代码实现PB10,PB11 模拟I2C 时序从而实现EEPROM数据读写 1 新建工程 点击File 菜单下的New Project 选择芯片型号如下图所示先输入芯片型号目前这边输入STM32G030C8 双击选择就确定了芯片型号界面会变成如下图所示 2 配置SWD下载引脚 如下图所示在PinoutConfiguration 栏目的System Core 下先点击SYS,再勾选Serial Wire 框 配置好SWD 下载引脚设置 3 配置RCC 如下图先点击RCC,在HSE 配置中选择Crystal/Ceramic Resonator 外部晶振设 4 设置系统主频 如下图 先点击Clock Configuration 栏目,按下图的1,2,3,4 步骤完成系统64MHZ 主频设置 5 生成工程 按照下图的步骤进行项目配置项目名称和路径设置等生成项目的类型选择STM32CubeIDE我这里以STM32CubeIDE为例如果你要试用keil5那就选择MDK-RAM如果要使用makefile就选择Makefile注意项目名称和路径不要有中文名 最后全部设置完毕后点击create code生成项目代码 生成的工程如下图所示 6 增加代码实现PB10,PB11 模拟I2C 时序从而实现EEPROM数据读写 如下图所示在Core/Src下面增加24C08.c 文件里面是用I/O 口模拟I2C 总线实现EEPROM读写驱动。 24C08.h /* **------------------------------------------------------------------------------------------------------ ** Modified by: ** Modified date: ** Version: ** Descriptions: ********************************************************************************************************/ #ifndef __24C02_H #define __24C02_H/* Includes ------------------------------------------------------------------*//* Private define ------------------------------------------------------------*/ #define AT24C01A /* 24C01A,I2C时序和往后的24C02一样 */ //#define AT24C01 /* 24C01,I2C的时序和普通的有点不同 */#define ADDR_24LC02 0xA0 #define I2C_PAGESIZE 4 /* 24C01/01A页缓冲是4个 *//* Private function prototypes -----------------------------------------------*/ void I2C_Configuration(void); uint8_t I2C_Read(I2C_TypeDef *I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t *buf,uint16_t num); uint8_t I2C_Write(I2C_TypeDef *I2Cx,uint8_t I2C_Addr,uint8_t addr,uint8_t *buf,uint16_t num);#endif /*********************************************************************************************************END FILE *********************************************************************************************************/24C08.c/***************************************************************************//**文件: 24C08.c作者: Zhengyu https://gzwelink.taobao.com版本: V1.0.0时间: 20200401平台:MINI-G030C8T6*******************************************************************************/#include main.h#define EE_ADDR 0xa0//EEPROM地址地址管脚全接地为0xA0 #define EE_SCL_PIN GPIO_PIN_10 //模拟IIC的SCL信号 1.修改引脚即可修改IIC接口 #define EE_SDA_PIN GPIO_PIN_11 //模拟IIC的SDA信号 #define EE_IIC_SCL(val) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10,val) //SCL 输出高或者低 2.修改引脚即可修改IIC接口 #define EE_IIC_SDA(val) HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11,val) //SDA 输出高或者低 void EE_SDA_IN(void) //PB11配置成输入 { __HAL_RCC_GPIOB_CLK_ENABLE();//GPIO时钟使能GPIO_InitTypeDef GPIO_InitStruct {0};GPIO_InitStruct.Pin GPIO_PIN_11;GPIO_InitStruct.Mode GPIO_MODE_INPUT;GPIO_InitStruct.Pull GPIO_NOPULL;GPIO_InitStruct.Speed GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOB, GPIO_InitStruct); } void EE_SDA_OUT(void)//PB11配置成开漏输出 {__HAL_RCC_GPIOB_CLK_ENABLE();//GPIO时钟使能GPIO_InitTypeDef GPIO_InitStruct {0};GPIO_InitStruct.Pin GPIO_PIN_11;GPIO_InitStruct.Mode GPIO_MODE_OUTPUT_OD;GPIO_InitStruct.Pull GPIO_NOPULL;GPIO_InitStruct.Speed GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOB, GPIO_InitStruct);}void EE_SCK_OUT(void) //PB10配置成开漏输出 {__HAL_RCC_GPIOB_CLK_ENABLE();//GPIO时钟使能GPIO_InitTypeDef GPIO_InitStruct {0};GPIO_InitStruct.Pin GPIO_PIN_10;GPIO_InitStruct.Mode GPIO_MODE_OUTPUT_OD;GPIO_InitStruct.Pull GPIO_NOPULL;GPIO_InitStruct.Speed GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOB, GPIO_InitStruct); }//读DATA引脚状态 unsigned char EE_READ_SDA(void) { return HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_11); } /****************************************************************************** *函 数void EE_IIC_Delay(void) *功 能IIC延时 *参 数无 *返回值无 *备 注: 移植时只需要将EE_IIC_Delay()换成自己的延时即可,目前是在16M主频下运行大约等待10us *******************************************************************************/ void EE_IIC_Delay(uint16_t us) {uint16_t j;for(j0;jus;j){for(int i 0; i 20; i) {__asm(NOP);//等待1个指令周期系统主频16M}}} /****************************************************************************** *函 数void IIC_Init(void) *功 能IIC初始化 *参 数无 *返回值无 *备 注无 *******************************************************************************/void EE_IIC_Init(void) { EE_SCK_OUT();//CLK引脚配置成输出EE_SDA_OUT();//DATA引脚配置成输出EE_IIC_SCL(1);//CLK引脚输出高EE_IIC_SDA(1);//DATA引脚输出高 } //开始 void EE_IIC_Start(void) {EE_SDA_OUT(); //DATA引脚配置成输出EE_IIC_SDA(1);//DATA引脚输出高 EE_IIC_SCL(1);//CLK引脚输出高EE_IIC_Delay(4);//等待大约40usEE_IIC_SDA(0); //DATA引脚输出低EE_IIC_Delay(4);//等待大约40usEE_IIC_SCL(0); //CLK引脚输出低钳住I2C总线准备发送或接收数据 }//停止 void EE_IIC_Stop(void) {EE_SDA_OUT(); //DATA引脚配置成输出EE_IIC_SCL(0);//CLK引脚输出低EE_IIC_SDA(0); //DATA引脚输出低EE_IIC_Delay(4);//等待大约40usEE_IIC_SCL(1); //CLK引脚输出高EE_IIC_SDA(1); //DATA引脚输出高发送I2C总线结束信号EE_IIC_Delay(4);//等待大约40us }//等待应答 uint8_t EE_IIC_WaitAck(void) {uint8_t ucErrTime0;EE_SDA_IN(); //DATA引脚配置成输入 从机给一个低电平做为应答 EE_IIC_SDA(1);EE_IIC_Delay(1); EE_IIC_SCL(1);EE_IIC_Delay(1);//等待约10us while(EE_READ_SDA())//一直读直到读取到低电平应答{ucErrTime;if(ucErrTime250){EE_IIC_Stop();return 1;}}EE_IIC_SCL(0); //时钟输出0 return 0; } //发送应答 void EE_IIC_Ack(void) {EE_IIC_SCL(0);EE_SDA_OUT();EE_IIC_SDA(0);EE_IIC_Delay(1);EE_IIC_SCL(1);EE_IIC_Delay(2);EE_IIC_SCL(0); }//发送非应答 void EE_IIC_NAck(void) {EE_IIC_SCL(0);EE_SDA_OUT();EE_IIC_SDA(1);EE_IIC_Delay(1);EE_IIC_SCL(1);EE_IIC_Delay(1);EE_IIC_SCL(0); } //发送一个字节 void EE_IIC_SendByte(uint8_t data) { uint8_t t; EE_SDA_OUT(); EE_IIC_SCL(0); //拉低时钟开始数据传输for(t0;t8;t){ EE_IIC_SDA((data0x80)7);//发送数据EE_IIC_Delay(1); EE_IIC_SCL(1);data1;EE_IIC_Delay(1);EE_IIC_SCL(0); }EE_IIC_Delay(1); } //读取1字节 uint8_t EE_IIC_ReadByte(uint8_t ack) {uint8_t i,receive0;EE_SDA_IN(); //SDA设置为输入模式 等待接收从机返回数据for(i0;i8;i ){EE_IIC_SCL(0); EE_IIC_Delay(1);EE_IIC_SCL(1);receive1;if(EE_READ_SDA())receive; //读取从机发送的电平如果是高就记录高EE_IIC_Delay(1); } if(ack)EE_IIC_Ack(); //发送ACK elseEE_IIC_NAck(); //发送nACK return receive; }//从EE指定地址读取一个字节 uint8_t EE_IIC_ReadByteFromSlave(uint8_t I2C_Addr,uint8_t reg,uint8_t *buf) {EE_IIC_Start(); EE_IIC_SendByte(I2C_Addr); //发送从机地址if(EE_IIC_WaitAck()) //如果从机未应答则数据发送失败{EE_IIC_Stop();return 1;}EE_IIC_SendByte(reg); //发送寄存器地址EE_IIC_WaitAck(); EE_IIC_Start();EE_IIC_SendByte(I2C_Addr1); //进入接收模式 EE_IIC_WaitAck();*bufEE_IIC_ReadByte(0); EE_IIC_Stop(); //产生一个停止条件return 0; }//发送一个字节内容到EE指定地址 uint8_t EE_EE_IIC_SendByteToSlave(uint8_t I2C_Addr,uint8_t reg,uint8_t data) {EE_IIC_Start();EE_IIC_SendByte(I2C_Addr); //发送从机地址if(EE_IIC_WaitAck()){EE_IIC_Stop();return 1; //从机地址写入失败}EE_IIC_SendByte(reg); //发送寄存器地址EE_IIC_WaitAck(); EE_IIC_SendByte(data); if(EE_IIC_WaitAck()){EE_IIC_Stop(); return 1; //数据写入失败}EE_IIC_Stop(); //产生一个停止条件return 0; }然后如下图所示24C08.c 文件主要是把SCL 引脚改成PB10,SDA引脚改成PB11还有EEPROM 驱动所需的基本I/O 操作函数还有实现时序所需的等待函数。 然后打开main.c文件按照下图操作添加代码 extern void EE_IIC_Init(void); extern uint8_t EE_EE_IIC_SendByteToSlave(uint8_t I2C_Addr,uint8_t reg,uint8_t data); extern uint8_t EE_IIC_ReadByteFromSlave(uint8_t I2C_Addr,uint8_t reg,uint8_t *buf);unsigned char EEDATA;//存放EEPROM读取出来的数据1个字节EE_IIC_Init();//EEPROM管脚初始化配置管脚 EE_EE_IIC_SendByteToSlave(0xA0,0x00,0x55);//0地址存储0x55 HAL_Delay(10);//等待10ms EE_IIC_ReadByteFromSlave(0xA0,0x00,EEDATA);//从0地址读取1字节内容到EEDATA变量然后编译调试查看EEDATA变量的值结果如下图所示 我们写进去的值时0x55最后读出来的值是85U查一下ASCII码 0x55对应的就是85U证明我们的结果是对的证明此EEPROM读写实验成功。
http://www.hkea.cn/news/14269681/

相关文章:

  • 国外做任务网站有哪些手机网站开发服务商
  • 使用vue.js做企业网站关注清远发布
  • 网站搭建怎么收费保网微商城app下载
  • 建设局网站策划书电视台网站建设方案
  • 怎么在网上做装修网站没有域名怎么搭建网站
  • 找个人合伙做网站深圳工业设计公司排行榜
  • 泰安网站建设制作服务外贸公司网址
  • 把网站生成app的免费平台商业网点建设中心网站
  • 企业手机网站程序是什么软件开发公司哪里好
  • 关于咖啡厅网站建设的论文直播网站建设方案
  • 狠狠做网站 百度一下网站开发怎么入驻京东
  • 石碣网站建设淮安制作网站在那里
  • 大朗镇住房规划建设局网站东莞建设年审网站
  • 网站建设的解决办法网站外链优化
  • 现在做网站到底需要多少钱wordpress插件销售
  • 做企业网站需要注意什么鞍山市城市建设网站
  • 南宁微网站制作宿州品牌网站建设公司
  • 做网站发布信息趣夜传媒
  • 山东做网站公司哪家好重庆市建设工程管理信息网
  • 成都网站优化实战图片压缩wordpress
  • 网站上线过程ui设计做兼职的网站有哪些
  • 黄页网络的推广网站有哪些类型网站设计怎么用黑色
  • 有可以做推广的网站吗网站后台基本功能
  • 网站建设 业务员wordpress文章类插件
  • ppt网站模板网站建设与制作
  • 购物网站开发视频教程美橙网站产品详情
  • 做花茶网站解说网站建设方案策划书ppt
  • 内蒙住房和城乡建设部网站首页太原网站建设小程序
  • 网站建设在哪里进行网站首页快速收录
  • 广州做蛋糕的网站wordpress 微信连接数据库文件