欢迎来到天天文库
浏览记录
ID:51304987
大小:53.50 KB
页数:8页
时间:2020-03-10
《STM32对时钟芯片PCF8563的编程.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、这是用STM32对PCF8563编程的程序、模拟IIC,经验证可用~移植用到的文件:IIC.hIIC.cPCF8563.hPCF8563.c,我把它们全都复制到了这个Word文档里。使用要初始化的函数:voidPCF8563_Init(void).就唯一这个。全局变量:u8PCF8563_Time[7];程序初始的值是给PCF8563设置的时间,程序中读取返回的值是PCF8563当时的时间。我这里使用的IIC的SCL,SDA的引脚分别为PA.0PA.1,具体看IIC.h和IIC.C。只要修改好两个引脚的初始化配套你手上的板子这,就能成功移植~Dela
2、y_nus(20):这是一个延迟20us的函数。IIC.h:#ifndef_IIC_H_#define_IIC_H_#include"stm32f10x.h"/*Privatetypedef-----------------------------------------------------------*//*Privatedefine------------------------------------------------------------*//*#defineI2C_Speed100000#defineI2C1_SLAVE_ADD
3、RESS70xA0#defineI2C_PageSize256*///SCLPA0//SDAPA1#defineSCL_H()GPIO_SetBits(GPIOA,GPIO_Pin_0)#defineSCL_L()GPIO_ResetBits(GPIOA,GPIO_Pin_0)#defineSDA_H()GPIO_SetBits(GPIOA,GPIO_Pin_1)#defineSDA_L()GPIO_ResetBits(GPIOA,GPIO_Pin_1)//返回0,和1#defineRead_SDA()GPIO_ReadInputDataBit(GP
4、IOA,GPIO_Pin_1)u8IIC_ReadByte(void);voidIIC_WriteByte(u8byte);voidIIC_WaitAck(void);voidIIC_Stop(void);voidIIC_Start(void);voidIIC_Init(void);voidI2C_Ack(void);voidI2C_NoAck(void);//取回八个字节的数据:秒,分,时,天,星期,月份,年份。#endifIIC.c:#include"IIC.h"#include"delay.h"/**/voidIIC_Init(void){GP
5、IO_InitTypeDefGPIO_InitStructure;/*ConfigureI2C1pins:SCLandSDA*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0
6、GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;//开漏输出,可以在不用改变成输入的情
7、况下读取IO的电平GPIO_Init(GPIOA,&GPIO_InitStructure);SCL_H();//拉高SDA_H();}voidIIC_Start(void){/*SDA_H();SCL_H();delay_nus(20);SDA_L();delay_nus(20);*/SDA_H();SCL_H();delay_nus(20);SDA_L();delay_nus(20);SDA_L();delay_nus(20);}voidIIC_Stop(void){SCL_L();//1delay_nus(20);//2SDA_L();//3.1
8、,2,3这三行不可缺少delay_nus(20);SCL_H();delay_nus(20);SDA_H();delay_nus(20);}voidIIC_WaitAck(void){u16k;SCL_L();SDA_H();delay_nus(20);SCL_H();k=0;while((Read_SDA()!=0)&&(k<60000))k++;delay_nus(20);SCL_L();delay_nus(20);}voidIIC_WriteByte(u8byte){u8i=0;for(i=0;i<8;i++){SCL_L();delay_nu
9、s(20);if(byte&0x80){SDA_H();}else{SDA_L();}delay_nus(2
此文档下载收益归作者所有