SmartSnippets DA1459x SDK
hw_timer.h
Go to the documentation of this file.
1 
42 #ifndef HW_TIMER_H_
43 #define HW_TIMER_H_
44 
45 
46 #if dg_configUSE_HW_TIMER
47 
48 #include <stdbool.h>
49 #include <stdint.h>
50 #include "sdk_defs.h"
51 #include "hw_gpio.h"
52 
53 
54 /* Timer Base Address */
55 #define TBA(id) ((TIMER_Type *)id)
56 
72 #define HW_TIMER_REG_GETF(id, reg, field) \
73  ((TBA(id)->reg & (TIMER_##reg##_##field##_Msk)) >> (TIMER_##reg##_##field##_Pos))
74 
84 #define HW_TIMER_REG_SETF(id, reg, field, val) \
85  TBA(id)->reg = ((TBA(id)->reg & ~(TIMER_##reg##_##field##_Msk)) | \
86  ((TIMER_##reg##_##field##_Msk) & ((val) << (TIMER_##reg##_##field##_Pos))))
87 
92 #define TIMER_MAX_PRESCALER_VAL (TIMER_TIMER_SETTINGS_REG_TIM_PRESCALER_Msk >> \
93  TIMER_TIMER_SETTINGS_REG_TIM_PRESCALER_Pos)
94 
99 #define TIMER_MAX_RELOAD_VAL TIMER_TIMER_SETTINGS_REG_TIM_RELOAD_Msk
100 
105 #define TIMER_MAX_SHOTWIDTH_VAL TIMER_TIMER_SHOTWIDTH_REG_TIM_SHOTWIDTH_Msk
106 
107 
112 #define TIMER_MAX_PWM_FREQ_VAL TIMER_TIMER_PWM_CTRL_REG_TIM_PWM_FREQ_Msk
113 
118 #define TIMER_MAX_PWM_DC_VAL TIMER_TIMER_PWM_CTRL_REG_TIM_PWM_DC_Msk
119 
124 #define HW_TIMER ((void *)TIMER_BASE)
125 #define HW_TIMER2 ((void *)TIMER2_BASE)
126 #define HW_TIMER3 ((void *)TIMER3_BASE)
127 #define HW_TIMER4 ((void *)TIMER4_BASE)
128 typedef void * HW_TIMER_ID;
129 
130 
137 typedef enum {
140 } HW_TIMER_MODE;
141 
146 typedef enum {
150 
155 typedef enum {
158 } HW_TIMER_DIR;
159 
164 typedef enum {
168 
169 
174 typedef enum {
180 
189 typedef enum {
223 } HW_TIMER_GPIO;
224 
229 typedef void (*hw_timer_handler_cb)(void);
230 
242 typedef void (*hw_timer_capture_handler_cb)(uint8_t gpio_event);
243 
251 typedef struct {
253  uint32_t reload_val;
254  bool free_run;
264 
272 typedef struct {
273  uint32_t delay;
274  uint32_t shot_width;
278 
287 typedef struct {
293  uint16_t frequency;
295  uint16_t duty_cycle;
297 
311 typedef struct {
313  uint8_t prescaler;
315  union {
318  };
320 } timer_config;
321 
332 void hw_timer_init(HW_TIMER_ID id, const timer_config *cfg);
333 
344 void hw_timer_configure(HW_TIMER_ID id, const timer_config *cfg);
345 
361 void hw_timer_configure_timer(HW_TIMER_ID id, const timer_config_timer_capture *cfg);
362 
373 void hw_timer_configure_oneshot(HW_TIMER_ID id, const timer_config_oneshot *cfg);
374 
375 
381 __STATIC_INLINE void hw_timer_freeze(const HW_TIMER_ID id)
382 {
383  if (id == HW_TIMER) {
384  GPREG->SET_FREEZE_REG = GPREG_SET_FREEZE_REG_FRZ_SWTIM_Msk;
385  } else if (id == HW_TIMER2) {
386  GPREG->SET_FREEZE_REG = GPREG_SET_FREEZE_REG_FRZ_SWTIM2_Msk;
387  } else if (id == HW_TIMER3) {
388  GPREG->SET_FREEZE_REG = GPREG_SET_FREEZE_REG_FRZ_SWTIM3_Msk;
389  } else if (id == HW_TIMER4) {
390  GPREG->SET_FREEZE_REG = GPREG_SET_FREEZE_REG_FRZ_SWTIM4_Msk;
391  } else {
392  ASSERT_WARNING(0);//Invalid argument
393  }
394 }
395 
401 __STATIC_INLINE void hw_timer_unfreeze(const HW_TIMER_ID id)
402 {
403  if (id == HW_TIMER) {
404  GPREG->RESET_FREEZE_REG = GPREG_RESET_FREEZE_REG_FRZ_SWTIM_Msk;
405  } else if (id == HW_TIMER2) {
406  GPREG->RESET_FREEZE_REG = GPREG_RESET_FREEZE_REG_FRZ_SWTIM2_Msk;
407  } else if (id == HW_TIMER3) {
408  GPREG->RESET_FREEZE_REG = GPREG_RESET_FREEZE_REG_FRZ_SWTIM3_Msk;
409  } else if (id == HW_TIMER4) {
410  GPREG->RESET_FREEZE_REG = GPREG_RESET_FREEZE_REG_FRZ_SWTIM4_Msk;
411  } else {
412  ASSERT_WARNING(0);//Invalid argument
413  }
414 }
415 
424 __STATIC_INLINE bool hw_timer_frozen(const HW_TIMER_ID id)
425 {
426  if (id == HW_TIMER) {
427  return (GPREG->SET_FREEZE_REG & GPREG_SET_FREEZE_REG_FRZ_SWTIM_Msk);
428  } else if (id == HW_TIMER2) {
429  return (GPREG->SET_FREEZE_REG & GPREG_SET_FREEZE_REG_FRZ_SWTIM2_Msk);
430  } else if (id == HW_TIMER3) {
431  return (GPREG->SET_FREEZE_REG & GPREG_SET_FREEZE_REG_FRZ_SWTIM3_Msk);
432  } else if (id == HW_TIMER4) {
433  return (GPREG->SET_FREEZE_REG & GPREG_SET_FREEZE_REG_FRZ_SWTIM4_Msk);
434  } else {
435  ASSERT_WARNING(0);//Invalid argument
436  }
437 }
438 
446 __STATIC_INLINE void hw_timer_set_clk(HW_TIMER_ID id, HW_TIMER_CLK_SRC clk)
447 {
448  HW_TIMER_REG_SETF(id, TIMER_CTRL_REG, TIM_SYS_CLK_EN, clk);
449 }
450 
460 __STATIC_INLINE void hw_timer_set_prescaler(HW_TIMER_ID id, uint8_t value)
461 {
462  ASSERT_WARNING(TIMER_MAX_PRESCALER_VAL >= value);
463  HW_TIMER_REG_SETF(id, TIMER_SETTINGS_REG, TIM_PRESCALER, value);
464  while (HW_TIMER_REG_GETF(id, TIMER_STATUS_REG, TIM_TIMER_BUSY));
465 }
466 
479 __STATIC_FORCEINLINE void hw_timer_set_reload(HW_TIMER_ID id, uint32_t value)
480 {
481  ASSERT_WARNING(TIMER_MAX_RELOAD_VAL >= value);
482  HW_TIMER_REG_SETF(id, TIMER_SETTINGS_REG, TIM_RELOAD, value);
483  while (HW_TIMER_REG_GETF(id, TIMER_STATUS_REG, TIM_TIMER_BUSY));
484 }
485 
498 __STATIC_INLINE void hw_timer_set_oneshot_delay(HW_TIMER_ID id, uint32_t delay)
499 {
500  ASSERT_WARNING(TIMER_MAX_RELOAD_VAL >= delay);
501  HW_TIMER_REG_SETF(id, TIMER_SETTINGS_REG, TIM_RELOAD, delay);
502  while (HW_TIMER_REG_GETF(id, TIMER_STATUS_REG, TIM_TIMER_BUSY));
503 }
504 
514 __STATIC_INLINE void hw_timer_set_shot_width(HW_TIMER_ID id, uint32_t duration)
515 {
516  ASSERT_WARNING(TIMER_MAX_SHOTWIDTH_VAL >= duration);
517  TBA(id)->TIMER_SHOTWIDTH_REG = duration;
518  while (HW_TIMER_REG_GETF(id, TIMER_STATUS_REG, TIM_TIMER_BUSY));
519 }
520 
529 __STATIC_INLINE void hw_timer_set_freerun(HW_TIMER_ID id, bool enable)
530 {
531  HW_TIMER_REG_SETF(id, TIMER_CTRL_REG, TIM_FREE_RUN_MODE_EN, enable);
532 }
533 
541 __STATIC_INLINE void hw_timer_set_event1_trigger(HW_TIMER_ID id, HW_TIMER_TRIGGER edge)
542 {
543  HW_TIMER_REG_SETF(id, TIMER_CTRL_REG, TIM_IN1_EVENT_FALL_EN, edge);
544 }
545 
553 __STATIC_INLINE void hw_timer_set_event2_trigger(HW_TIMER_ID id, HW_TIMER_TRIGGER edge)
554 {
555  HW_TIMER_REG_SETF(id, TIMER_CTRL_REG, TIM_IN2_EVENT_FALL_EN, edge);
556 }
557 
567 {
568  REG_SETF(TIMER, TIMER_CTRL_REG, TIM_IN3_EVENT_FALL_EN, edge);
569 }
570 
580 {
581  REG_SETF(TIMER, TIMER_CTRL_REG, TIM_IN4_EVENT_FALL_EN, edge);
582 }
583 
598 __STATIC_INLINE void hw_timer_set_gpio_event_int(uint8_t mask)
599 {
600  uint32_t tmp = TIMER->TIMER_CTRL_REG;
601  REG_SET_FIELD(TIMER, TIMER_CTRL_REG, TIM_CAP_GPIO1_IRQ_EN, tmp, (mask & 0x1));
602  REG_SET_FIELD(TIMER, TIMER_CTRL_REG, TIM_CAP_GPIO2_IRQ_EN, tmp, ((mask & 0x2) >> 1));
603  REG_SET_FIELD(TIMER, TIMER_CTRL_REG, TIM_CAP_GPIO3_IRQ_EN, tmp, ((mask & 0x4) >> 2));
604  REG_SET_FIELD(TIMER, TIMER_CTRL_REG, TIM_CAP_GPIO4_IRQ_EN, tmp, ((mask & 0x8) >> 3));
605  TIMER->TIMER_CTRL_REG = tmp;
606 }
607 
615 __STATIC_INLINE void hw_timer_set_event1_gpio(HW_TIMER_ID id, HW_TIMER_GPIO gpio)
616 {
617  TBA(id)->TIMER_GPIO1_CONF_REG = gpio;
618 }
619 
627 __STATIC_INLINE void hw_timer_set_event2_gpio(HW_TIMER_ID id, HW_TIMER_GPIO gpio)
628 {
629  TBA(id)->TIMER_GPIO2_CONF_REG = gpio;
630 }
631 
640 __STATIC_INLINE void hw_timer_set_event3_gpio(HW_TIMER_GPIO gpio)
641 {
642  TIMER->TIMER_GPIO3_CONF_REG = gpio;
643 }
644 
653 __STATIC_INLINE void hw_timer_set_event4_gpio(HW_TIMER_GPIO gpio)
654 {
655  TIMER->TIMER_GPIO4_CONF_REG = gpio;
656 }
657 
665 __STATIC_INLINE HW_TIMER_CLK_SRC hw_timer_get_clk(HW_TIMER_ID id)
666 {
667  return HW_TIMER_REG_GETF(id, TIMER_CTRL_REG, TIM_SYS_CLK_EN);
668 }
669 
682 __STATIC_INLINE uint32_t hw_timer_get_prescaler(HW_TIMER_ID id)
683 {
684  return HW_TIMER_REG_GETF(id, TIMER_SETTINGS_REG, TIM_PRESCALER);
685 }
686 
697 __STATIC_INLINE uint32_t hw_timer_get_reload(HW_TIMER_ID id)
698 {
699  return HW_TIMER_REG_GETF(id, TIMER_SETTINGS_REG, TIM_RELOAD);
700 }
701 
712 __STATIC_INLINE uint32_t hw_timer_get_oneshot_delay(HW_TIMER_ID id)
713 {
714  return HW_TIMER_REG_GETF(id, TIMER_SETTINGS_REG, TIM_RELOAD);
715 }
716 
727 __STATIC_INLINE uint32_t hw_timer_get_shot_width(HW_TIMER_ID id)
728 {
729  return TBA(id)->TIMER_SHOTWIDTH_REG;
730 }
731 
740 __STATIC_INLINE bool hw_timer_get_freerun(HW_TIMER_ID id)
741 {
742  return HW_TIMER_REG_GETF(id, TIMER_CTRL_REG, TIM_FREE_RUN_MODE_EN);
743 }
744 
753 __STATIC_INLINE HW_TIMER_TRIGGER hw_timer_get_event1_trigger(HW_TIMER_ID id)
754 {
755  return HW_TIMER_REG_GETF(id, TIMER_CTRL_REG, TIM_IN1_EVENT_FALL_EN);
756 }
757 
766 __STATIC_INLINE HW_TIMER_TRIGGER hw_timer_get_event2_trigger(HW_TIMER_ID id)
767 {
768  return HW_TIMER_REG_GETF(id, TIMER_CTRL_REG, TIM_IN2_EVENT_FALL_EN);
769 }
770 
778 {
779  return REG_GETF(TIMER, TIMER_CTRL_REG, TIM_IN3_EVENT_FALL_EN);
780 }
781 
789 {
790  return REG_GETF(TIMER, TIMER_CTRL_REG, TIM_IN4_EVENT_FALL_EN);
791 }
792 
801 __STATIC_INLINE HW_TIMER_GPIO hw_timer_get_event1_gpio(HW_TIMER_ID id)
802 {
803  return TBA(id)->TIMER_GPIO1_CONF_REG;
804 }
805 
814 __STATIC_INLINE HW_TIMER_GPIO hw_timer_get_event2_gpio(HW_TIMER_ID id)
815 {
816  return TBA(id)->TIMER_GPIO2_CONF_REG;
817 }
818 
826 {
827  return TIMER->TIMER_GPIO3_CONF_REG;
828 }
829 
837 {
838  return TIMER->TIMER_GPIO4_CONF_REG;
839 }
840 
849 __STATIC_INLINE uint32_t hw_timer_get_capture1(HW_TIMER_ID id)
850 {
851  return TBA(id)->TIMER_CAPTURE_GPIO1_REG;
852 }
853 
862 __STATIC_INLINE uint32_t hw_timer_get_capture2(HW_TIMER_ID id)
863 {
864  return TBA(id)->TIMER_CAPTURE_GPIO2_REG;
865 }
866 
873 __STATIC_INLINE uint32_t hw_timer_get_capture3(void)
874 {
875  return TIMER->TIMER_CAPTURE_GPIO3_REG;
876 }
877 
884 __STATIC_INLINE uint32_t hw_timer_get_capture4(void)
885 {
886  return TIMER->TIMER_CAPTURE_GPIO4_REG;
887 }
888 
897 __STATIC_INLINE void hw_timer_set_direction(HW_TIMER_ID id, HW_TIMER_DIR dir)
898 {
899  HW_TIMER_REG_SETF(id, TIMER_CTRL_REG, TIM_COUNT_DOWN_EN, dir);
900 }
901 
909 __STATIC_INLINE void hw_timer_set_mode(HW_TIMER_ID id, HW_TIMER_MODE mode)
910 {
911  HW_TIMER_REG_SETF(id, TIMER_CTRL_REG, TIM_ONESHOT_MODE_EN, mode);
912 }
913 
920 __STATIC_INLINE HW_TIMER_MODE hw_timer_get_mode(HW_TIMER_ID id)
921 {
922  return HW_TIMER_REG_GETF(id, TIMER_CTRL_REG, TIM_ONESHOT_MODE_EN);
923 }
924 
935 __STATIC_FORCEINLINE uint32_t hw_timer_get_count(HW_TIMER_ID id)
936 {
937 
938  return TBA(id)->TIMER_TIMER_VAL_REG;
939 }
940 
949 __STATIC_INLINE HW_TIMER_ONESHOT hw_timer_get_oneshot_phase(HW_TIMER_ID id)
950 {
951  return HW_TIMER_REG_GETF(id, TIMER_STATUS_REG, TIM_ONESHOT_PHASE);
952 }
953 
962 __STATIC_INLINE bool hw_timer_get_gpio1_state(HW_TIMER_ID id)
963 {
964  return HW_TIMER_REG_GETF(id, TIMER_STATUS_REG, TIM_IN1_STATE);
965 }
966 
984 __STATIC_INLINE uint8_t hw_timer_get_gpio_event_pending(void)
985 {
986  return ((TIMER->TIMER_STATUS_REG &
991 }
992 
1001 __STATIC_INLINE bool hw_timer_get_gpio2_state(HW_TIMER_ID id)
1002 {
1003  return HW_TIMER_REG_GETF(id, TIMER_STATUS_REG, TIM_IN2_STATE);
1004 }
1005 
1006 
1023 __STATIC_INLINE uint16_t hw_timer_get_prescaler_val(HW_TIMER_ID id)
1024 {
1025  return TBA(id)->TIMER_PRESCALER_VAL_REG;
1026 }
1027 
1035 __RETAINED_CODE void hw_timer_register_int(const HW_TIMER_ID id, hw_timer_handler_cb handler);
1036 
1043 __RETAINED_HOT_CODE void hw_timer_unregister_int(const HW_TIMER_ID id);
1044 
1058 void hw_timer_register_capture_int(hw_timer_capture_handler_cb handler, uint8_t gpio_mask);
1059 
1065 
1075 __STATIC_INLINE void hw_timer_enable(HW_TIMER_ID id)
1076 {
1077  HW_TIMER_REG_SETF(id, TIMER_CTRL_REG, TIM_EN, 1);
1078 }
1079 
1088 __STATIC_INLINE void hw_timer_disable(HW_TIMER_ID id)
1089 {
1090  HW_TIMER_REG_SETF(id, TIMER_CTRL_REG, TIM_EN, 0);
1091  HW_TIMER_REG_SETF(id, TIMER_CTRL_REG, TIM_CLK_EN, 0);
1092 
1093 }
1094 
1101 __STATIC_INLINE void hw_timer_enable_clk(HW_TIMER_ID id)
1102 {
1103  HW_TIMER_REG_SETF(id, TIMER_CTRL_REG, TIM_CLK_EN, 1);
1104 }
1105 
1112 __STATIC_INLINE void hw_timer_disable_clk(HW_TIMER_ID id)
1113 {
1114  HW_TIMER_REG_SETF(id, TIMER_CTRL_REG, TIM_CLK_EN, 0);
1115 }
1116 
1129 void hw_timer_configure_pwm(HW_TIMER_ID id, const timer_config_pwm *cfg);
1130 
1142 __STATIC_INLINE void hw_timer_set_pwm_freq(HW_TIMER_ID id, uint32_t value)
1143 {
1144  ASSERT_WARNING(TIMER_MAX_PWM_FREQ_VAL >= value);
1145 
1146  HW_TIMER_REG_SETF(id, TIMER_PWM_CTRL_REG, TIM_PWM_FREQ, value);
1147  while (HW_TIMER_REG_GETF(id, TIMER_STATUS_REG, TIM_PWM_BUSY));
1148 }
1149 
1161 __STATIC_INLINE void hw_timer_set_pwm_duty_cycle(HW_TIMER_ID id, uint32_t value)
1162 {
1163  ASSERT_WARNING(TIMER_MAX_PWM_DC_VAL >= value);
1164  HW_TIMER_REG_SETF(id, TIMER_PWM_CTRL_REG, TIM_PWM_DC, value);
1165  while (HW_TIMER_REG_GETF(id, TIMER_STATUS_REG, TIM_PWM_BUSY));
1166 }
1167 
1178 __STATIC_INLINE uint32_t hw_timer_get_pwm_freq(HW_TIMER_ID id)
1179 {
1180  return HW_TIMER_REG_GETF(id, TIMER_PWM_CTRL_REG, TIM_PWM_FREQ);
1181 }
1182 
1193 __STATIC_INLINE uint32_t hw_timer_get_pwm_duty_cycle(HW_TIMER_ID id)
1194 {
1195  return HW_TIMER_REG_GETF(id, TIMER_PWM_CTRL_REG, TIM_PWM_DC);
1196 }
1197 
1212 __STATIC_INLINE void hw_timer_clear_gpio_event(uint8_t mask)
1213 {
1214  TIMER->TIMER_CLEAR_GPIO_EVENT_REG = mask;
1215 }
1216 
1225 __STATIC_INLINE void hw_timer_clear_interrupt(const HW_TIMER_ID id)
1226 {
1227  if (id == HW_TIMER) {
1228  TIMER->TIMER_CLEAR_IRQ_REG = 0;
1229  } else if (id == HW_TIMER2) {
1230  TIMER2->TIMER2_CLEAR_IRQ_REG = 0;
1231  } else if (id == HW_TIMER3) {
1232  TIMER3->TIMER3_CLEAR_IRQ_REG = 0;
1233  } else if (id == HW_TIMER4) {
1234  TIMER4->TIMER4_CLEAR_IRQ_REG = 0;
1235  } else {
1236  ASSERT_WARNING(0);//Invalid argument
1237  }
1238 }
1239 
1240 
1241 #endif /* dg_configUSE_HW_TIMER */
1242 
1243 
1244 #endif /* HW_TIMER_H_ */
1245 
hw_timer_get_prescaler_val
__STATIC_INLINE uint16_t hw_timer_get_prescaler_val(HW_TIMER_ID id)
Get the current prescaler counter value.
Definition: hw_timer.h:1023
HW_TIMER_MODE_TIMER
Definition: hw_timer.h:138
hw_timer_get_event3_trigger
__STATIC_INLINE HW_TIMER_TRIGGER hw_timer_get_event3_trigger(void)
Get a type of the edge which triggers event3. Valid only for Timer.
Definition: hw_timer.h:777
timer_config_timer_capture::gpio2
HW_TIMER_GPIO gpio2
Definition: hw_timer.h:257
HW_TIMER_GPIO_PIN_P1_8
Definition: hw_timer.h:215
TIMER_MAX_PWM_FREQ_VAL
#define TIMER_MAX_PWM_FREQ_VAL
Maximum value for timer PWM Frequency (16bits).
Definition: hw_timer.h:112
hw_timer_get_gpio1_state
__STATIC_INLINE bool hw_timer_get_gpio1_state(HW_TIMER_ID id)
Get the current state of Event input 1 (IN1)
Definition: hw_timer.h:962
hw_timer_set_oneshot_delay
__STATIC_INLINE void hw_timer_set_oneshot_delay(HW_TIMER_ID id, uint32_t delay)
Set pulse delay in oneshot mode.
Definition: hw_timer.h:498
REG_SETF
#define REG_SETF(base, reg, field, new_val)
Set the value of a register field.
Definition: sdk_defs.h:738
HW_TIMER_GPIO_PIN_P0_10
Definition: hw_timer.h:201
hw_timer_handler_cb
void(* hw_timer_handler_cb)(void)
Timer interrupt callback.
Definition: hw_timer.h:229
HW_TIMER_GPIO_PIN_P0_11
Definition: hw_timer.h:202
hw_timer_get_count
__STATIC_FORCEINLINE uint32_t hw_timer_get_count(HW_TIMER_ID id)
Get the tick count of the timer.
Definition: hw_timer.h:935
HW_TIMER_GPIO_PIN_P1_7
Definition: hw_timer.h:214
HW_TIMER_GPIO_PIN_P0_15
Definition: hw_timer.h:206
hw_timer_set_event3_trigger
__STATIC_INLINE void hw_timer_set_event3_trigger(HW_TIMER_TRIGGER edge)
Set a type of the edge which triggers event3.
Definition: hw_timer.h:566
timer_config_pwm::pwm_active_in_sleep
bool pwm_active_in_sleep
Definition: hw_timer.h:291
timer_config_oneshot::shot_width
uint32_t shot_width
Definition: hw_timer.h:274
hw_timer_set_pwm_freq
__STATIC_INLINE void hw_timer_set_pwm_freq(HW_TIMER_ID id, uint32_t value)
Set PWM frequency prescaler.
Definition: hw_timer.h:1142
GPREG_SET_FREEZE_REG_FRZ_SWTIM_Msk
#define GPREG_SET_FREEZE_REG_FRZ_SWTIM_Msk
Definition: DA1459x-00.h:3296
HW_TIMER_REG_GETF
#define HW_TIMER_REG_GETF(id, reg, field)
Definition for the PWM synchronization bitfield.
Definition: hw_timer.h:72
HW_TIMER_GPIO_PIN_P0_3
Definition: hw_timer.h:194
hw_timer_clear_gpio_event
__STATIC_INLINE void hw_timer_clear_gpio_event(uint8_t mask)
Clear capture time GPIO event.
Definition: hw_timer.h:1212
timer_config
Timer configuration.
Definition: hw_timer.h:311
HW_TIMER_ONESHOT_WAIT
Definition: hw_timer.h:175
TIMER_TIMER_STATUS_REG_TIM_GPIO4_EVENT_PENDING_Msk
#define TIMER_TIMER_STATUS_REG_TIM_GPIO4_EVENT_PENDING_Msk
Definition: DA1459x-00.h:5084
HW_TIMER
#define HW_TIMER
Timer id.
Definition: hw_timer.h:124
hw_timer_enable
__STATIC_INLINE void hw_timer_enable(HW_TIMER_ID id)
Enable the timer.
Definition: hw_timer.h:1075
HW_TIMER_GPIO_PIN_P1_6
Definition: hw_timer.h:213
hw_timer_get_capture4
__STATIC_INLINE uint32_t hw_timer_get_capture4(void)
Get the capture time for event on GPIO4. Valid only for Timer.
Definition: hw_timer.h:884
timer_config_timer_capture::trigger4
HW_TIMER_TRIGGER trigger4
Definition: hw_timer.h:262
hw_timer_set_pwm_duty_cycle
__STATIC_INLINE void hw_timer_set_pwm_duty_cycle(HW_TIMER_ID id, uint32_t value)
Set PWM duty cycle.
Definition: hw_timer.h:1161
hw_timer_get_reload
__STATIC_INLINE uint32_t hw_timer_get_reload(HW_TIMER_ID id)
Get timer reload value.
Definition: hw_timer.h:697
timer_config_oneshot
Timer configuration for oneshot mode.
Definition: hw_timer.h:272
hw_timer_enable_clk
__STATIC_INLINE void hw_timer_enable_clk(HW_TIMER_ID id)
Enable the timer clock.
Definition: hw_timer.h:1101
timer_config_pwm::frequency
uint16_t frequency
Definition: hw_timer.h:293
HW_TIMER_GPIO_PIN_P0_13
Definition: hw_timer.h:204
hw_timer_get_oneshot_phase
__STATIC_INLINE HW_TIMER_ONESHOT hw_timer_get_oneshot_phase(HW_TIMER_ID id)
Get the current phase of the one shot mode.
Definition: hw_timer.h:949
hw_timer_set_event1_trigger
__STATIC_INLINE void hw_timer_set_event1_trigger(HW_TIMER_ID id, HW_TIMER_TRIGGER edge)
Set a type of the edge which triggers event1.
Definition: hw_timer.h:541
sdk_defs.h
Central include header file with platform definitions.
hw_timer_register_int
__RETAINED_CODE void hw_timer_register_int(const HW_TIMER_ID id, hw_timer_handler_cb handler)
Register an interrupt handler.
hw_timer_configure_timer
void hw_timer_configure_timer(HW_TIMER_ID id, const timer_config_timer_capture *cfg)
Timer configuration for timer/capture mode.
hw_timer_frozen
__STATIC_INLINE bool hw_timer_frozen(const HW_TIMER_ID id)
Check if timer is frozen.
Definition: hw_timer.h:424
hw_timer_get_event2_trigger
__STATIC_INLINE HW_TIMER_TRIGGER hw_timer_get_event2_trigger(HW_TIMER_ID id)
Get a type of the edge which triggers event2.
Definition: hw_timer.h:766
hw_timer_get_clk
__STATIC_INLINE HW_TIMER_CLK_SRC hw_timer_get_clk(HW_TIMER_ID id)
Get clock source of the timer.
Definition: hw_timer.h:665
hw_timer_get_capture1
__STATIC_INLINE uint32_t hw_timer_get_capture1(HW_TIMER_ID id)
Get the capture time for event on GPIO1.
Definition: hw_timer.h:849
timer_config::pwm
timer_config_pwm pwm
Definition: hw_timer.h:319
timer_config_timer_capture::trigger1
HW_TIMER_TRIGGER trigger1
Definition: hw_timer.h:256
HW_TIMER_DIR_UP
Definition: hw_timer.h:156
TIMER_TIMER_STATUS_REG_TIM_GPIO1_EVENT_PENDING_Msk
#define TIMER_TIMER_STATUS_REG_TIM_GPIO1_EVENT_PENDING_Msk
Definition: DA1459x-00.h:5090
HW_TIMER_GPIO_PIN_P1_13
Definition: hw_timer.h:220
hw_timer_set_gpio_event_int
__STATIC_INLINE void hw_timer_set_gpio_event_int(uint8_t mask)
Select which time capture event GPIOs will create a capture IRQ.
Definition: hw_timer.h:598
TIMER_MAX_PWM_DC_VAL
#define TIMER_MAX_PWM_DC_VAL
Maximum value for timer PWM duty cycle (16bits).
Definition: hw_timer.h:118
HW_TIMER_REG_SETF
#define HW_TIMER_REG_SETF(id, reg, field, val)
Set the value of a field of a TIMER register.
Definition: hw_timer.h:84
HW_TIMER_GPIO_PIN_P1_1
Definition: hw_timer.h:208
HW_TIMER_ONESHOT_ACTIVE
Definition: hw_timer.h:178
timer_config::prescaler
uint8_t prescaler
Definition: hw_timer.h:313
GPREG_RESET_FREEZE_REG_FRZ_SWTIM2_Msk
#define GPREG_RESET_FREEZE_REG_FRZ_SWTIM2_Msk
Definition: DA1459x-00.h:3264
HW_GPIO_PIN
HW_GPIO_PIN
GPIO pin number.
Definition: hw_gpio.h:106
hw_timer_set_event4_gpio
__STATIC_INLINE void hw_timer_set_event4_gpio(HW_TIMER_GPIO gpio)
Set a GPIO input which triggers event4.
Definition: hw_timer.h:653
timer_config_timer_capture::trigger3
HW_TIMER_TRIGGER trigger3
Definition: hw_timer.h:260
timer_config_timer_capture::trigger2
HW_TIMER_TRIGGER trigger2
Definition: hw_timer.h:258
hw_timer_get_pwm_duty_cycle
__STATIC_INLINE uint32_t hw_timer_get_pwm_duty_cycle(HW_TIMER_ID id)
Get PWM duty cycle.
Definition: hw_timer.h:1193
hw_timer_set_shot_width
__STATIC_INLINE void hw_timer_set_shot_width(HW_TIMER_ID id, uint32_t duration)
Set shot width.
Definition: hw_timer.h:514
HW_TIMER_DIR
HW_TIMER_DIR
Counting direction.
Definition: hw_timer.h:155
HW_TIMER_GPIO_PIN_P1_2
Definition: hw_timer.h:209
hw_timer_unregister_int
__RETAINED_HOT_CODE void hw_timer_unregister_int(const HW_TIMER_ID id)
Unregister an interrupt handler.
HW_TIMER_GPIO_PIN_P0_14
Definition: hw_timer.h:205
hw_timer_get_freerun
__STATIC_INLINE bool hw_timer_get_freerun(HW_TIMER_ID id)
Get free-running mode state.
Definition: hw_timer.h:740
HW_GPIO_PORT
HW_GPIO_PORT
GPIO port number.
Definition: hw_gpio.h:96
hw_timer_set_event2_trigger
__STATIC_INLINE void hw_timer_set_event2_trigger(HW_TIMER_ID id, HW_TIMER_TRIGGER edge)
Set a type of the edge which triggers event2.
Definition: hw_timer.h:553
HW_TIMER_GPIO_PIN_P1_3
Definition: hw_timer.h:210
hw_timer_set_freerun
__STATIC_INLINE void hw_timer_set_freerun(HW_TIMER_ID id, bool enable)
Turn on free run mode of the timer.
Definition: hw_timer.h:529
HW_TIMER_MODE_ONESHOT
Definition: hw_timer.h:139
hw_timer_get_shot_width
__STATIC_INLINE uint32_t hw_timer_get_shot_width(HW_TIMER_ID id)
Get shot width.
Definition: hw_timer.h:727
HW_TIMER_GPIO_PIN_P0_4
Definition: hw_timer.h:195
TIMER_MAX_SHOTWIDTH_VAL
#define TIMER_MAX_SHOTWIDTH_VAL
Maximum value for timer shot phase duration value in oneshot mode (24bits).
Definition: hw_timer.h:105
hw_timer_clear_interrupt
__STATIC_INLINE void hw_timer_clear_interrupt(const HW_TIMER_ID id)
Clear timer interrupt.
Definition: hw_timer.h:1225
timer_config_pwm::port
HW_GPIO_PORT port
Definition: hw_timer.h:289
hw_timer_get_event4_trigger
__STATIC_INLINE HW_TIMER_TRIGGER hw_timer_get_event4_trigger(void)
Get a type of the edge which triggers event4. Valid only for Timer.
Definition: hw_timer.h:788
timer_config_oneshot::gpio
HW_TIMER_GPIO gpio
Definition: hw_timer.h:275
TIMER_TIMER_STATUS_REG_TIM_GPIO2_EVENT_PENDING_Msk
#define TIMER_TIMER_STATUS_REG_TIM_GPIO2_EVENT_PENDING_Msk
Definition: DA1459x-00.h:5088
hw_timer_register_capture_int
void hw_timer_register_capture_int(hw_timer_capture_handler_cb handler, uint8_t gpio_mask)
Register an interrupt handler for GPIO triggered Timer Capture interrupt.
hw_timer_init
void hw_timer_init(HW_TIMER_ID id, const timer_config *cfg)
Timer initialization.
HW_TIMER_MODE
HW_TIMER_MODE
Mode of operation.
Definition: hw_timer.h:137
hw_timer_configure
void hw_timer_configure(HW_TIMER_ID id, const timer_config *cfg)
Timer configuration.
HW_TIMER_CLK_SRC_INT
Definition: hw_timer.h:147
timer_config::timer
timer_config_timer_capture timer
Definition: hw_timer.h:316
GPREG_RESET_FREEZE_REG_FRZ_SWTIM4_Msk
#define GPREG_RESET_FREEZE_REG_FRZ_SWTIM4_Msk
Definition: DA1459x-00.h:3260
GPREG_SET_FREEZE_REG_FRZ_SWTIM2_Msk
#define GPREG_SET_FREEZE_REG_FRZ_SWTIM2_Msk
Definition: DA1459x-00.h:3288
hw_timer_set_event4_trigger
__STATIC_INLINE void hw_timer_set_event4_trigger(HW_TIMER_TRIGGER edge)
Set a type of the edge which triggers event4.
Definition: hw_timer.h:579
hw_timer_set_event2_gpio
__STATIC_INLINE void hw_timer_set_event2_gpio(HW_TIMER_ID id, HW_TIMER_GPIO gpio)
Set a GPIO input which triggers event2.
Definition: hw_timer.h:627
hw_timer_set_event1_gpio
__STATIC_INLINE void hw_timer_set_event1_gpio(HW_TIMER_ID id, HW_TIMER_GPIO gpio)
Set a GPIO input which triggers event1.
Definition: hw_timer.h:615
hw_timer_get_gpio2_state
__STATIC_INLINE bool hw_timer_get_gpio2_state(HW_TIMER_ID id)
Get the current state of Event input 2 (IN2)
Definition: hw_timer.h:1001
timer_config_oneshot::trigger
HW_TIMER_TRIGGER trigger
Definition: hw_timer.h:276
timer_config::clk_src
HW_TIMER_CLK_SRC clk_src
Definition: hw_timer.h:312
HW_TIMER_GPIO_PIN_P0_9
Definition: hw_timer.h:200
TIMER_MAX_RELOAD_VAL
#define TIMER_MAX_RELOAD_VAL
Maximum value for timer reload value (24bits).
Definition: hw_timer.h:99
mode
HW_GPIO_MODE mode
Definition: hw_gpio.h:211
hw_timer_get_pwm_freq
__STATIC_INLINE uint32_t hw_timer_get_pwm_freq(HW_TIMER_ID id)
Get PWM frequency.
Definition: hw_timer.h:1178
hw_timer_set_clk
__STATIC_INLINE void hw_timer_set_clk(HW_TIMER_ID id, HW_TIMER_CLK_SRC clk)
Set clock source of the timer.
Definition: hw_timer.h:446
timer_config_timer_capture::free_run
bool free_run
Definition: hw_timer.h:254
timer_config_timer_capture::direction
HW_TIMER_DIR direction
Definition: hw_timer.h:252
TIMER_TIMER_STATUS_REG_TIM_GPIO3_EVENT_PENDING_Msk
#define TIMER_TIMER_STATUS_REG_TIM_GPIO3_EVENT_PENDING_Msk
Definition: DA1459x-00.h:5086
HW_TIMER_GPIO_PIN_P1_0
Definition: hw_timer.h:207
timer_config_pwm
Timer PWM configuration.
Definition: hw_timer.h:287
HW_TIMER_GPIO_PIN_P0_5
Definition: hw_timer.h:196
HW_TIMER_GPIO_PIN_P1_10
Definition: hw_timer.h:217
HW_TIMER_GPIO_PIN_P1_5
Definition: hw_timer.h:212
HW_TIMER_GPIO
HW_TIMER_GPIO
GPIOs for timer trigger.
Definition: hw_timer.h:189
HW_TIMER_GPIO_PIN_P0_7
Definition: hw_timer.h:198
HW_TIMER_GPIO_PIN_P1_14
Definition: hw_timer.h:221
HW_TIMER_GPIO_PIN_P1_11
Definition: hw_timer.h:218
timer_config_timer_capture::gpio4
HW_TIMER_GPIO gpio4
Definition: hw_timer.h:261
TIMER_MAX_PRESCALER_VAL
#define TIMER_MAX_PRESCALER_VAL
Maximum value for timer pre-scaler (5bits).
Definition: hw_timer.h:92
hw_gpio.h
Definition of API for the GPIO Low Level Driver.
HW_TIMER_GPIO_PIN_P1_4
Definition: hw_timer.h:211
hw_timer_set_mode
__STATIC_INLINE void hw_timer_set_mode(HW_TIMER_ID id, HW_TIMER_MODE mode)
Set timer mode.
Definition: hw_timer.h:909
hw_timer_get_oneshot_delay
__STATIC_INLINE uint32_t hw_timer_get_oneshot_delay(HW_TIMER_ID id)
Get pulse delay in oneshot mode.
Definition: hw_timer.h:712
HW_TIMER_GPIO_PIN_P0_12
Definition: hw_timer.h:203
hw_timer_configure_oneshot
void hw_timer_configure_oneshot(HW_TIMER_ID id, const timer_config_oneshot *cfg)
Timer configuration for oneshot mode.
hw_timer_get_mode
__STATIC_INLINE HW_TIMER_MODE hw_timer_get_mode(HW_TIMER_ID id)
Return timer mode.
Definition: hw_timer.h:920
REG_GETF
#define REG_GETF(base, reg, field)
Return the value of a register field.
Definition: sdk_defs.h:711
hw_timer_configure_pwm
void hw_timer_configure_pwm(HW_TIMER_ID id, const timer_config_pwm *cfg)
Timer PWM configuration.
hw_timer_get_event1_gpio
__STATIC_INLINE HW_TIMER_GPIO hw_timer_get_event1_gpio(HW_TIMER_ID id)
Get a GPIO input which triggers event1.
Definition: hw_timer.h:801
HW_TIMER_GPIO_PIN_P0_0
Definition: hw_timer.h:191
hw_timer_get_capture2
__STATIC_INLINE uint32_t hw_timer_get_capture2(HW_TIMER_ID id)
Get the capture time for event on GPIO2.
Definition: hw_timer.h:862
hw_timer_unregister_capture_int
void hw_timer_unregister_capture_int(void)
Unregister an interrupt handler for GPIO triggered Timer Capture interrupt.
hw_timer_capture_handler_cb
void(* hw_timer_capture_handler_cb)(uint8_t gpio_event)
Timer capture interrupt callback.
Definition: hw_timer.h:242
HW_TIMER_TRIGGER_FALLING
Definition: hw_timer.h:166
HW_TIMER_GPIO_PIN_P0_1
Definition: hw_timer.h:192
REG_SET_FIELD
#define REG_SET_FIELD(base, reg, field, var, val)
Set register field value.
Definition: sdk_defs.h:626
HW_TIMER_GPIO_PIN_P0_8
Definition: hw_timer.h:199
GPREG_RESET_FREEZE_REG_FRZ_SWTIM_Msk
#define GPREG_RESET_FREEZE_REG_FRZ_SWTIM_Msk
Definition: DA1459x-00.h:3272
HW_TIMER_GPIO_PIN_P1_9
Definition: hw_timer.h:216
HW_TIMER_TRIGGER_RISING
Definition: hw_timer.h:165
HW_TIMER_CLK_SRC_EXT
Definition: hw_timer.h:148
GPREG_RESET_FREEZE_REG_FRZ_SWTIM3_Msk
#define GPREG_RESET_FREEZE_REG_FRZ_SWTIM3_Msk
Definition: DA1459x-00.h:3262
timer_config_timer_capture::gpio1
HW_TIMER_GPIO gpio1
Definition: hw_timer.h:255
HW_TIMER_ONESHOT_DELAY
Definition: hw_timer.h:176
timer_config::oneshot
timer_config_oneshot oneshot
Definition: hw_timer.h:317
timer_config::mode
HW_TIMER_MODE mode
Definition: hw_timer.h:314
GPREG_SET_FREEZE_REG_FRZ_SWTIM3_Msk
#define GPREG_SET_FREEZE_REG_FRZ_SWTIM3_Msk
Definition: DA1459x-00.h:3286
hw_timer_set_reload
__STATIC_FORCEINLINE void hw_timer_set_reload(HW_TIMER_ID id, uint32_t value)
Set timer reload value.
Definition: hw_timer.h:479
hw_timer_get_event3_gpio
__STATIC_INLINE HW_TIMER_GPIO hw_timer_get_event3_gpio(void)
Get a GPIO input which triggers event3. Valid only for Timer.
Definition: hw_timer.h:825
GPREG_SET_FREEZE_REG_FRZ_SWTIM4_Msk
#define GPREG_SET_FREEZE_REG_FRZ_SWTIM4_Msk
Definition: DA1459x-00.h:3284
HW_TIMER_GPIO_GPIO_NONE
Definition: hw_timer.h:190
timer_config_timer_capture::reload_val
uint32_t reload_val
Definition: hw_timer.h:253
hw_timer_disable
__STATIC_INLINE void hw_timer_disable(HW_TIMER_ID id)
Disable the timer.
Definition: hw_timer.h:1088
HW_TIMER_DIR_DOWN
Definition: hw_timer.h:157
hw_timer_get_capture3
__STATIC_INLINE uint32_t hw_timer_get_capture3(void)
Get the capture time for event on GPIO3. Valid only for Timer.
Definition: hw_timer.h:873
timer_config_timer_capture::gpio3
HW_TIMER_GPIO gpio3
Definition: hw_timer.h:259
hw_timer_get_gpio_event_pending
__STATIC_INLINE uint8_t hw_timer_get_gpio_event_pending(void)
Get the time capture event GPIOs pending events.
Definition: hw_timer.h:984
hw_timer_freeze
__STATIC_INLINE void hw_timer_freeze(const HW_TIMER_ID id)
Freeze timer.
Definition: hw_timer.h:381
HW_TIMER_CLK_SRC
HW_TIMER_CLK_SRC
Clock source for timer.
Definition: hw_timer.h:146
hw_timer_get_event1_trigger
__STATIC_INLINE HW_TIMER_TRIGGER hw_timer_get_event1_trigger(HW_TIMER_ID id)
Get a type of the edge which triggers event1.
Definition: hw_timer.h:753
timer_config_oneshot::delay
uint32_t delay
Definition: hw_timer.h:273
HW_TIMER_GPIO_PIN_P1_12
Definition: hw_timer.h:219
HW_TIMER_GPIO_PIN_P0_6
Definition: hw_timer.h:197
hw_timer_get_event2_gpio
__STATIC_INLINE HW_TIMER_GPIO hw_timer_get_event2_gpio(HW_TIMER_ID id)
Get a GPIO input which triggers event2.
Definition: hw_timer.h:814
hw_timer_set_event3_gpio
__STATIC_INLINE void hw_timer_set_event3_gpio(HW_TIMER_GPIO gpio)
Set a GPIO input which triggers event3.
Definition: hw_timer.h:640
hw_timer_get_prescaler
__STATIC_INLINE uint32_t hw_timer_get_prescaler(HW_TIMER_ID id)
Get timer clock prescaler.
Definition: hw_timer.h:682
HW_TIMER_TRIGGER
HW_TIMER_TRIGGER
Type of triggering events.
Definition: hw_timer.h:164
timer_config_pwm::pin
HW_GPIO_PIN pin
Definition: hw_timer.h:288
HW_TIMER_ONESHOT_STARTED
Definition: hw_timer.h:177
hw_timer_unfreeze
__STATIC_INLINE void hw_timer_unfreeze(const HW_TIMER_ID id)
Unfreeze timer.
Definition: hw_timer.h:401
HW_TIMER_GPIO_PIN_P1_15
Definition: hw_timer.h:222
hw_timer_set_direction
__STATIC_INLINE void hw_timer_set_direction(HW_TIMER_ID id, HW_TIMER_DIR dir)
Set the direction of timer counting.
Definition: hw_timer.h:897
HW_TIMER_ONESHOT
HW_TIMER_ONESHOT
One shot mode phases.
Definition: hw_timer.h:174
hw_timer_disable_clk
__STATIC_INLINE void hw_timer_disable_clk(HW_TIMER_ID id)
Disable the timer clock.
Definition: hw_timer.h:1112
HW_TIMER_GPIO_PIN_P0_2
Definition: hw_timer.h:193
hw_timer_get_event4_gpio
__STATIC_INLINE HW_TIMER_GPIO hw_timer_get_event4_gpio(void)
Get a GPIO input which triggers event4. Valid only for Timer.
Definition: hw_timer.h:836
timer_config_timer_capture
Timer configuration for timer/capture mode.
Definition: hw_timer.h:251
hw_timer_set_prescaler
__STATIC_INLINE void hw_timer_set_prescaler(HW_TIMER_ID id, uint8_t value)
Set timer clock prescaler.
Definition: hw_timer.h:460