資源簡介
S-35390A RTC讀寫程序,STM32單片機代碼,包含程序和頭文件。

代碼片段和文件信息
#include?“rtc.h“
#include?“delay.h“
////////////////////////////////////////////////////////////////////////////////// ?
??
//////////////////////////////////////////////////////////////////////////////////?
uint8_t?data;
void?RTC_Init(void)
{
????GPIO_InitTypeDef?GPIO_Initure;
????
????__HAL_RCC_GPIOC_CLK_ENABLE();???//使能GPIOC時鐘
????
????//PC23初始化設置
????GPIO_Initure.Pin=GPIO_PIN_2|GPIO_PIN_3;
????GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;??//推挽輸出
????GPIO_Initure.Pull=GPIO_PULLUP;??????????//上拉
????GPIO_Initure.Speed=GPIO_SPEED_HIGH;?????//高速
????HAL_GPIO_Init(GPIOC&GPIO_Initure);
????GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1;
????GPIO_Initure.Mode=GPIO_MODE_INPUT;
????GPIO_Initure.Pull=GPIO_PULLUP;??????????//上拉
????HAL_GPIO_Init(GPIOC&GPIO_Initure);
????
????RTC_SDA=1;
????RTC_SCL=1;??
}
//產生IIC起始信號
void?RTC_Start(void)
{
RTC_SDA_OUT();?? ??
RTC_SCL=1;
delay_us(5);
? RTC_SDA=0;//START:when?CLK?is?highDATA?change?form?high?to?low?
delay_us(5);
} ??
//產生IIC停止信號
void?RTC_Stop(void)
{
RTC_SDA_OUT();
RTC_SCL=1;
? delay_us(5);
RTC_SDA=1;
delay_us(4); ???
}
//等待應答信號到來
void?RTC_Write_Ack(void)
{
RTC_SDA_IN();
RTC_SCL=0;
delay_us(5); ?
RTC_SCL=1;
delay_us(5);
RTC_SCL=0;
delay_us(5);
RTC_SDA=0; ???
RTC_SDA_OUT();
delay_us(5);
}?
//產生ACK應答
void?RTC_Read_Ack(void)
{
RTC_SDA_OUT();
delay_us(5);
RTC_SDA=0;
delay_us(5);
RTC_SCL=1;
delay_us(5);
RTC_SCL=0;
delay_us(5);
RTC_SDA_IN();
delay_us(2);
}
? ?????
//IIC發送一個字節 ??
void?RTC_Send_Byte(u8?txd)
{????????????????????????
????u8?t;???
RTC_SDA_OUT();? ????
????RTC_SCL=0;
delay_us(5);
????for(t=0;t<8;t++)
????{??????????????
RTC_SCL=0;
delay_us(5);?
????????if(txd&0x01)RTC_SDA=1;
else?RTC_SDA=0;
????????txd>>=1;? ??
delay_us(5);???
RTC_SCL=1;
delay_us(5);?
????} ?
RTC_Write_Ack();
}? ????
//讀1個字節
u8?RTC_Read_Byte(u8?data)
{
unsigned?char?ireceive=0;
RTC_SDA_IN();
????for(i=0;i<8;i++?)
{
????????RTC_SCL=1;?
????????delay_us(5);
RTC_SCL=0;
????????receive>>=1;
????????if(READ_RTC_SDA)receive|=0x80;
delay_us(5);?
????} ?
????return?receive;
}
void?Clock_init(void)
{
RTC_Init();
RTC_Start();
RTC_Send_Byte(W_RTC_STATUS);
RTC_Send_Byte(W_RTC_24H);
RTC_Stop();
}
void?CLOCK_SetDate(u8?*Buffer)
{
????u8?iClock_RTC_Buffer[7];????
????for?(i=0;i<3;i++)???
????{???
????????Clock_RTC_Buffer[i]=((Buffer[i]/10)<<4)|(Buffer[i]%10);???
????????Clock_RTC_Buffer[i+4]=((Buffer[i+3]/10)<<4)|(Buffer[i+3]%10);???
????}???
????Clock_RTC_Buffer[3]=Buffer[6];//((Buffer[6]/10)<<4)|(Buffer[6]%10);???
????RTC_Start();?
????RTC_Send_Byte(W_RTC_YEAR);????
????//DISPLAY_HEX_CODE(708(unsigned?char?*)&Clock_RTC_Buffer[0]1);???
????for?(i=0;i<7;i++)????RTC_Send_Byte(Clock_RTC_Buffer[i]);????
????RTC_Stop();?
}
void?CLOCK_SetTime(u8?*Buffer)??????????????????????????????????????????????
{??????
????u8?iClock_RTC_Buffer[3]
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????4058??2019-01-16?21:37??rtc.c
?????文件????????1835??2019-01-16?21:38??rtc.h
- 上一篇:IE一鍵設置
- 下一篇:PIX2.4.6原理圖及PCB-EAGLE版本.rar
評論
共有 條評論