我正在尝试手动设置RTC时钟。 当自动doen时,这是工作代码:
clock.setDateTime((__DATE__, __TIME__));
但现在我想手动设置它,这就是我想要的:
char dateTime[20];
strcat(dateTime, "2017,03,22,16,20,04");
//clock.setDateTime((__DATE__, __TIME__));
clock.setDateTime(dateTime);
我收到以下错误(在最后一行):
error: invalid conversion from 'char*' to 'uint32_t {aka long unsigned int}' [-fpermissive]
如何解决?
编辑: 这就是setDateTime的定义方式:
void setDateTime(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second);
答案 0 :(得分:2)
setDateTime()
将日期作为一系列整数:
setDateTime(year, month, day, hours, minutes, seconds);
奖金:根据man strcat
:
char *strcat(char *dest, const char *src);
描述
strcat()
函数将 src 字符串附加到 dest 字符串,...
因为你这样使用它:
char dateTime[20];
strcat(dateTime, "2017,03,22,16,20,04");
将"2017,03,22,16,20,04"
追加到单位化内存中,这是未定义的行为。
答案 1 :(得分:1)
setDateTime()
接受int
作为参数,但你给它char
数组。
电话应该是:
clock.setDataTime(2017, 3, 22, 16, 20, 4);