InES Hardware Abstraction Layer
hal_timer.h
Go to the documentation of this file.
1 /* ----------------------------------------------------------------------------
2  * -- _____ ______ _____ -
3  * -- |_ _| | ____|/ ____| -
4  * -- | | _ __ | |__ | (___ Institute of Embedded Systems -
5  * -- | | | '_ \| __| \___ \ Zurich University of -
6  * -- _| |_| | | | |____ ____) | Applied Sciences -
7  * -- |_____|_| |_|______|_____/ 8401 Winterthur, Switzerland -
8  * ------------------------------------------------------------------------- */
70 /* Re-definition guard */
71 #ifndef _HAL_TIMER_H
72 #define _HAL_TIMER_H
73 
74 
75 /* User includes */
76 #include "reg_stm32f4xx.h"
77 #include "hal_common.h"
78 
79 
80 /* -- Type definitions
81  * ------------------------------------------------------------------------- */
82 
83 /* **** Basic **** */
84 
89 typedef enum {
94  /* Only as output in adv. timer 1/8 */
99 
100 
105 typedef enum {
112 
113 
118 typedef enum {
122 
123 
128 typedef enum {
136 
137 
142 typedef enum {
143  HAL_TIMER_DMA_UDE = 0x0100,
144  HAL_TIMER_DMA_CC1 = 0x0200,
145  HAL_TIMER_DMA_CC2 = 0x0400,
146  HAL_TIMER_DMA_CC3 = 0x0800,
147  HAL_TIMER_DMA_CC4 = 0x1000,
150 
151 
156 typedef enum {
166 
167 
168 /* **** Filter **** */
169 
174 typedef enum {
177  /* Only for input */
180 
181 
186 typedef enum {
192 
193 
198 typedef enum {
199  HAL_TIMER_FILTER_OFF = 0u,
200  HAL_TIMER_FILTER_INT_N2 = 1u,
201  HAL_TIMER_FILTER_INT_N4 = 2u,
202  HAL_TIMER_FILTER_INT_N8 = 3u,
203  HAL_TIMER_FILTER_DTS2_N6 = 4u,
204  HAL_TIMER_FILTER_DTS2_N8 = 5u,
205  HAL_TIMER_FILTER_DTS4_N6 = 6u,
206  HAL_TIMER_FILTER_DTS4_N8 = 7u,
207  HAL_TIMER_FILTER_DTS8_N6 = 8u,
208  HAL_TIMER_FILTER_DTS8_N8 = 9u,
209  HAL_TIMER_FILTER_DTS16_N5 = 10u,
210  HAL_TIMER_FILTER_DTS16_N6 = 11u,
211  HAL_TIMER_FILTER_DTS16_N8 = 12u,
212  HAL_TIMER_FILTER_DTS32_N5 = 13u,
213  HAL_TIMER_FILTER_DTS32_N6 = 14u,
214  HAL_TIMER_FILTER_DTS32_N8 = 15u
215 } hal_timer_filter_t;
216 
217 
218 /* **** Output Compare **** */
219 
224 typedef enum {
232 
233 
234 /* **** Input Capture **** */
235 
240 typedef enum {
245 
246 
247 /* **** Clock Source **** */
248 
253 typedef enum {
258 
259 
264 typedef enum {
269 
270 
275 typedef enum {
285 
286 
291 typedef enum {
301 
302 
303 /* **** Init Structs **** */
304 
309 typedef struct {
310  uint16_t prescaler;
313  uint32_t count;
316 
317 
322 typedef struct {
323  hal_timer_filter_t mode;
327 
328 
333 typedef struct {
336  /* Only if ETRF is used as source */
339  /* Only if TRGI is used as source */
342 
343 
348 typedef struct {
353 
354 
359 typedef struct {
363  /* Only for PWM */
364  uint32_t pulse;
366 
367 
368 /* -- Public function declarations
369  * ------------------------------------------------------------------------- */
370 
375 void hal_timer_reset(reg_tim_t *timer)
376 __attribute__((deprecated("Please use ATIMx_RESET().")));
377 
383 void hal_timer_init_base(reg_tim_t *timer,
384  hal_timer_base_init_t init);
385 
392 
399 void hal_timer_init_input(reg_tim_t *timer,
400  hal_timer_channel_t channel,
402 
409 void hal_timer_init_output(reg_tim_t *timer,
410  hal_timer_channel_t channel,
412 
417 void hal_timer_start(reg_tim_t *timer);
418 
423 void hal_timer_stop(reg_tim_t *timer);
424 
431 void hal_timer_channel_set(reg_tim_t *timer,
432  hal_timer_channel_t channel,
433  hal_bool_t status);
434 
441 void hal_timer_irq_set(reg_tim_t *timer,
442  hal_timer_irq_t irq,
443  hal_bool_t status);
444 
452 
459 
466 void hal_timer_dma_set(reg_tim_t *timer,
467  hal_timer_dmasrc_t dma,
468  hal_bool_t status);
469 
475 uint32_t hal_timer_counter_read(reg_tim_t *timer);
476 
482 void hal_timer_reload_write(reg_tim_t *timer, uint32_t value);
483 
489 void hal_timer_prescaler_write(reg_tim_t *timer, uint32_t value);
490 
497 uint32_t hal_timer_compare_read(reg_tim_t *timer,
498  hal_timer_channel_t channel);
499 
507 int8_t hal_timer_compare_write(reg_tim_t *timer,
508  hal_timer_channel_t channel,
509  uint32_t value);
510 #endif
Definition: hal_timer.h:132
hal_timer_psc_t prescaler
Definition: hal_timer.h:325
Definition: hal_timer.h:158
hal_timer_filter_init_t filter
Definition: hal_timer.h:350
Definition: hal_timer.h:266
Definition: hal_timer.h:176
Definition: hal_timer.h:157
hal_timer_filter_t mode
Definition: hal_timer.h:323
Definition: hal_timer.h:90
Definition: hal_timer.h:143
Definition: hal_timer.h:226
void hal_timer_irq_set(reg_tim_t *timer, hal_timer_irq_t irq, hal_bool_t status)
Enables interrupt on specified timer.
hal_timer_channel_t
Defines the capture / compare channel of a timer.
Definition: hal_timer.h:89
Definition: hal_timer.h:120
hal_timer_mode_t
Defines counting mode of timer.
Definition: hal_timer.h:105
void hal_timer_irq_clear(reg_tim_t *timer, hal_timer_irq_t irq)
Clear specified timers interrupt.
Definition: hal_timer.h:243
Definition: hal_timer.h:163
Definition: hal_timer.h:146
Definition: hal_timer.h:147
Definition: hal_timer.h:91
hal_timer_polarity_t polarity
Definition: hal_timer.h:324
Definition: hal_timer.h:119
void hal_timer_init_clock(reg_tim_t *timer, hal_timer_clock_init_t init)
Initializes the clock source to be used by timer.
Definition: hal_timer.h:164
Definition: hal_timer.h:282
hal_timer_slavemode_t slave_mode
Definition: hal_timer.h:335
Definition: hal_timer.h:279
hal_timer_run_t run_mode
Definition: hal_timer.h:312
Definition: hal_timer.h:188
Definition: hal_timer.h:161
Definition: hal_timer.h:292
Definition: hal_timer.h:298
Definition: hal_timer.h:93
hal_timer_dmasrc_t
Definition: hal_timer.h:142
Initialization structure for basic timer functionality.
Definition: hal_timer.h:333
Definition: hal_timer.h:159
Definition: hal_timer.h:130
Registries for STM32F4xx.
Definition: hal_timer.h:144
Definition: hal_timer.h:297
uint32_t pulse
Definition: hal_timer.h:364
Definition: hal_timer.h:276
void hal_timer_dma_set(reg_tim_t *timer, hal_timer_dmasrc_t dma, hal_bool_t status)
Enable DMA for specific timer.
Definition: hal_timer.h:348
hal_timer_ic_sel_t
Defines the route for trigger input.
Definition: hal_timer.h:240
Representation of Timer register.
Definition: reg_stm32f4xx.h:824
Definition: hal_timer.h:299
Definition: hal_timer.h:175
void hal_timer_init_base(reg_tim_t *timer, hal_timer_base_init_t init)
Initializes the basic timer according to the specified parameters.
Definition: hal_timer.h:277
hal_timer_trgsrc_t trg_source
Definition: hal_timer.h:340
Definition: hal_timer.h:293
hal_timer_irq_t
Defines the different interrupts used by the timer.
Definition: hal_timer.h:128
Definition: hal_timer.h:131
Definition: hal_timer.h:110
Definition: hal_timer.h:96
uint32_t hal_timer_compare_read(reg_tim_t *timer, hal_timer_channel_t channel)
Return compare register value of specified timer and channel.
hal_timer_polarity_t
Defines polarity.
Definition: hal_timer.h:174
hal_timer_oc_mode_t mode
Definition: hal_timer.h:360
hal_timer_ic_sel_t input
Definition: hal_timer.h:349
Definition: hal_timer.h:108
Definition: hal_timer.h:296
hal_timer_mastermode_t master_mode
Definition: hal_timer.h:314
Definition: hal_timer.h:178
int8_t hal_timer_compare_write(reg_tim_t *timer, hal_timer_channel_t channel, uint32_t value)
Set value of compare register of specified timer and channel.
Initialization structure for output functionality.
Definition: hal_timer.h:359
void hal_timer_reload_write(reg_tim_t *timer, uint32_t value)
Set reload value of specified timer.
Definition: hal_timer.h:241
hal_bool_t input_state
Definition: hal_timer.h:351
hal_timer_source_t source
Definition: hal_timer.h:334
Definition: hal_timer.h:129
Definition: hal_timer.h:109
void hal_timer_reset(reg_tim_t *timer) __attribute__((deprecated("Please use ATIMx_RESET().")))
Resets the specified timer to its default values.
hal_timer_run_t
Defines run mode of timer.
Definition: hal_timer.h:118
Definition: hal_timer.h:227
Definition: hal_timer.h:107
hal_timer_filter_init_t filter
Definition: hal_timer.h:337
Common #defines and typedefs.
void hal_timer_prescaler_write(reg_tim_t *timer, uint32_t value)
Set prescaler value of specified timer.
hal_timer_psc_t
Defines the filter prescaler.
Definition: hal_timer.h:186
Definition: hal_timer.h:256
Definition: hal_timer.h:187
Initialization structure for basic timer functionality.
Definition: hal_timer.h:309
uint32_t count
Definition: hal_timer.h:313
Definition: hal_timer.h:145
Definition: hal_timer.h:190
Definition: hal_timer.h:160
hal_timer_clk_dts_t filter_div
Definition: hal_timer.h:338
Definition: hal_timer.h:242
Definition: hal_timer.h:278
uint32_t hal_timer_counter_read(reg_tim_t *timer)
Return value of specified timers counter register.
Definition: hal_timer.h:97
Definition: hal_timer.h:133
void hal_timer_init_input(reg_tim_t *timer, hal_timer_channel_t channel, hal_timer_input_init_t init)
Configures the specified channel and timer input capture mode.
Definition: hal_timer.h:281
Definition: hal_timer.h:189
Definition: hal_timer.h:267
Definition: hal_timer.h:225
Definition: hal_timer.h:254
Definition: hal_timer.h:280
hal_timer_trgsrc_t
Defines the source for TRG.
Definition: hal_timer.h:275
Definition: hal_timer.h:162
hal_timer_source_t
Defines the source for the counter source.
Definition: hal_timer.h:253
uint16_t prescaler
Definition: hal_timer.h:310
Definition: hal_timer.h:283
hal_timer_mode_t mode
Definition: hal_timer.h:311
hal_timer_slavemode_t
Definition: hal_timer.h:291
hal_timer_polarity_t polarity
Definition: hal_timer.h:361
Definition: hal_timer.h:265
hal_bool_t
Often used TRUE / FALSE type.
Definition: hal_common.h:31
Definition: hal_timer.h:229
void hal_timer_stop(reg_tim_t *timer)
Stops specified timer.
hal_timer_clk_dts_t
Divider used for generating sampling clock for digital filters.
Definition: hal_timer.h:264
Definition: hal_timer.h:148
Definition: hal_timer.h:95
Definition: hal_timer.h:294
Definition: hal_timer.h:106
Definition: hal_timer.h:92
hal_bool_t output_state
Definition: hal_timer.h:362
hal_timer_mastermode_t
Definition: hal_timer.h:156
hal_bool_t hal_timer_irq_status(reg_tim_t *timer, hal_timer_irq_t irq)
Return status of specified timers interrupt.
void hal_timer_channel_set(reg_tim_t *timer, hal_timer_channel_t channel, hal_bool_t status)
Enables channel on specified timer.
void hal_timer_init_output(reg_tim_t *timer, hal_timer_channel_t channel, hal_timer_output_init_t init)
Configures the specified channel and timer output compare mode.
Definition: hal_timer.h:230
Definition: hal_timer.h:228
hal_timer_oc_mode_t
Defines mode of the output capture unit.
Definition: hal_timer.h:224
Definition: hal_timer.h:255
void hal_timer_start(reg_tim_t *timer)
Start specified timer.
Definition: hal_timer.h:295
Initialization structure for input filter.
Definition: hal_timer.h:322
Definition: hal_timer.h:134