A31G11x F/W Packages  2.5.0
ABOV Cortex-M0+ Core based MCUs Integrated Driver
A31G11x_hal_timer2n.c
Go to the documentation of this file.
1 /***************************************************************************//****************************************************************************/
34 
35 /* Includes ----------------------------------------------------------------- */
36 //******************************************************************************
37 // Include
38 //******************************************************************************
39 
40 #include "A31G11x_hal_timer2n.h"
41 
42 /* Public Functions --------------------------------------------------------- */
43 //******************************************************************************
44 // Function
45 //******************************************************************************
46 
47 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
64 HAL_Status_Type HAL_TIMER2n_Init( TIMER2n_Type* TIMER2x, TIMER2n_MODE_OPT TimerCounterMode, void* TIMER2n_Config )
65 {
66  TIMER2n_PERIODICCFG_Type* pTimeCfg;
67  TIMER2n_PWMCFG_Type* pPwmOneshotCfg;
68  TIMER2n_CAPTURECFG_Type* pCaptureCfg;
69  uint16_t reg_val16;
70 
71  /* Check TIMER2 handle */
72  if( TIMER2x == NULL )
73  {
74  return HAL_ERROR;
75  }
76 
77 #if 1 // supported
78  if( TIMER2x == ( TIMER2n_Type* )TIMER20 )
79  {
80  SCUCG->PPCLKEN1_b.T20CLKE = 1;
81  }
82 #endif
83 
84 #if 1 // supported
85  if( TIMER2x == ( TIMER2n_Type* )TIMER21 )
86  {
87  SCUCG->PPCLKEN1_b.T21CLKE = 1;
88  }
89 #endif
90 
91  if( TimerCounterMode == TIMER2n_PERIODIC_MODE )
92  {
93  pTimeCfg = ( TIMER2n_PERIODICCFG_Type* )TIMER2n_Config;
94 
95  SCUCG->PPCLKSR_b.T20CLK = pTimeCfg->TCLK_SEL;
96  reg_val16 = 0
97  | ( TimerCounterMode << 12 )
98  | TIMER2n_CR_CLK_SET( pTimeCfg->CkSel )
99  | TIMER2n_CR_ECE_SET( pTimeCfg->ExtCkEdge )
100  | TIMER2n_CR_OPOL_SET( pTimeCfg->StartLevel )
101  | TIMER2n_CR_CPOL_SET( pTimeCfg->CapEdge )
102  ;
103  TIMER2x->CR = reg_val16;
104  TIMER2x->PREDR = ( ( pTimeCfg->Prescaler - 1 ) & TIMER2n_PREDR_MASK );
105  TIMER2x->ADR = pTimeCfg->ADR;
106  TIMER2x->BDR = pTimeCfg->BDR;
107  }
108  else if( ( TimerCounterMode == TIMER2n_PWM_MODE ) || ( TimerCounterMode == TIMER2n_ONESHOT_MODE ) )
109  {
110  pPwmOneshotCfg = ( TIMER2n_PWMCFG_Type* )TIMER2n_Config;
111 
112  SCUCG->PPCLKSR_b.T20CLK = pPwmOneshotCfg->TCLK_SEL;
113  reg_val16 = 0
114  | ( TimerCounterMode << 12 )
115  | TIMER2n_CR_CLK_SET( pPwmOneshotCfg->CkSel )
116  | TIMER2n_CR_ECE_SET( pPwmOneshotCfg->ExtCkEdge )
117  | TIMER2n_CR_OPOL_SET( pPwmOneshotCfg->StartLevel )
118  | TIMER2n_CR_CPOL_SET( pPwmOneshotCfg->CapEdge )
119  ;
120  TIMER2x->CR = reg_val16;
121  TIMER2x->PREDR = ( ( pPwmOneshotCfg->Prescaler - 1 ) & TIMER2n_PREDR_MASK );
122  TIMER2x->ADR = pPwmOneshotCfg->ADR;
123  TIMER2x->BDR = pPwmOneshotCfg->BDR;
124  }
125  else if( TimerCounterMode == TIMER2n_CAPTURE_MODE )
126  {
127  pCaptureCfg = ( TIMER2n_CAPTURECFG_Type* )TIMER2n_Config;
128 
129  SCUCG->PPCLKSR_b.T20CLK = pCaptureCfg->TCLK_SEL;
130  reg_val16 = 0
131  | ( TimerCounterMode << 12 )
132  | TIMER2n_CR_CLK_SET( pCaptureCfg->CkSel )
133  | TIMER2n_CR_CPOL_SET( pCaptureCfg->ClrMode )
134  | TIMER2n_CR_CAPSEL_SET( pCaptureCfg->CAPCkSel )
135  ;
136  TIMER2x->CR = reg_val16;
137  TIMER2x->PREDR = ( ( pCaptureCfg->Prescaler - 1 ) & TIMER2n_PREDR_MASK );
138  }
139 
140  TIMER2x->CR_b.T2nCLR = TIMER2n_CLEAR;
141 
142  return HAL_OK;
143 }
144 
145 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
152 HAL_Status_Type HAL_TIMER2n_DeInit( TIMER2n_Type* TIMER2x )
153 {
154  /* Check TIMER2 handle */
155  if( TIMER2x == NULL )
156  {
157  return HAL_ERROR;
158  }
159 
160  // Disable timer/counter
161  TIMER2x->CR_b.T2nEN = 0;
162 
163 #if 1 // supported
164  if( TIMER2x == ( TIMER2n_Type* )TIMER20 )
165  {
166  SCUCG->PPCLKEN1_b.T20CLKE = 0;
167  }
168 #endif
169 
170 #if 1 // supported
171  if( TIMER2x == ( TIMER2n_Type* )TIMER21 )
172  {
173  SCUCG->PPCLKEN1_b.T21CLKE = 0;
174  }
175 #endif
176 
177  return HAL_OK;
178 }
179 
180 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
194 HAL_Status_Type HAL_TIMER2n_ConfigInterrupt( TIMER2n_Type* TIMER2x, TIMER2n_INT_Type TIMER2n_IntCfg, FunctionalState NewState )
195 {
196  /* Check TIMER2 handle */
197  if( TIMER2x == NULL )
198  {
199  return HAL_ERROR;
200  }
201 
202  switch( TIMER2n_IntCfg )
203  {
205  if( NewState == ENABLE )
206  {
207  TIMER2x->CR_b.T2nMIEN = 1;
208  }
209  else if( NewState == DISABLE )
210  {
211  TIMER2x->CR_b.T2nMIEN = 0;
212  }
213  break;
215  if( NewState == ENABLE )
216  {
217  TIMER2x->CR_b.T2nCIEN = 1;
218  }
219  else if( NewState == DISABLE )
220  {
221  TIMER2x->CR_b.T2nCIEN = 0;
222  }
223  break;
224  }
225 
226  return HAL_OK;
227 }
228 
229 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
239 HAL_Status_Type HAL_TIMER2n_Cmd( TIMER2n_Type* TIMER2x, FunctionalState NewState )
240 {
241  /* Check TIMER2 handle */
242  if( TIMER2x == NULL )
243  {
244  return HAL_ERROR;
245  }
246 
247  if( NewState == ENABLE )
248  {
249  TIMER2x->CR_b.T2nEN = TIMER2n_ENABLE;
250  }
251  else
252  {
253  TIMER2x->CR_b.T2nEN = TIMER2n_DISABLE;
254  }
255 
256  return HAL_OK;
257 }
258 
259 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
267 {
268  /* Check TIMER2 handle */
269  if( TIMER2x == NULL )
270  {
271  return HAL_ERROR;
272  }
273 
274  TIMER2x->CR_b.T2nCLR |= TIMER2n_CLEAR;
275 
276  return HAL_OK;
277 }
278 
279 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
291 HAL_Status_Type HAL_TIMER2n_UpdateCountValue( TIMER2n_Type* TIMER2x, uint8_t CountCh, uint16_t Value )
292 {
293  /* Check TIMER2 handle */
294  if( TIMER2x == NULL )
295  {
296  return HAL_ERROR;
297  }
298 
299  switch( CountCh )
300  {
301  case 0:
302  TIMER2x->ADR = Value;
303  break;
304  case 1:
305  TIMER2x->BDR = Value;
306  break;
307  }
308 
309  return HAL_OK;
310 }
311 
312 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
321 HAL_Status_Type HAL_TIMER2n_ClearStatus( TIMER2n_Type* TIMER2x, uint8_t value )
322 {
323  /* Check TIMER2 handle */
324  if( TIMER2x == NULL )
325  {
326  return HAL_ERROR;
327  }
328 
329  TIMER2x->CR |= ( 0xD & value );
330 
331  return HAL_OK;
332 }
333 
334 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
341 uint8_t HAL_TIMER2n_GetStatus( TIMER2n_Type* TIMER2x )
342 {
343  return TIMER2x->CR;
344 }
345 
346 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
353 uint32_t HAL_TIMER2n_GetCaptureData( TIMER2n_Type* TIMER2x )
354 {
355  return TIMER2x->CAPDR;
356 }
357 
TIMER2n_INT_Type
HAL_Status_Type
HAL_Status_Type HAL_TIMER2n_ConfigInterrupt(TIMER2n_Type *TIMER2x, TIMER2n_INT_Type TIMER2n_IntCfg, FunctionalState NewState)
Configure the peripheral interrupt.
HAL_Status_Type HAL_TIMER2n_ClearCounter(TIMER2n_Type *TIMER2x)
Clear Timer/Counter device,.
uint8_t HAL_TIMER2n_GetStatus(TIMER2n_Type *TIMER2x)
Get Timer Status.
HAL_Status_Type HAL_TIMER2n_UpdateCountValue(TIMER2n_Type *TIMER2x, uint8_t CountCh, uint16_t Value)
Update value.
HAL_Status_Type HAL_TIMER2n_ClearStatus(TIMER2n_Type *TIMER2x, uint8_t value)
Clear Timer Status.
uint32_t HAL_TIMER2n_GetCaptureData(TIMER2n_Type *TIMER2x)
Read value of capture register in timer/counter device.
FunctionalState
HAL_Status_Type HAL_TIMER2n_DeInit(TIMER2n_Type *TIMER2x)
Close Timer/Counter device.
Contains all macro definitions and function prototypes support for timer2n firmware library on A31G11...
HAL_Status_Type HAL_TIMER2n_Cmd(TIMER2n_Type *TIMER2x, FunctionalState NewState)
Start/Stop Timer/Counter device.
HAL_Status_Type HAL_TIMER2n_Init(TIMER2n_Type *TIMER2x, TIMER2n_MODE_OPT TimerCounterMode, void *TIMER2n_Config)
Initialize the TIMER2n peripheral with the specified parameters.
TIMER2n_MODE_OPT