Thread 中讨论的其他器件:EK-TM4C1294XL
您好!
我从论坛上的前一个回答中获得了以下代码。现在、我想设置从今天开始的时间、如2017年10月11日、从现在开始的时间、如18:05:26、任何人都请告诉我如何在下面 的代码中设置上述值
//此示例要使用的全局数据
//
//
time_t calender_write;
time_t calender_read;
struct tm TM1 ={50、59、23、5、6、2014-1900、5、0、0};//计算 epoch 之后的秒数
struct tm tm2 ={0};//回读日历
uint8_t buf_er[]="错误的初始化结构!\n";
uint8_t buf_Rz[48];
void UARTSend (uint8_t * pui8Buffer、uint32_t ui32Count);
//
//
//驱动程序库遇到错误时调用的错误例程。
//
//
#ifdef 调试
无效
_error__(char * pcFilename、uint32_t ui32Line)
{
}
#endif
//
//
//休眠处理程序
//
//
无效休眠处理程序(无效)
{
//复位中断标志
uint32_t ui32Status = HibernateIntStatus (1);
ROM_HibernateIntClear (ui32Status);
//
calender_read = HibernateRTCGet ();
ulocaltime (calender_read、&tm2);
//格式化 UART 的输出
strfttime (((char *) buf_Rz、32、"%c\r\n"、&tm2);
UARTSend (((uint8_t *) buf_Rz、32);
//保持中断触觉
HibernateRTCMatchSet (0、HibernateRTCGet ()+5);
}
//
//
//向 UART 发送字符串。
//
//
无效
UARTSend (uint8_t * pui8缓冲器、uint32_t ui32计数)
{
//
//循环,同时有更多字符要发送。
//
while (ui32Count---)
{
//
//将下一个字符写入 UART。
//
ROM_UARTCharPut (UART0_BASE、* pui8Buffer++);
}
}
int main (void){
//
//为中断处理程序启用怠惰堆栈。 这允许使用浮点
//在中断处理程序中使用的指令,但代价是
//额外的堆栈用法。
//
ROM_FPUEnable();
ROM_FPULazyStackingEnable();
//
//将时钟设置为直接从晶体运行。
//
ROM_SysCtlClockSet (SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHz);
//
//启用用于板载 LED 的 GPIO 端口。
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
//
//为 LED 启用 GPIO 引脚(PF2)。
//
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_2);
//
//启用此示例使用的外设。
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART0);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
//
//启用处理器中断。
//
ROM_IntMasterEnable();
//
//将 GPIO A0和 A1设置为 UART 引脚。
//
ROM_GPIOPinConfigure (GPIO_PA0_U0RX);
ROM_GPIOPinConfigure (GPIO_PA1_U0TX);
ROM_GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);
//
//将 UART 配置为115、200、8-N-1操作。
//
ROM_UARTConfigSetExpClk (UART0_BASE、ROM_SysCtlClockGet ()、115200、
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));
//
//配置休眠模块
//
ROM_HibernateEnableExpClk (0);
ROM_HibernateRTCEnable();
HibernateClockConfig (HIBERNATE_OSC_HIGRHIVE);
//
HibernateIntRegister (HibernateHandler);
HibernateIntEnable (HIBERNATE_INT_RTC_MATH_0);
HibernateWakeSet (HIBERNATE_WAKE_RTC);
//为 RTC 设置计数器模式
休眠计数器模式(HIBERNATE_COUNTER_RTC);
//
//计算要写入的日历数据
//
calender_write = umktime (&TM1);
if (calender_write ==(uint32_t)(-1))){
UARTSend (((uint8_t *) buf_er、sizeof (buf_er));
while (1);
}
否则{
HibernateRTCSet (calender_write);
//在一秒后为 RTC 设置中断。
HibernateRTCMatchSet (0、HibernateRTCGet ()+5);
}
while (1){
//不做任何事情-安全
}
//返回0;
}
提前感谢。