資源簡介
DS1339時鐘芯片源碼驅動,經編寫測試,已完成,可移植到任何單片機上。
MCU用的是STM32F205,注意操作步驟

代碼片段和文件信息
#include?“common.h“
#include?“stdio.h“
#include?“string.h“
#include?“ds1339.h“
#include?“usart.h“
#include?“syswork.h“
void?DS_IO_Config(void)
{
????GPIO_InitTypeDef?GPIO_InitStructure;
????
????RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE?ENABLE);?
????GPIO_InitStructure.GPIO_Pin?=??DS_SCL_PIN;
????GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_OUT;
????GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
????GPIO_InitStructure.GPIO_OType?=?GPIO_OType_OD;
????GPIO_InitStructure.GPIO_PuPd?=?GPIO_PuPd_NOPULL;
????GPIO_Init(DS_IIC_IO?&GPIO_InitStructure);
????
????GPIO_InitStructure.GPIO_Pin?=?DS_SDA_PIN;
????GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_OUT;
????GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
????GPIO_InitStructure.GPIO_OType?=?GPIO_OType_OD;
????GPIO_InitStructure.GPIO_PuPd?=?GPIO_PuPd_NOPULL;???
????GPIO_Init(DS_IIC_IO?&GPIO_InitStructure);
????DS_SCL_L;??//釋放時鐘線
????DS_SDA_H;??//釋放數據線
}
void?DS_IIC_Start(void)
{
????DS_SDA_H;
????DS_SCL_H;
????DelayUS(5);
????DS_SDA_L;
????DelayUS(5);
????DS_SCL_L;
}
void?DS_IIC_Stop(void)
{
????DS_SCL_L;
????DS_SDA_L;
????DelayUS(5);
????DS_SCL_H;
????DelayUS(5);
????DS_SDA_H;
????DelayUS(5);
}
bool_t??DS_IIC_Wait_Ack(void)
{
????uint16_t?u16ErrTime?=?0xFFF;
????
????DS_SDA_H;
????DS_SCL_H;
????while((DS_SDA_STATU)?&&?(u16ErrTime?>?0))
????{
????????u16ErrTime?--;?
????}
????DS_SCL_L;
????DelayUS(5);
????
????return?((u16ErrTime?==?0)???FALSE?:?TRUE);
}
void?DS_IIC_Send_Ack(void)
{
????DS_SDA_L;
????DelayUS(5);
????DS_SCL_H;
????DelayUS(5);
????DS_SCL_L;
????DelayUS(5);
}
void?DS_IIC_Send_NoAck(void)
{
????DS_SDA_H;
????DelayUS(5);
????DS_SCL_H;
????DelayUS(5);
????DS_SCL_L;
????DelayUS(5);
}
void?DS_IIC_Write8Bit(uint8_t?data)
{
????uint8_t?i?=?0;
????
????for(i?=?0;?i?8;?i++)
????{
????????DS_SCL_L;
????????if(data?&?0x80)?{?DS_SDA_H;?}
????????else?{?DS_SDA_L;?}
????????DelayUS(5);
????????DS_SCL_H;
????????DelayUS(5);
????????data?<<=?1;
????}
????DS_SCL_L;???
????DelayUS(5);
}
uint8_t?DS_IIC_Read8Bit(void)
{
????uint8_t?data?=?0;
????uint8_t?i?=?0;
????
????DS_SDA_H;?????//釋放數據線
????for(i?=?0;?i?8;?i++)
????{
????????data?<<=?1;
????????DS_SCL_L;
????????DelayUS(5);
????????DS_SCL_H;
????????DelayUS(5);
????????if(DS_SDA_STATU)
????????{
????????????data?|=?0x01;
????????}
????}
????DS_SCL_L;
????DelayUS(5);
????return?data;
}
bool_t?DS_WriteByte(uint8_t?addr?uint8_t?data)
{
????bool_t?ret?=?FALSE;
????
????if(addr?????{
????????DS_IIC_Start();
????????DS_IIC_Write8Bit(DS_WRITE_CMD);
????????DS_IIC_Wait_Ack();
????????DS_IIC_Write8Bit(addr);
????????DS_IIC_Wait_Ack();
????????DS_IIC_Write8Bit(data);
????????DS_IIC_Wait_Ack();
????????DS_IIC_Stop();
????????DelayUS(10);
????????
????????ret?=?TRUE;
????}
????
????return?ret;
}
uint8_t?DS_ReadByte(uint8_t?addr)
{
????uint8_t?data?=?0;
????
????if(addr??
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????10058??2015-10-22?10:39??ds1339\ds1339.c
?????文件???????4318??2015-10-20?17:50??ds1339\ds1339.h
?????文件????1521690??2015-10-14?16:19??ds1339\DS1339B_cn.pdf
?????文件?????712819??2015-10-14?16:19??ds1339\DS1339_datasheet.pdf
?????文件?????144384??2015-10-14?16:19??ds1339\DS1339硬件.doc
?????文件??????67072??2015-10-14?16:19??ds1339\為什么晶振的頻率是32.768kHz.doc
?????目錄??????????0??2015-10-22?10:44??ds1339
-----------?---------??----------?-----??----
??????????????2460341????????????????????7
評論
共有 條評論