EE445M RTOS
Taken at the University of Texas Spring 2015
timer.h File Reference
#include <stdint.h>
#include <stdbool.h>
#include "libhw/hardware.h"
Include dependency graph for timer.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define timer_metadata_init_(_name, _base, _frequency, _interrupt, _periodic)
 
#define timer_metadata_init(_base, _frequency, _interrupt, _periodic)   timer_metadata_init_(timer_metadata, _base, _frequency, _interrupt, _periodic)
 

Functions

void timer_add_interrupt (hw_metadata metadata)
 

Macro Definition Documentation

#define timer_metadata_init (   _base,
  _frequency,
  _interrupt,
  _periodic 
)    timer_metadata_init_(timer_metadata, _base, _frequency, _interrupt, _periodic)

Create a struct named `timer_metadata'.

Definition at line 21 of file timer.h.

Referenced by button_debounce_start(), main(), sA_Handler(), TIMER0A_Handler(), TIMER1A_Handler(), and TIMER2A_Handler().

#define timer_metadata_init_ (   _name,
  _base,
  _frequency,
  _interrupt,
  _periodic 
)
Value:
hw_metadata _name; \
_name.timer = (hw_timer_metadata) { \
.base = (memory_address_t) _base, \
.frequency = (uint32_t) _frequency, \
.interrupt = (uint32_t) _interrupt, \
.periodic = (uint32_t) _periodic \
}
memory_address_t base
Definition: hardware.h:63
hw_timer_metadata timer
Definition: hardware.h:98
int32_t memory_address_t
Definition: nexus.h:48

Create a struct named _name.

Definition at line 11 of file timer.h.

Function Documentation

void timer_add_interrupt ( hw_metadata  metadata)

Schedule a task (function) to be invoked periodically.

Parameters
Metadataregarding the timer peripheral and isr to use.

Definition at line 18 of file timer.c.

References hw_timer_metadata::base, hw_timer_metadata::frequency, IntEnable(), hw_timer_metadata::interrupt, hw_timer_metadata::periodic, SysCtlClockGet(), hw_metadata::timer, TIMER_A, TIMER_DEFAULT_PRIORITY, TIMER_TIMA_TIMEOUT, TimerConfigure(), TimerEnable(), TimerIntEnable(), and TimerLoadSet().

Referenced by hw_channel_init().

18  {
19 
20  TimerConfigure(metadata.timer.base, metadata.timer.periodic);
21  TimerLoadSet(metadata.timer.base, TIMER_A, SysCtlClockGet() / metadata.timer.frequency);
24  TimerEnable(metadata.timer.base, TIMER_A);
25 }
void TimerIntEnable(uint32_t ui32Base, uint32_t ui32IntFlags)
Definition: timer.c:1464
#define TIMER_TIMA_TIMEOUT
Definition: timer.h:135
uint32_t SysCtlClockGet(void)
Definition: sysctl.c:2727
frequency_t frequency
Definition: hardware.h:64
uint32_t interrupt
Definition: hardware.h:65
#define TIMER_A
Definition: timer.h:152
memory_address_t base
Definition: hardware.h:63
void TimerConfigure(uint32_t ui32Base, uint32_t ui32Config)
Definition: timer.c:347
#define TIMER_DEFAULT_PRIORITY
Definition: timer.c:16
hw_timer_metadata timer
Definition: hardware.h:98
uint32_t periodic
Definition: hardware.h:66
void TimerEnable(uint32_t ui32Base, uint32_t ui32Timer)
Definition: timer.c:210
void TimerLoadSet(uint32_t ui32Base, uint32_t ui32Timer, uint32_t ui32Value)
Definition: timer.c:969
void IntEnable(uint32_t ui32Interrupt)
Definition: interrupt.c:610

Here is the call graph for this function:

Here is the caller graph for this function: