• 大小: 2KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-11
  • 语言: 其他
  • 标签: S-35390A  

资源简介

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

评论

共有 条评论

相关资源