[AT32F437] 体验一下ERTC的时间戳功能

[复制链接]
92|0
霜之闪耀 发表于 2025-10-29 17:16 | 显示全部楼层 |阅读模式
RTC, , ST, pi, 体验,
之前使用其它家的MCU时,基本上不使用RTC外设——主要是没有LSE晶振。但RTC外设的后备寄存器的使用频率还是非常高的。今天来体验一下雅特力AT32F437的ERTC外设的时间戳特性。
时间戳典型用法有两种:
  • 单独的时间戳功能,此时入侵检测引脚用来检测时间戳
  • 发生入侵事件时保存时间戳

ERTC的时间戳功能与入侵检测功能是强绑定的。时间戳功能的触发也是基于入侵检测的引脚配置。根据原理图,PC13引脚与外部按键相连,并且有下拉电阻。所以,入侵检测的触发方式为PC13引脚的上升沿。附上测试源代码:
  1. void wk_ertc_init(void)
  2. {
  3.   gpio_init_type gpio_init_struct;
  4.   exint_init_type exint_init_struct;

  5.   gpio_default_para_init(&gpio_init_struct);

  6.   /* configure the AF1 pin */
  7.   gpio_pin_mux_config(GPIOC, GPIO_PINS_SOURCE13, GPIO_MUX_0);
  8.   gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
  9.   gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
  10.   gpio_init_struct.gpio_mode = GPIO_MODE_INPUT;
  11.   gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  12.   gpio_init_struct.gpio_pins = GPIO_PINS_13;
  13.   gpio_init(GPIOC, &gpio_init_struct);

  14.   pwc_battery_powered_domain_access(TRUE);

  15.   crm_ertc_clock_select(CRM_ERTC_CLOCK_LICK);
  16.   crm_ertc_clock_enable(TRUE);
  17.   ertc_reset();
  18.   ertc_wait_update();
  19.   ertc_divider_set(127, 255);
  20.   ertc_hour_mode_set(ERTC_HOUR_MODE_24);

  21.   ertc_time_set(0x0, 0x0, 0, ERTC_24H);

  22.   ertc_date_set(25, 10, 29, 3);

  23.   /* configure timestamp */
  24.   ertc_timestamp_valid_edge_set(ERTC_TIMESTAMP_EDGE_RISING);
  25.   ertc_timestamp_pin_select(ERTC_PIN_PC13);
  26.   
  27.   exint_default_para_init(&exint_init_struct);
  28.   exint_init_struct.line_enable   = TRUE;
  29.   exint_init_struct.line_mode     = EXINT_LINE_INTERRUPUT;
  30.   exint_init_struct.line_select   = EXINT_LINE_21;
  31.   exint_init_struct.line_polarity = EXINT_TRIGGER_RISING_EDGE;
  32.   exint_init(&exint_init_struct);
  33.   
  34.   /* enable the timestamp */
  35.   nvic_irq_enable(TAMP_STAMP_IRQn, 0, 0);
  36.   ertc_timestamp_valid_edge_set(ERTC_TIMESTAMP_EDGE_FALLING);
  37.   ertc_timestamp_enable(TRUE);
  38. }
我使能了时间戳中断功能用于测试,但我感觉,如果有入侵检测的需求的话,直接在入侵检测中断里面实现时间的读取与记录即可,无需再配置时间戳功能,以及在时间戳中断里面处理时间了。



您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

31

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部