版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/实验24C02连接在PF口/WP、A0、A1、A2都接地#include"stm32f10x_flash.h"#include"stm32f10x_gpio.h”#include"stm32f10xrcc.h"地址#defineAT24C020xa0/AT24C02/*/GPIO_InitTypeDefGPIO_InitStructure;/GPIOErrorStatusHSEStartUpStatus;unsignedcharCountl,Count2;unsignedintUSEC;staticvu32TimingDelay;unsign
2、edcharReadzfc;unsignedcharpDat8=0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55;unsignedcharR_Dat8;/*/voidRCC_Configuration(void);voidSysTick_Configuration(void);voidDelay_us_24C02(u32nTime);/*24C02*/时钟数据#defineSDataGPIO_Pin_6/I2C#defineSCLKGPIOPin7/I2C/*/#defineSCL(x)x?GPIO_SetBits(GPIOF,SCLK):GPIO_ResetBi
3、ts(GPIOF,SCLK)#defineSDA(x)x?GPIO_SetBits(GPIOF,SData):GPIO_ResetBits(GPIOF,SData)/*/u8ack;*起动总线函数函数原型:voidStart_I2c();功能:启动I2C总线,即发送I2C起始条件.*/voidStart_I2c()(SDA(1);/SDA=1;发送起始条件的数据信号Delay_us_24C02(1);SCL(1);/SCL=1;/起始条件建立时间大于4.7us,延时Delay_us_24C02(5);SDA(0);/SDA=0;Delay_us_24C02(5);SCL(0);/SCL=0;D
4、elay_us_24C02(2);/*/*发送起始信号*/起始条件锁定时间大于4s钳住I2C总线,准备发送或接收数据*/*结束总线函数函数原型:voidStop_I2c();功能:结束I2C总线,即发送I2C结束条件.*/voidStop_I2c()(发送结束条件的数据信号发送结束条件的时钟信号结束条件建立时间大于4sSDA(0);/SDA=0;/Delay_us_24C02(1);/SCL(1);/SCL=1;Delay_us_24C02(5);SDA(0);/SDA=1;发送I2C总线结束信号Delay_us_24C02(4);/*字节数据发送函数函数原型:voidSendByte(UCH
5、ARc);功能:将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对此状态位进行操作.(不应答或非应答都使ack=0)发送数据正常,ack=1;ack=0表示被控器无应答或损坏。*/voidSendByte(unsignedcharc)(unsignedcharBitCnt;for(BitCnt=0;BitCnt<8;BitCnt+)/要传送的数据长度为8位(if(c<<BitCnt)&0x80)SDA(1);/SDA=1;判断发送位elseSDA(0);/SDA=0Delay_us_24C02(1);SCL(1);/SCL=1置时钟线为高,通知被控器开始
6、接收数据位Delay_us_24C02(5);/保证时钟高电平周期大于4sSCL(0);/SCL=0Delay_us_24C02(2);SDA(1);/SDA=1位发送完后释放数据线,准备接收应答位Delay_us_24C02(2);SCL(1);/SCL=1Delay_us_24C02(3);if(GPIO_ReadInputDataBit(GPIOF,SData)=1)ack=0;elseack=1;/判断是否接收到应答信号SCL(0);/SCL=0;Delay_us_24C02(3);/*字节数据接收函数函数原型:UCHARRcvByte();功能:用来接收从器件传来的数据,并判断总线错
7、误(不发应答信号),发完后请用应答函数应答从机。*/unsignedcharRcvByte()(unsignedcharretc;unsignedcharBitCnt;retc=0;SDA(1);/SDA=1置数据线为输入方式for(BitCnt=0;BitCnt<8;BitCnt+)(Delay_us_24C02(1);SCL(0);/SCL=0置时钟线为低,准备接收数据位Delay_us_24C02(5);/时钟低电平周期大于4.7sSCL(1);/SCL=1置时钟线为高使数据线上数据有效Delay_us_24C02(2);retc=retc<<1;if(GPIO_Rea
8、dInputDataBit(GPIOF,SData)=1)retc=retc+1;/SDA=1读数据位,接收的数据位放入retc中Delay_us_24C02(2);SCL(0);/SCL=0;Delay_us_24C02(2);return(retc);/*应答子函数函数原型:voidAck_I2c(bita);功能:主控器进行应答信号(可以是应答或非应答信号,由位参数a决定)*/voidAck_I2c(u8a)if(a=0)SDA(0);/SDA=0;在此发出应答或非应答信号elseSDA(1);/SDA=1;Delay_us_24C02(3);SCL(1);/SCL=1;Delay_us
9、_24C02(4);/时钟低电平周期大于4sSCL(0);/SCL=0;清时钟线,钳住I2C总线以便继续接收Delay_us_24C02(2);/AT2402的功能函数/*向有子地址器件发送多字节数据函数函数原型:bitISendStr(UCHARsla,UCHARsuba,ucahr*s,UCHARno);功能:从启动总线到发送地址,子地址,数据,结束总线的全过程,从器件地址sla,子地址suba,发送内容是s指向的内容,发送no个字节。如果返回1表示操作成功,否则操作有误。注意:使用前必须已结束总线。*u8ISendStr(unsignedcharsla,unsignedcharsuba,
10、unsignedchar*s,unsignedcharno)(unsignedchari;启动总线*/发送器件地址*/发送器件子地址*/发送数据*/结束总线*/Start_I2c();/*SendByte(sla);/*if(ack=0)return(0);SendByte(suba);/*if(ack=0)return(0);for(i=0;i<no;i+)(SendByte(*s);/*if(ack=0)return(0);s+;Stop_I2c();/*return(1);/*向有子地址器件读取多字节数据函数函数原型:bitRecndStr(UCHARsla,UCHARsuba,u
11、cahr*s,UCHARno);功能:从启动总线到发送地址,子地址,读数据,结束总线的全过程,从器件地址sla,子地址suba,读出的内容放入s指向的存储区,读no个字节。如果返回1表示操作成功,否则操作有误。注意:使用前必须已结束总线。*/u8IRcvStr(unsignedcharsla,unsignedcharsuba,unsignedchar*s,unsignedcharno)(unsignedchari;启动总线*/发送器件地址*/发送器件子地址*/重新启动总线*/Start_I2c();/*SendByte(sla);/*if(ack=0)return(0);SendByte(su
12、ba);/*if(ack=0)return(0);Start_I2c();/*SendByte(sla+1);if(ack=0)return(0);for(i=0;i<no-1;i+)(*s=RcvByte();/*Ack_I2c(0);/*s+;*s=RcvByte();Ack_I2c(1);/*Stop_I2c();/*return(1);发送数据*/发送就答位*/发送非应位*/结束总线*/voidDelay(vu32nCount)(for(;nCount!=0;nCount-);voidDelay_us_24C02(u32nTime)(unsignedintUSEC=0;while
13、(USEC!=10000)(USEC+;intmain()(#ifdefDEBUGdebug();/在线调试使用#endifRCC_Configuration();/系统时钟配置函数/NVIC_Configuration();/NVIC配置函数/SysTick_Configuration();/Systick配置函数/启动GPI。模块时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);/把调试设置普通IO口GPIO_PinRemapConfig(GPIO_R
14、emap_SWJ_Disable,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;/所有GPIO为同一类型端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;/推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;/输出的最大频率为50HZGPIO_Init(GPIOB,&GPIO_InitStructure);/初始化GPIOB口GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;/所有GPIO为同一类型端口GPI
15、O_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;/推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;/输出的最大频率为50HZGPIO_Init(GPIOF,&GPIO_InitStructure);/初始化GPIOB口开漏输出/输出的最大频率为GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;/GPIO_InitStructure.GPIO_Speed=GPIO_Speed_5
16、0MHz;50HZ初始化GPIOA口GPIO_Init(GPIOF,&GPIO_InitStructure);/GPIO_Write(GPIOB,0xffff);/将GPIOB16个端口全部置为高电while(1)/=IIC读取if(Readzfc=1)IRcvStr(AT24C02,0,&R_Dat0,8);Readzfc=0;if(R_Dat2=0x55)GPIO_Write(GPIOB,0xffff);Delay(0x3fffff);GPIO_Write(GPIOB,0x0000);Delay(0x3fffff);Readzfc=0;if(Readzfc=0)(ISend
17、Str(AT24C02,0,&pDat0,8);Readzfc=1;/*配置RCC*/voidRCC_Configuration(void)(/复位RCW卜部设备寄存器到默认值RCC_DeInit();/打开外部高速晶振RCC_HSEConfig(RCC_HSE_ON);/等待外部高速时钟准备好HSEStartUpStatus=RCC_WaitForHSEStartUp();if(HSEStartUpStatus=SUCCESS)/夕卜部高速时钟已经准另U好(/开启FLASH的预取功能FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable
18、);/FLASH延迟2个周期FLASH_SetLatency(FLASH_Latency_2);/配置AHB(HCLK)寸钟=SYSCLKRCC_HCLKConfig(RCC_SYSCLK_Div1);/配置APB2(PCLK2神=AHB时钟RCC_PCLK2Config(RCC_HCLK_Div1);/配置APB1(PCLK1)#=AHB1/2时钟RCC_PCLK1Config(RCC_HCLK_Div2);/配置PLL时钟=外部高速晶体时钟*9PLLCLK=8MHz*9=72MHzRCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);/使能PLL时钟RCC_PLLCmd(ENABLE);/等待PLL时钟就绪while(RCC_GetFlagStatus(RCC_FLAG_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版汽车销售合同担保法执行合同3篇
- 2025年环保节能建筑材料供应合同3篇
- 2025年度个人汽车贷款购车合同(新能源汽车购置补贴合同)3篇
- 长沙幼儿师范高等专科学校《美国文学史及选读(2)》2023-2024学年第一学期期末试卷
- 二零二五年度文化产业股权投资保密及运营管理协议3篇
- 校园心理咨询服务体系的完善与创新
- 2025年度夫妻忠诚协议履行监督与违约追究协议4篇
- 学生实训前安全教育的重要性与策略
- 心理教育课程在学生心理健康中的重要性
- 个人车辆抵押权协议标准范本2024版
- 三角形与全等三角形复习教案 人教版
- 2024年1月高考适应性测试“九省联考”英语 试题(学生版+解析版)
- 《朝天子·咏喇叭-王磐》核心素养目标教学设计、教材分析与教学反思-2023-2024学年初中语文统编版
- 成长小说智慧树知到期末考试答案2024年
- 红色革命故事《王二小的故事》
- 海洋工程用高性能建筑钢材的研发
- 英语48个国际音标课件(单词带声、附有声国际音标图)
- GB/T 6892-2023一般工业用铝及铝合金挤压型材
- 冷库安全管理制度
- 2023同等学力申硕统考英语考试真题
- 家具安装工培训教案优质资料
评论
0/150
提交评论