为什么gmtime()函数返回NULL?

时间:2016-04-05 07:28:08

标签: c date microcontroller epoch

我正在尝试使用STM32L051T6时间在epoch微控制器上设置RTC时间。以下是我的代码。

void Rtc_SetTime(uint32_t time_)
{
    struct tm* brokenTime;
    const time_t temp = 3600;

    brokenTime = gmtime(&temp);

    if (NULL == brokenTime)
    {
       printf("Error: Failed to convert time.\r\n");
    }
}

当我调用上面的功能时。它总是转到if语句并打印错误。我已经尝试将值3600,1459841178作为参数传递。都失败了。代码有什么问题?

2 个答案:

答案 0 :(得分:1)

我在这里找到了以下内容: http://support.raisonance.com/content/gmtime-and-localtime-broken-arm-gcc-lib

所以它可能没有实现....

  

我认为STM32F10x的arm-gcc lib中的gmtime和localtime已被破坏。

     

我在keil uVision尝试过并在那里工作得很好(无论如何,当地时间,   gmtime没有在keil中实现)。 gmtime和localtime正在搜索   链接时_sbrk。

     

" sbrkr.c :(。text + 0xc):未定义引用`_sbrk'"

答案 1 :(得分:0)

我使用了localtime()函数而不是gmtime(),它很好地解决了我的目的。