EE445M RTOS
Taken at the University of Texas Spring 2015
test-timer.c
Go to the documentation of this file.
1 /* -*- mode: c; c-basic-offset: 4; -*- */
2 /* Created by Hershal Bhave and Eric Crosson on 2015-01-24 */
3 /* Revision History: Look in Git FGT */
4 
5 /* Standard Libs */
6 #include <stdint.h>
7 #include <stdbool.h>
8 #include <stdio.h>
9 #include <stdlib.h>
10 
11 /* TI Includes */
12 #include "inc/hw_ints.h"
13 #include "inc/hw_memmap.h"
14 
15 /* Driverlib Includes */
16 #include "driverlib/debug.h"
17 #include "driverlib/gpio.h"
18 #include "driverlib/timer.h"
19 #include "driverlib/interrupt.h"
20 #include "driverlib/pin_map.h"
21 #include "driverlib/sysctl.h"
22 
23 #include "libtimer/timer.h"
24 #include "libos/semaphore.h"
25 
26 #include <sys/stat.h>
27 
28 #define HEARTBEAT_MODAL
29 #include "libheart/heartbeat.h"
30 
31 volatile uint32_t sem;
33 uint32_t wait_counter;
34 
35 uint32_t red_work = 0;
36 uint32_t blue_work = 0;
37 uint32_t green_work = 0;
38 
39 void led_blink_red() {
40  while (1) {
41  ++red_work;
45  }
46 }
47 
49  /* while (1) { */
50  ++green_work;
53  /* os_surrender_context(); */
54  /* } */
55 }
56 
58  while (1) {
59  ++blue_work;
63  }
64 }
65 
66 int main(void) {
67 
70 
71  /* Enable processor interrupts. */
73 
74  heart_init();
75  heart_init_(GPIO_PORTF_BASE, GPIO_PIN_1);
76  heart_init_(GPIO_PORTF_BASE, GPIO_PIN_2);
77  heart_init_(GPIO_PORTF_BASE, GPIO_PIN_3);
78 
79  /* begin timer init */
80  /* timer_metadata_init(TIMER0_BASE, 10 Hz, INT_TIMER0A, TIMER_CFG_ONE_SHOT); */
82  hw_driver_init(HW_TIMER, timer_metadata);
83  hw_channel_init(HW_TIMER, timer_metadata);
84  hw_subscribe(HW_TIMER, timer_metadata, led_blink_green);
85  /* end timer init */
86 
90 
92  os_launch();
93 
94  while (1) { }
95  /* postpone_death(); */
96 }
#define TIMER_CFG_PERIODIC
Definition: timer.h:62
uint32_t green_work
Definition: test-timer.c:37
#define TIMER0_BASE
Definition: hw_memmap.h:81
void GPIOPinWrite(uint32_t ui32Port, uint8_t ui8Pins, uint8_t ui8Val)
Definition: gpio.c:1038
#define SYSCTL_OSC_MAIN
Definition: sysctl.h:378
#define hw_subscribe(type, metadata, isr)
Definition: hardware.h:178
#define SYSCTL_USE_OSC
Definition: sysctl.h:350
#define GPIO_PIN_2
Definition: gpio.h:62
#define SYSCTL_XTAL_16MHZ
Definition: sysctl.h:372
#define GPIO_PIN_1
Definition: gpio.h:61
void os_threading_init()
Definition: os.c:34
void schedule(task_t task, frequency_t frequency, DEADLINE_TYPE seriousness)
Definition: os.c:386
uint32_t interrupt_counter
Definition: test-timer.c:32
void led_blink_red()
Definition: test-timer.c:39
void heart_init()
Initialize for visible transformation.
Definition: heartbeat.h:49
uint32_t wait_counter
Definition: test-timer.c:33
void led_blink_blue()
Definition: test-timer.c:57
void os_launch()
Definition: os.c:161
void hw_driver_init(HW_TYPE type, hw_metadata metadata)
Definition: hardware.c:62
uint32_t red_work
Definition: test-timer.c:35
int main(void)
Definition: test-timer.c:66
bool IntMasterDisable(void)
Definition: interrupt.c:249
#define GPIO_PIN_3
Definition: gpio.h:63
bool IntMasterEnable(void)
void led_blink_green()
Definition: test-timer.c:48
#define timer_metadata_init(_base, _frequency, _interrupt, _periodic)
Definition: timer.h:21
#define os_surrender_context()
Definition: os.h:142
volatile uint32_t sem
Definition: test-timer.c:31
#define Hz
Definition: nexus.h:45
#define SYSCTL_SYSDIV_1
Definition: sysctl.h:221
void SysCtlClockSet(uint32_t ui32Config)
Definition: sysctl.c:2532
void hw_channel_init(HW_TYPE type, hw_metadata metadata)
Definition: hardware.c:94
int32_t GPIOPinRead(uint32_t ui32Port, uint8_t ui8Pins)
Definition: gpio.c:1006
uint32_t blue_work
Definition: test-timer.c:36
#define INT_TIMER0A
Definition: hw_ints.h:435
#define GPIO_PORTF_BASE
Definition: hw_memmap.h:74