版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.\//实验24C02连接在PF口//WP、A0、A1、A2都接地#include"stm32f10x_flash.h"谢谢阅读#include"stm32f10x_gpio.h"精品文档放心下载#include"stm32f10x_rcc.h"感谢阅读#define
AT24C020xa0
//AT24C02
地址/******************************** 变精品文档放心下载---------------------------------------------------------*/感谢阅读GPIO_InitTypeDefGPIO_InitStructure; //GPIO精品文档放心下载ErrorStatusHSEStartUpStatus;谢谢阅读
量
定
义unsignedcharCount1,Count2;感谢阅读unsignedint USEC;staticvu32TimingDelay;unsignedcharReadzfc;unsignedcharpDat[8]={0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55};谢谢阅读unsignedcharR_Dat[8];/*********************************声明函数voidRCC_Configuration(void);谢谢阅读
-----------------------------------------------*/感谢阅读voidSysTick_Configuration(void);谢谢阅读voidDelay_us_24C02(u32nTime);感谢阅读/************************************24C02硬件接口******************************/谢谢阅读#define#define
SDataSCLK
GPIO_Pin_6GPIO_Pin_7
//I2C//I2C
时钟数据/******************************** 宏 定 义谢谢阅读*******************************************/感谢阅读#defineSCL(x) x?GPIO_SetBits(GPIOF,SCLK) :GPIO_ResetBits(GPIOF,SCLK)谢谢阅读#define SDA(x) x?GPIO_SetBits(GPIOF,SData):GPIO_ResetBits(GPIOF,SData)谢谢阅读/******************************** 变 量谢谢阅读*******************************************/精品文档放心下载u8ack;/*******************************************************************精品文档放心下载起动总线函数.\函数原型:void Start_I2c();功能: 启动I2C总线,即发送I2C起始条件.精品文档放心下载********************************************************************/精品文档放心下载voidStart_I2c(){SDA(1);//SDA=1;发送起始条件的数据信号Delay_us_24C02(1);SCL(1);//SCL=1;Delay_us_24C02(5);//起始条件建立时间大于4.7us,延时SDA(0);//SDA=0;/*发送起始信号*/Delay_us_24C02(5);//起始条件锁定时间大于4μsSCL(0);//SCL=0;/*钳住I2C总线,准备发送或接收数据*/Delay_us_24C02(2);}/*******************************************************************谢谢阅读结束总线函数函数原型:void Stop_I2c();功能: 结束I2C总线,即发送I2C结束条件.精品文档放心下载********************************************************************/感谢阅读voidStop_I2c(){SDA(0); //SDA=0; //发送结束条件的数据信号精品文档放心下载Delay_us_24C02(1); //发送结束条件的时钟信号感谢阅读SCL(1) ;//SCL=1;结束条件建立时间大于4μs精品文档放心下载Delay_us_24C02(5);SDA(0); //SDA=1;发送I2C总线结束信号谢谢阅读Delay_us_24C02(4);}/*******************************************************************谢谢阅读字节数据发送函数函数原型:void SendByte(UCHARc);谢谢阅读功能: 将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对此状态位进行操作.(不应答或非应答都使ack=0)精品文档放心下载发送数据正常,ack=1;ack=0表示被控器无应答或损坏。精品文档放心下载********************************************************************/谢谢阅读void SendByte(unsignedchar c)谢谢阅读{unsignedchar BitCnt;.\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置时钟线为高,通知被控器开始接收数据位精品文档放心下载Delay_us_24C02(5); //保证时钟高电平周期大于4μs精品文档放心下载SCL(0); //SCL=0}Delay_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);}/*******************************************************************精品文档放心下载字节数据接收函数函数原型:UCHAR RcvByte();功能: 用来接收从器件传来的数据,并判断总线错误(不发应答信号),发完后请用应答函数应答从机。感谢阅读********************************************************************/精品文档放心下载unsignedchar RcvByte(){unsignedcharunsignedchar
retc;BitCnt;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.7μs精品文档放心下载SCL(1); //SCL=1置时钟线为高使数据线上数据有效谢谢阅读Delay_us_24C02(2);retc=retc<<1;if(GPIO_ReadInputDataBit(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_24C02(4);//时钟低电平周期大于4μs精品文档放心下载SCL(0) ; //SCL=0;清时钟线,钳住I2C总线以便继续接收感谢阅读Delay_us_24C02(2);}//AT2402的功能函数/*******************************************************************感谢阅读向有子地址器件发送多字节数据函数函数原型:bit ISendStr(UCHARsla,UCHARsuba,ucahr*s,UCHARno);感谢阅读功能: 从启动总线到发送地址,子地址,数据,结束总线的全过程,从器件地址sla,子地址suba,发送内容是s指向的内容,发送no个字节。如果返回1表示操作成功,否则操作有误。精品文档放心下载注意: 使用前必须已结束总线。********************************************************************/精品文档放心下载.\u8ISendStr(unsignedchar sla,unsignedchar suba,unsignedchar *s,unsignedchar no)感谢阅读{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);}/*******************************************************************感谢阅读向有子地址器件读取多字节数据函数函数原型:bit RecndStr(UCHARsla,UCHARsuba,ucahr*s,UCHARno);感谢阅读功能: 从启动总线到发送地址,子地址,读数据,结束总线的全过程,从器件精品文档放心下载地址sla,子地址suba,读出的内容放入s指向的存储区,读no个字节。感谢阅读如果返回1表示操作成功,否则操作有误。注意: 使用前必须已结束总线。********************************************************************/感谢阅读u8IRcvStr(unsignedchar sla,unsignedchar suba,unsignedchar *s,unsignedchar no)谢谢阅读{unsignedchari;Start_I2c();SendByte(sla);
/*启动总线*//*发送器件地址*/if(ack==0)return(0);SendByte(suba);
/*发送器件子地址*/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)感谢阅读{unsignedint USEC=0;while(USEC!=10000){USEC++;}}intmain(){#ifdefDEBUGdebug(); //在线调试使用#endifRCC_Configuration(); //系统时钟配置函数谢谢阅读//NVIC_Configuration();
//NVIC配置函数//SysTick_Configuration();谢谢阅读
//Systick配置函数//启动GPIO模块时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF|RCC_APB2Periph_GPIOB|RCC_精品文档放心下载.\APB2Periph_AFIO,ENABLE);//把调试设置普通IO口GPIO_PinRemapConfig(GPIO_Remap_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; //输出的最大频率为50HZ感谢阅读GPIO_Init(GPIOB,&GPIO_InitStructure); //初始化GPIOB端口谢谢阅读GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;//所有GPIO为同一类型端口感谢阅读GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽输出谢谢阅读GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //输出的最大频率为50HZ精品文档放心下载GPIO_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_50MHz; //输出的最大频率为50HZ感谢阅读GPIO_Init(GPIOF,&GPIO_InitStructure); //初始化GPIOA端口精品文档放心下载GPIO_Write(GPIOB,0xffff); //将GPIOB16个端口全部置为高电谢谢阅读while(1){//========================IIC读取谢谢阅读if(Readzfc==1){IRcvStr(AT24C02,0,&R_Dat[0],8);精品文档放心下载Readzfc=0;}if(R_Dat[2]==0x55){GPIO_Write(GPIOB,0xffff);Delay(0x3fffff);GPIO_Write(GPIOB,0x0000);Delay(0x3fffff);}Readzfc=0;if(Readzfc==0){.\ISendStr(AT24C02,0,&pDat[0],8);感谢阅读Readzfc=1;}}}/******************************************************************************谢谢阅读** 配置RCC*******************************************************************************精品文档放心下载/voidRCC_Configuration(void)感谢阅读{//复位RCC外部设备寄存器到默认值RCC_DeInit();//打开外部高速晶振RCC_HSEConfig(RCC_HSE_ON);精品文档放心下载//等待外部高速时钟准备好HSEStartUpStatus=RCC_WaitForHSEStartUp();谢谢阅读if(HSEStartUpStatus==SUCCESS) //外部高速时钟已经准别好谢谢阅读{//开启FLASH的预取功能FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);精品文档放心下载//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_F
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产品标识和可追溯性培训教材课件
- 食品安全从农田到餐桌
- 糖尿病护理措施及治疗
- 2024年对苯二胺项目资金筹措计划书代可行性研究报告
- 智慧粮库解决方案
- 肺部感染治疗新进展
- 水源热泵制冷工作原理培训
- 销售年中规划
- 整式的乘法说课稿
- 好玩的纸说课稿
- 保健按摩师(高级)技能理论考试题库(含答案)
- 2024冶金等工业企业较大以上安全风险目录
- 公民科学素质大赛参考试题库600题(含答案)
- 期中模拟检测(1-4单元)(试题)(含答案)-2024-2025学年四年级上册数学北师大版
- 餐饮服务课件 学习任务3 西餐宴会服务
- 第五单元测试卷(单元测试)-2024-2025学年六年级上册语文统编版
- 《2023级学生手册》奖、惩资助、文明部分学习通超星期末考试答案章节答案2024年
- 国开2024年秋《机械制图》形考作业1-4答案
- 大学生生涯发展展示 (修改版)
- 义务教育物理课程标准(2022年版)测试题文本版(附答案)
- 大学生职业生涯规划智慧树知到课后章节答案2023年下抚顺职业技术学院
评论
0/150
提交评论