从c中的微控制器tm4c123获取时间戳
get the timestamp from microcontroller tm4c123 in c
我在一个使用微控制器 TM4C123 的小项目中工作。所以我想将数据从 microntroller 发送到 c 中的另一个微控制器。微控制器 TM4C123 具有 RTC 模块。所以我可以从那个微控制器得到时间。但是我不知道应该调用哪种方法来获取时间。有一个头文件 time.h 但我知道,我应该使用哪种方法。我的 data.Any 想法需要时间戳吗?
在嵌入式世界中,我们通常必须手工完成所有工作。在没有一些额外框架的情况下使用外围设备的预定义方法并不常见。微控制器的外围设备(包括实时时钟)通常通过寄存器连接。
芯片供应商通常会提供一些将地址映射到 variable/symbolic 常量名称的头文件,以便您可以轻松 read/write 它们。然后,您需要阅读数据表以确定 read/write 寄存器的内容以实现您想要的行为。
您很可能希望设置自己的定时器函数,例如 init_timer 和 get_current_time_stamp,它们依次适当地访问这些寄存器。祝你好运。
此外,请记住微控制器的 RTC 不太可能是非易失性的。这意味着它将在通电时重置。因此你需要想出一些电池方案来让它跟踪时间。
嗯,我是这样解决问题的:
int main(void){
SysCtlClockSet(SYSCTL_OSC_MAIN);
//enable the hibernation module
SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);
//SYSCTL_OSC_EXT32 is the rate of the clock supplied to the Hibernation
HibernateEnableExpClk(SYSCTL_OSC_EXT32);
HibernateClockConfig(HIBERNATE_OSC_HIGHDRIVE);
HibernateRTCDisable();
//set the value to 0
HibernateRTCSet(0);
HibernateRTCEnable();
//get starting values
unsigned long long sec = HibernateRTCGet();
unsigned int subsec = HibernateRTCSSGet();
while(1){
sec= HibernateRTCGet();
subsec=HibernateRTCSSGet()
}
}
这段代码展示了如何通过休眠模块使用实时时钟。 RTC 的时钟信号由外部 32.768-kHz 振荡器提供。应该记住,RTC 会在开机时重置。
我在一个使用微控制器 TM4C123 的小项目中工作。所以我想将数据从 microntroller 发送到 c 中的另一个微控制器。微控制器 TM4C123 具有 RTC 模块。所以我可以从那个微控制器得到时间。但是我不知道应该调用哪种方法来获取时间。有一个头文件 time.h 但我知道,我应该使用哪种方法。我的 data.Any 想法需要时间戳吗?
在嵌入式世界中,我们通常必须手工完成所有工作。在没有一些额外框架的情况下使用外围设备的预定义方法并不常见。微控制器的外围设备(包括实时时钟)通常通过寄存器连接。
芯片供应商通常会提供一些将地址映射到 variable/symbolic 常量名称的头文件,以便您可以轻松 read/write 它们。然后,您需要阅读数据表以确定 read/write 寄存器的内容以实现您想要的行为。
您很可能希望设置自己的定时器函数,例如 init_timer 和 get_current_time_stamp,它们依次适当地访问这些寄存器。祝你好运。
此外,请记住微控制器的 RTC 不太可能是非易失性的。这意味着它将在通电时重置。因此你需要想出一些电池方案来让它跟踪时间。
嗯,我是这样解决问题的:
int main(void){
SysCtlClockSet(SYSCTL_OSC_MAIN);
//enable the hibernation module
SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);
//SYSCTL_OSC_EXT32 is the rate of the clock supplied to the Hibernation
HibernateEnableExpClk(SYSCTL_OSC_EXT32);
HibernateClockConfig(HIBERNATE_OSC_HIGHDRIVE);
HibernateRTCDisable();
//set the value to 0
HibernateRTCSet(0);
HibernateRTCEnable();
//get starting values
unsigned long long sec = HibernateRTCGet();
unsigned int subsec = HibernateRTCSSGet();
while(1){
sec= HibernateRTCGet();
subsec=HibernateRTCSSGet()
}
}
这段代码展示了如何通过休眠模块使用实时时钟。 RTC 的时钟信号由外部 32.768-kHz 振荡器提供。应该记住,RTC 会在开机时重置。