STM32对时钟芯片PCF8563的编程

STM32对时钟芯片PCF8563的编程

ID:42269578

大小:53.51 KB

页数:8页

时间:2019-09-11

STM32对时钟芯片PCF8563的编程_第1页
STM32对时钟芯片PCF8563的编程_第2页
STM32对时钟芯片PCF8563的编程_第3页
STM32对时钟芯片PCF8563的编程_第4页
STM32对时钟芯片PCF8563的编程_第5页
资源描述:

《STM32对时钟芯片PCF8563的编程》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

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。只要修改好两个引脚的初始化配套你手上的板子这,就能成功移植~Delay_nus(20):这是一个延迟20

2、us的函数。IIC.h:#ifndef_IIC_H_#define_IIC_H_#include"stm32f10x.h"/*Privatetypedef-----------------------------------------------------------*//*Privatedefine------------------------------------------------------------*//*#defineI2C_Speed100000#defineI2C1_SLAVE_ADDRESS70xA0#defineI2C_PageSize256*///S

3、CLPA0//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(GPIOA,GPIO_Pin_1)u8IIC_ReadByte(void);voidIIC_WriteByte(

4、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){GPIO_InitTypeDefGPIO_InitStructure;/*ConfigureI2C1pins:SCLandSDA*/RCC_APB2

5、PeriphClockCmd(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;//开漏输出,可以在不用改变成输入的情况下读取IO的电平GPIO_Init(GPIOA,&GPIO_InitStructure);SCL_H();//拉高SDA_H();}voidIIC_Start(void){/*S

7、DA_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,2,3这三行不可缺少delay_nus(20);SCL_H();delay_nus(20);SDA_H();delay_nus(20);}voidIIC_WaitAck(void){u16k;SCL_L();SDA

8、_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_nus(20);if(byte&0x80){SDA_H();}else{SDA_L();}delay_nus(2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。