STM32F103DS1302驱动程序文件_第1页
STM32F103DS1302驱动程序文件_第2页
STM32F103DS1302驱动程序文件_第3页
STM32F103DS1302驱动程序文件_第4页
STM32F103DS1302驱动程序文件_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.

/

#include"stm32f10x_conf.h"

#include"mrhh_f1.h"

#include"HPF_TIME.h"

#include"HpfDS1302Drive.h"

//

// DS1302Çý¶¯F103IO¿ÚÅäÖÃ

// Ver1.0ByMrHDS

// 2016,4.23

//

#if1

#define clkreset GPIOE->BRR=GPIO_Pin_1

#define clkset GPIOE->BSRR=GPIO_Pin_1

#definerstreset GPIOE->BRR=GPIO_Pin_2

#definerstset GPIOE->BSRR=GPIO_Pin_2

#definedatreset GPIOE->BRR=GPIO_Pin_0

#definedatset GPIOE->BSRR=GPIO_Pin_0

#definedatred GPIO_ReadInputDataBit<GPIOE,GPIO_Pin_0> //¶ÁÈ¡Êý¾Ý

#defineDS1302Enable HpfDS1302WritByte<control_add,0x80> //´ò¿ª±£»¤

#defineDS1302DisEnable HpfDS1302WritByte<control_add,0x00> //¹Ø±Õ±£»¤

#definetestdat 0x25

#definecheaken 0

#endif

#definedstim1

Ds1302TimeDSTime={21,16,1,1,12,0,0,1};

voidHpfDS1302PinInData<void>

{

GPIO_InitTypeDefGPIO_InitStructure;

RCC_APB2PeriphClockCmd<RCC_APB2Periph_GPIOE,ENABLE>;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD; //ÉÏÀ­ÊäÈë

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init<GPIOE,&GPIO_InitStructure>;

}

voidHpfDS1302PinOutData<void>

{

GPIO_InitTypeDefGPIO_InitSyructure;

RCC_APB2PeriphClockCmd<RCC_APB2Periph_GPIOE,ENABLE>;

GPIO_InitSyructure.GPIO_Mode=GPIO_Mode_Out_PP; //ÍÆÃâÊä³ö

GPIO_InitSyructure.GPIO_Pin=GPIO_Pin_0;

GPIO_InitSyructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init<GPIOE,&GPIO_InitSyructure>;

}

voidHpfDS1302PinClkRst<void>

{

GPIO_InitTypeDefGPIO_InitSyructure;

RCC_APB2PeriphClockCmd<RCC_APB2Periph_GPIOE,ENABLE>;

GPIO_InitSyructure.GPIO_Mode=GPIO_Mode_Out_PP; //ÍÆÃâÊä³ö

GPIO_InitSyructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2;

GPIO_InitSyructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init<GPIOE,&GPIO_InitSyructure>;

}

voidHpfDS1302Init<void>

{

HpfDS1302PinClkRst<>;

clkreset;

rstreset;

//¼Ä´æÆ÷Ö±½ÓÅäÖÃÊä³öµÍµçƽ

}

//

// DS1302Çý¶¯Ð´ÈëÒ»¸öµØÖ·ºÍÊý¾Ý

// Ver1.0ByMrHDS

// 2016,4.23

//

voidHpfDS1302WritByte<u8addr,u8data> //дÈëÊý¾ÝÔÚÉÏÉýÑØÓÐЧ

{

u8i;

HpfDS1302PinOutData<>;

addr&=0xfe; //дÊý¾Ý£¬µØÖ·×îµÍλΪ¸ß

rstreset;

clkreset;

HpfDealyUs<dstim>;

rstset;

HpfDealyUs<dstim>;

for<i=0;i<8;i++> // дÈëµØÖ·

{

clkreset;

HpfDealyUs<dstim>;

if<addr&0x01>

datset;

else

datreset;

clkset;

HpfDealyUs<dstim>;

addr>>=1;

// HpfDealyUs<10>;

}

for<i=0;i<8;i++> //дÈëÊý¾Ýdata

{

clkreset;

HpfDealyUs<dstim>;

if<data&0x01>

datset;

else

datreset;

clkset;

HpfDealyUs<dstim>;

data>>=1;

}

rstreset; //Í£Ö¹×ÜÏß

clkreset;

}

//

// DS1302Çý¶¯¶Áȡһ¸öÊý¾Ý

// Ver1.0ByMrHDS

// 2016,4.23

//

u8HpfDS1302ReadByte<u8addr> //¶Áȡһ¸öÊý¾ÝÔÚϽµÑØÓÐЧ£¬Ð´ÈëµØÖ·ÔÚÉÏÉýÑØÓÐЧ

{

u8i,tem=0;

addr|=0x01; //¶ÁÊý¾Ý£¬µØÖ·×îµÍλΪ1

rstreset;

clkreset;

HpfDealyUs<dstim>;

rstset; //Æô¶¯×ÜÏß

HpfDealyUs<dstim>;

HpfDS1302PinOutData<>;

for<i=0;i<8;i++>

{

clkreset;

HpfDealyUs<dstim>;

if<addr&0x01>

datset;

else

datreset;

clkset;

HpfDealyUs<dstim>;

addr>>=1;

}

HpfDS1302PinInData<>;

for<i=0;i<8;i++>

{

clkreset;

HpfDealyUs<dstim>;

if<datred>

tem|=0x80;

if<i<7>

tem>>=1;

clkset;

HpfDealyUs<dstim>;

}

rstreset;

clkreset;

returntem;

}

u8HpfDSBCDToNum<u8BCD> //8421BCDÂëת»»ÎªÊý×Ö

{

u8temp,temp1;

temp1=BCD&0x0f;

temp=<<BCD&0xf0>>>4>*10+temp1;

returntemp;

}

u8HpfDSNumToBCD<u8NUM> //Êý×Öת»»Îª8421BCDÂë

{

u8temp;

temp=<<NUM/10><<4>|<NUM%10>;

returntemp;

}

//

// DS1302Çý¶¯»ñÈ¡Óû§Ê±¼ä²¢×ª»»ÎªbcdÂë²¢¸´ÖƵ½DS1302bufferÖÐ

// Ver1.0ByMrHDS

// 2016,4.23

//

voidHpfDSTimrSet<void>

{

HpfWTime*p;

Ds1302Time*s;

p=GetWRTime<>;

s=&DSTime;

s->century=p->MyYear/100+1;

s->year=HpfDSNumToBCD<p->MyYear-<s->century-1>*100>;

s->month=HpfDSNumToBCD<p->MyMon>;

s->day=HpfDSNumToBCD<p->MyDay>;

s->hh=HpfDSNumToBCD<p->MyHH>;

s->mm=HpfDSNumToBCD<p->MyMM>;

s->ss=HpfDSNumToBCD<p->MySS>;

s->week=HpfDSNumToBCD<GetWNLWeek<p,s->day>>;

}

//

// DS1302°ÑbufferÖеÄʱ¼äÊý¾ÝдÈëµ½ds1302ÖÐ

// Ver1.0ByMrHDS

// 2016,4.23

//

voidHpfDS1302WritData<void>

{

Ds1302Time*s;

s=&DSTime;

DS1302DisEnable; //¹Ø±Õд±£»¤

HpfDS1302WritByte<sec_add,0x80>; //ÔÝͣʱÖÓ

HpfDS1302WritByte<year_add,s->year>;

HpfDS1302WritByte<month_add,s->month>;

HpfDS1302WritByte<day_add,s->day>;

HpfDS1302WritByte<hh_add,s->hh>;

HpfDS1302WritByte<min_add,s->mm>;

HpfDS1302WritByte<sec_add,s->ss>;

HpfDS1302WritByte<week_add,s->week>;

HpfDS1302WritByte<RAM_Address29,testdat>;

DS1302Enable;

}

//

// DS1302¶Áȡʱ¼äÊý¾Ý²¢×ª»»ÎªÊý×Ö²¢´æÈ뻺´æÆ÷ÖÐ

// Ver1.0ByMrHDS

// 2016,4.23

//

voidHpfDS1302ReadData<void>

{

Ds1302Time*s;

s=&DSTime;

s->year=HpfDSBCDToNum<HpfDS1302ReadByte<year_add>>;

s->month=HpfDSBCDToNum<HpfDS1302ReadByte<month_add>>;

s->day=HpfDSBCDToNum<HpfDS1302ReadByte<day_add>>;

s->hh=HpfDSBCDToNum<HpfDS1302ReadByte<hh_add>>;

s->mm=HpfDSBCDToNum<HpfDS1302ReadByte<min_add>>;

s->ss=HpfDSBCDToNum<HpfDS1302ReadByte<sec_add>>;

s->week=HpfDSBCDToNum<HpfDS1302ReadByte<week_add>>;

}

//

// DS1302°Ñʱ¼äͬ²½µ½Óû§Ê±¼ä

// Ver1.0ByMrHDS

// 2016,4.23

//

voidHpfDS1302TimeSyn<void>

{

HpfWTime*p;

p=GetWRTime<>;

p->MyYear=<DSTime.century-1>*100+DSTime.year;

p->MyMon=DSTime.month;

p->MyDay=DSTime.day;

p->MyHH=DSTime.hh;

p->MyMM=DSTime.mm;

p->MySS=DSTime.ss;

}

//

// DS1302Çý¶¯»ñÈ¡»º´æÆ÷µØÖ·

// Ver1.0ByMrHDS

// 2016,4.23

//

Ds1302Time*HpfDS1302GetTime<void>

{

HpfDS1302Init<>;

HpfDS1302ReadData<>;

return&DSTime;

}

//

// DS1302Çý¶¯RAM²Ù×÷

// Ver1.0ByMrHDS

// 2016,4.23

//

// bufferΪ»º´æÆ÷µØÖ·£¬ramaddrΪÄÚ´æµØÖ·£¬numΪÁ¬Ðø²Ù×÷µÄ·¶Î§£¬rwΪ1£¬±íʾдÈëÊý¾Ý£¬Îª0±íʾ¶ÁÈ¡Êý¾Ý

//

//

//

//

//

//

voidHpfDs1302RamWR<u8*buffer,u8ramaddr,u8num,u8rw>

{

u8i;

if<ramaddr==RAM_Address29>

return;

if<rw>

{

for<i=0;i<num;i++>

{

DS1302DisEnable;

HpfDS1302WritByte<ramaddr+<i<<1>,buffer[i]>;

DS1302Enable;

}

}

else

{

for<i=0;i<num;i++>

buffe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论