em_letimer.h
Go to the documentation of this file.00001
00034 #ifndef __EM_LETIMER_H
00035 #define __EM_LETIMER_H
00036
00037 #include <stdbool.h>
00038 #include "em_device.h"
00039 #if defined(LETIMER_COUNT) && (LETIMER_COUNT > 0)
00040
00041 #ifdef __cplusplus
00042 extern "C" {
00043 #endif
00044
00045
00050
00055
00056
00057
00058
00060 typedef enum
00061 {
00063 letimerRepeatFree = _LETIMER_CTRL_REPMODE_FREE,
00065 letimerRepeatOneshot = _LETIMER_CTRL_REPMODE_ONESHOT,
00070 letimerRepeatBuffered = _LETIMER_CTRL_REPMODE_BUFFERED,
00075 letimerRepeatDouble = _LETIMER_CTRL_REPMODE_DOUBLE
00076 } LETIMER_RepeatMode_TypeDef;
00077
00078
00080 typedef enum
00081 {
00083 letimerUFOANone = _LETIMER_CTRL_UFOA0_NONE,
00085 letimerUFOAToggle = _LETIMER_CTRL_UFOA0_TOGGLE,
00087 letimerUFOAPulse = _LETIMER_CTRL_UFOA0_PULSE,
00089 letimerUFOAPwm = _LETIMER_CTRL_UFOA0_PWM
00090 } LETIMER_UFOA_TypeDef;
00091
00092
00093
00094
00095
00097 typedef struct
00098 {
00099 bool enable;
00100 bool debugRun;
00101 bool rtcComp0Enable;
00102 bool rtcComp1Enable;
00103 bool comp0Top;
00104 bool bufTop;
00105 uint8_t out0Pol;
00106 uint8_t out1Pol;
00107 LETIMER_UFOA_TypeDef ufoa0;
00108 LETIMER_UFOA_TypeDef ufoa1;
00109 LETIMER_RepeatMode_TypeDef repMode;
00110 } LETIMER_Init_TypeDef;
00111
00113 #define LETIMER_INIT_DEFAULT \
00114 { true, \
00115 false, \
00116 false, \
00117 false, \
00118 false, \
00119 false, \
00120 0, \
00121 0, \
00122 letimerUFOANone, \
00123 letimerUFOANone, \
00124 letimerRepeatFree \
00125 }
00126
00127
00128
00129
00130
00131
00132 uint32_t LETIMER_CompareGet(LETIMER_TypeDef *letimer, unsigned int comp);
00133 void LETIMER_CompareSet(LETIMER_TypeDef *letimer,
00134 unsigned int comp,
00135 uint32_t value);
00136
00137
00138
00148 __STATIC_INLINE uint32_t LETIMER_CounterGet(LETIMER_TypeDef *letimer)
00149 {
00150 return(letimer->CNT);
00151 }
00152
00153
00154 void LETIMER_Enable(LETIMER_TypeDef *letimer, bool enable);
00155 void LETIMER_FreezeEnable(LETIMER_TypeDef *letimer, bool enable);
00156 void LETIMER_Init(LETIMER_TypeDef *letimer, const LETIMER_Init_TypeDef *init);
00157
00158
00159
00171 __STATIC_INLINE void LETIMER_IntClear(LETIMER_TypeDef *letimer, uint32_t flags)
00172 {
00173 letimer->IFC = flags;
00174 }
00175
00176
00177
00188 __STATIC_INLINE void LETIMER_IntDisable(LETIMER_TypeDef *letimer, uint32_t flags)
00189 {
00190 letimer->IEN &= ~(flags);
00191 }
00192
00193
00194
00210 __STATIC_INLINE void LETIMER_IntEnable(LETIMER_TypeDef *letimer, uint32_t flags)
00211 {
00212 letimer->IEN |= flags;
00213 }
00214
00215
00216
00230 __STATIC_INLINE uint32_t LETIMER_IntGet(LETIMER_TypeDef *letimer)
00231 {
00232 return(letimer->IF);
00233 }
00234
00235
00236
00247 __STATIC_INLINE void LETIMER_IntSet(LETIMER_TypeDef *letimer, uint32_t flags)
00248 {
00249 letimer->IFS = flags;
00250 }
00251
00252 uint32_t LETIMER_RepeatGet(LETIMER_TypeDef *letimer, unsigned int rep);
00253 void LETIMER_RepeatSet(LETIMER_TypeDef *letimer,
00254 unsigned int rep,
00255 uint32_t value);
00256 void LETIMER_Reset(LETIMER_TypeDef *letimer);
00257
00258
00262 #ifdef __cplusplus
00263 }
00264 #endif
00265
00266 #endif
00267
00268 #endif