S32DS for S32 Platform RTC输出时间

1、添加RTC组件

右键项目找到"S32 Configuration Tools"--》"Open Peripherals"进入外设组件界面

选择Drivers搜索"rtc",添加完后双击rtc_1,配置rtc参数,更新代码

2、RTC初始化

c 复制代码
  /* Initialize RTC instance
   *  - See RTC configuration component for options
   */
  RTC_DRV_Init(0, &rtc_1InitCfg0);
  /* Configure RTC Time Seconds Interrupt */
  RTC_DRV_ConfigureSecondsInt(0, &rtc_1SecIntCfg0);
  /* Set the time and date */
  RTC_DRV_SetTimeDate(0, &rtc_1InitCfg0_StartTime);
  /* Start the RTC counter */
  RTC_DRV_StartCounter(0);

3、中断函数

c 复制代码
//如果在配置RTC参数时启动了"Alarm"中断和"Seconds"中断

/* Alarm interrupt handler */
void alarmISR(void * callbackParam)
{	
	//到设定的时间则会进入此中断
	rtc_timedate_t Scurrent_time,tempTime;

	RTC_DRV_GetCurrentTimeDate(0, &tempTime);
	Scurrent_time=tempTime;
	Scurrent_time.day +=1;
	RTC_DRV_StopCounter(0);
	RTC_DRV_SetTimeDate(0, &Scurrent_time);
	RTC_DRV_StartCounter(0);
	RTC_DRV_GetCurrentTimeDate(0, &tempTime);

	x1=1;

}

/* Time Seconds interrupt handler */
void secondsISR(void * callbackParam)
{
	//每秒进入一次
	x++;
}

4、main函数

下面是我的main函数,程序里面开启uart,rtc功能;所有在main函数进行了对应的初始化;在循环中判断x1;如果x1等于1则获取当前时间并输出到uart,并将x1置0

c 复制代码
int main(void)
{
  status_t error;
  /* Configure clocks for PORT */
  error = CLOCK_DRV_Init(&clockMan1_InitConfig0);
  DEV_ASSERT(error == STATUS_SUCCESS);
  /* Set pins as GPIO */
  error = PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0, g_pin_mux_InitConfigArr0);
  DEV_ASSERT(error == STATUS_SUCCESS);

  /* Initialize LPUART instance */
  LPUART_DRV_Init(1, &lpUartState0, &lpuart_0_InitConfig0);
  /* Install the callback for rx events */
  LPUART_DRV_InstallRxCallback(1, rxCallback, NULL);
  LPUART_DRV_ReceiveData(1, (uint8_t *)rx_data, 1U);

  /* Initialize RTC instance
   *  - See RTC configuration component for options
   */
  RTC_DRV_Init(0, &rtc_1InitCfg0);
  /* Configure RTC Time Seconds Interrupt */
  RTC_DRV_ConfigureSecondsInt(0, &rtc_1SecIntCfg0);
  /* Set the time and date */
  RTC_DRV_SetTimeDate(0, &rtc_1InitCfg0_StartTime);
  /* Start the RTC counter */
  RTC_DRV_StartCounter(0);

  for (;;)
  {
	  LPUART_DRV_ReceiveData(1, (uint8_t *)rx_data, 1U);

	  if(x1==1){
		  rtc_timedate_t tempTime;
		  RTC_DRV_GetCurrentTimeDate(0,&tempTime);
		  uint8_t* Ctime=currentTimetoString(&tempTime);//时间转字符串
		  LPUART_DRV_SendDataBlocking(1,(uint8_t *)Ctime,strlen(Ctime),500U);
		  x1=0;
	  }
  }
}

5、整个RTC程序

https://download.csdn.net/download/weixin_46516921/92578566

相关推荐
深圳老胡6 小时前
C语言实现C++面向对象程序设计示例
笔记·stm32·单片机·代码规范
2501_922639586 小时前
率能半导体 SS6226双通道直流电机驱动芯片:7.2V/1.4A双路,覆盖玩具、小家电、直流有刷电机三大应用场景
单片机·嵌入式硬件·硬件工程
LCG米6 小时前
STM32时钟树配置实测:HSE起振失败回退HSI、PLL分频倍频计算与Flash等待周期陷阱
stm32·单片机·嵌入式硬件·嵌入式
Lxx_Zw7 小时前
PID 用顺了,然后呢:增强手术与前馈
c语言·stm32·单片机·嵌入式硬件
张怀民3167 小时前
PFC_CCM_NCP1654详讲
单片机·嵌入式硬件·硬件工程·pfc
youcans_8 小时前
【STM32C5教程】(9)DAC 模拟量信号输出实验
stm32·单片机·嵌入式硬件·stm32c5·cubemx2
智购科技自动售货机工厂8 小时前
省电40%的底层逻辑:冷热双温售货机基于SaaS的智能温控算法~YH
单片机·嵌入式硬件·百度·架构·emacs
深圳老胡9 小时前
STM32C5 系列 MCU 的 FreeRTOS 软件架构搭建指南:外设配置与应用实践
笔记·stm32·单片机·代码规范
霖霖7149 小时前
【ESP32笔记】I2S的音频录制与播放
笔记·单片机·mcu·音视频
LCG米9 小时前
STM32 HardFault故障定位实测:压栈帧寄存器解析、CFSR故障源判读与出错地址回溯
前端·javascript·stm32·单片机·嵌入式