STM32F103DS1302驱动程序Word下载.docx
- 文档编号:22053740
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:16
- 大小:87.83KB
STM32F103DS1302驱动程序Word下载.docx
《STM32F103DS1302驱动程序Word下载.docx》由会员分享,可在线阅读,更多相关《STM32F103DS1302驱动程序Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
BRR=GPIO_Pin_0
#definedatsetGPIOE->
BSRR=GPIO_Pin_0
#definedatredGPIO_ReadInputDataBit(GPIOE,GPIO_Pin_0)//¶
Á
È
¡
Ê
¾
Ý
#defineDS1302EnableHpfDS1302WritByte(control_add,0x80)//´
ò
¿
ª
±
£
»
¤
#defineDS1302DisEnableHpfDS1302WritByte(control_add,0x00)//¹
Ø
Õ
#definetestdat0x25
#definecheaken0
#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;
GPIO_InitSyructure.GPIO_Mode=GPIO_Mode_Out_PP;
//Í
Æ
â
³
ö
GPIO_InitSyructure.GPIO_Pin=GPIO_Pin_0;
GPIO_InitSyructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitSyructure);
voidHpfDS1302PinClkRst(void)
GPIO_InitSyructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2;
voidHpfDS1302Init(void)
HpfDS1302PinClkRst();
clkreset;
rstreset;
//¼
Ä
´
æ
÷
½
Ó
µ
Í
ç
Ð
Ò
¸
·
º
voidHpfDS1302WritByte(u8addr,u8data)//Ð
Ô
É
Ñ
§
u8i;
HpfDS1302PinOutData();
addr&
=0xfe;
//Ð
¬
×
î
Î
ß
HpfDealyUs(dstim);
rstset;
for(i=0;
i<
8;
i++)//Ð
{
clkreset;
HpfDealyUs(dstim);
if(addr&
0x01)
datset;
else
datreset;
clkset;
addr>
>
=1;
//HpfDealyUs(10);
}
i++)//Ð
data
if(data&
data>
//Í
¹
Ü
u8HpfDS1302ReadByte(u8addr)//¶
Â
u8i,tem=0;
addr|=0x01;
//¶
1
//Æ
ô
i++)
HpfDS1302PinInData();
if(datred)
tem|=0x80;
if(i<
7)
tem>
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);
ñ
¼
²
¢
bcdÂ
DS1302bufferÖ
voidHpfDSTimrSet(void)
HpfWTime*p;
Ds1302Time*s;
p=GetWRTime();
s=&
DSTime;
s->
century=p->
MyYear/100+1;
year=HpfDSNumToBCD(p->
MyYear-(s->
century-1)*100);
month=HpfDSNumToBCD(p->
MyMon);
day=HpfDSNumToBCD(p->
MyDay);
hh=HpfDSNumToBCD(p->
MyHH);
mm=HpfDSNumToBCD(p->
MyMM);
ss=HpfDSNumToBCD(p->
MySS);
week=HpfDSNumToBCD(GetWNLWeek(p,s->
day));
//DS1302°
bufferÖ
ds1302Ö
voidHpfDS1302WritData(void)
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¶
voidHpfDS1302ReadData(void)
year=HpfDSBCDToNum(HpfDS1302ReadByte(year_add));
month=HpfDSBCDToNum(HpfDS1302ReadByte(month_add));
day=HpfDSBCDToNum(HpfDS1302ReadByte(day_add));
hh=HpfDSBCDToNum(HpfDS1302ReadByte(hh_add));
mm=HpfDSBCDToNum(HpfDS1302ReadByte(min_add));
ss=HpfDSBCDToNum(HpfDS1302ReadByte(sec_add));
week=HpfDSBCDToNum(HpfDS1302ReadByte(week_add));
voidHpfDS1302TimeSyn(void)
p->
MyYear=(DSTime.century-1)*100+DSTime.year;
MyMon=DSTime.month;
MyDay=DSTime.day;
MyHH=DSTime.hh;
MyMM=DSTime.mm;
MySS=DSTime.ss;
Ds1302Time*HpfDS1302GetTime(void)
HpfDS1302Init();
HpfDS1302ReadData();
return&
RAM²
Ù
//
//bufferÎ
ramaddrÎ
numÎ
ø
rwÎ
1£
í
0±
voidHpfDs1302RamWR(u8*buffer,u8ramaddr,u8num,u8rw)
if(ramaddr==RAM_Address29)
return;
if(rw)
for(i=0;
num;
{
DS1302DisEnable;
HpfDS1302WritByte(ramaddr+(i<
1),buffer[i]);
DS1302Enable;
}
else
buffer[i]=HpfDS1302ReadByte(ramaddr+(i<
1));
ì
é
è
Ç
1±
Ì
//µ
cheakenÎ
1Ê
õ
2±
þ
u8HpfDS1302Check(void)
u8testnum;
//DS1302DisEnable;
testnum=HpfDS1302ReadByte(RAM_Address29);
//DS1302Enable;
if(testnum==testdat)
return0;
#ifcheaken
DS1302DisEnable;
HpfDS1302WritByte(RAM_Address29,testdat);
DS1302Enable;
HpfDealyUs(10);
testnum=HpfDS1302ReadByte(RAM_Address29);
if(testnum==testdat)
return1;
#else
return1;
#endif
#if!
cheaken
return2;
#endif
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM32F103DS1302 驱动程序