rtc芯片测试软件,希望有做过stm32下RTC芯片R8025 AC的朋友看看

我的配置和时间设置程序如下,但测试时发现RTC的时钟不会从0-23循环,而是往24加,天数月数也不会变动,网上也没太多这方面资料,请做过的朋友指点下

465bea2fe8731bbe4155d1b0082c53c0.gif

/*

*通过I2C配置8025   采用多次发送提高发送成功率

*/

void RX8025T_Init(void)

{

uint8_t i;

for (i=0; i<3; i++)

{

if (TRUE == I2C_WriteByte(0x00,0x0d,I2C_RTC_write_ADDRESS))//扩展寄存器初始化

{

break;

}

}

for (i=0; i<3; i++)

{

if (TRUE == I2C_WriteByte(0x00,0x0e,I2C_RTC_write_ADDRESS))// 标志寄存器初始化

{

break;

}

}

for (i=0; i<3; i++)

{

if (TRUE == I2C_WriteByte(0x40,0x0f,I2C_RTC_write_ADDRESS))// 控制寄存器初始化

{

break;

}

}

}//end RX8025T_Init(void)

//判断是否掉过电,掉电则初始化

void RTC_Init(void)

{

uint8_t i, data_read;

for (i=0; i<3; i++)

{

if (TRUE == I2C_ReadByte(&data_read, 1, 0x0e,I2C_RTC_write_ADDRESS))

{

break;

}

}

if (0x02 == (data_read & 0x02))  //判断是否掉过电,掉电则初始化

{

RX8025T_Init();

}

}

void RTC_Write_Time(void)

{

uint8_t i;

RTC_TimeData[6] = HEX_To_BCD(RTC_TimeData[6]<100?RTC_TimeData[6]:0);//年 设置数字不能大于理论值

RTC_TimeData[5] = HEX_To_BCD(RTC_TimeData[5]<13?RTC_TimeData[5]:0); //月

RTC_TimeData[4] = HEX_To_BCD(RTC_TimeData[4]<32?RTC_TimeData[4]:0); //日

RTC_TimeData[3] = 0x01;//星期 设为 sunday 不做要求

RTC_TimeData[2] = HEX_To_BCD(RTC_TimeData[2]<24?RTC_TimeData[2]:0); //时

RTC_TimeData[1] = HEX_To_BCD(RTC_TimeData[1]<60?RTC_TimeData[1]:0); //分

RTC_TimeData[0] = HEX_To_BCD(RTC_TimeData[0]<60?RTC_TimeData[0]:0); //秒

RTC_Init();

//写入时间设置

for (i=0; i<3; i++)

{

if (TRUE == I2C_BufferWrite(RTC_TimeData, 16, 0x00, I2C_RTC_write_ADDRESS))

{

break;

}

}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值