gpt4 book ai didi

c - 需要使用指针显示时间

转载 作者:行者123 更新时间:2023-11-30 15:41:07 25 4
gpt4 key购买 nike

在下面的代码中,我尝试显示时钟时间,这是我使用其他函数获得的。从 main 调用此函数时,我将十六进制形式的地址传递给此函数,并且我想打印时间,但打印不正确。

void DS1307_GetTime(unsigned char *h_ptr, unsigned char *m_ptr, unsigned char *s_ptr)
{
I2C_Start(); // Start I2C communication
DS1307_Write(DS1307_ID); // connect to DS1307 by sending its ID on I2c Bus
DS1307_Write(SEC_ADDRESS); // Request Sec RAM address at 00H
I2C_Stop(); // Stop I2C communication after selecting Sec Register

I2C_Start(); // Start I2C communication
DS1307_Write(0xD1); // connect to DS1307( under Read mode) by sending its ID on I2c Bus

*s_ptr = DS1307_Read(); I2C_Ack(); // read second and return Positive ACK
*m_ptr = DS1307_Read(); I2C_Ack(); // read minute and return Positive ACK
*h_ptr = DS1307_Read(); I2C_NoAck(); // read hour and return Negative/No ACK

*s_ptr = bcd_to_dec(*s_ptr);
*m_ptr = bcd_to_dec(*m_ptr);
*h_ptr = bcd_to_dec(*h_ptr);

printf("Time is in ss:mm:hh = %u:%u:%u\n", s_ptr, m_ptr, h_ptr);

I2C_Stop(); // Stop I2C communication after reading the Time
}

我认为我的问题出在我的指针声明或 printf 语句中,但我无法弄清楚问题到底是什么。

最佳答案

您需要取消引用 printf 中的指针。现在您正在打印 s_ptr、m_ptr 和 h_ptr 的指针值(即地址)。

printf("时间为 ss:mm:hh = %u:%u:%u\n", *s_ptr, *m_ptr, *h_ptr);

(当然,这是假设您的其他内部时间生成函数按预期工作)

关于c - 需要使用指针显示时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20651062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com