Plays WAV file

Dependencies:   mbed Gamepad2

Committer:
eencae
Date:
Tue Jan 05 17:37:04 2016 +0000
Revision:
1:39d8765b574d
Parent:
0:44597d36d45c
Child:
2:7d65a185f9a4
Added g_ to global variable

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 0:44597d36d45c 1 /*
eencae 0:44597d36d45c 2
eencae 0:44597d36d45c 3 2645_Ticker
eencae 0:44597d36d45c 4
eencae 0:44597d36d45c 5 Sample code from ELEC2645 Week 15 Lab
eencae 0:44597d36d45c 6
eencae 0:44597d36d45c 7 Demonstrates how to use a ticker to generate a periodic timer interrupt
eencae 0:44597d36d45c 8
eencae 0:44597d36d45c 9 (c) Craig A. Evans, University of Leeds, Jan 2016
eencae 0:44597d36d45c 10
eencae 0:44597d36d45c 11 */
eencae 0:44597d36d45c 12
eencae 0:44597d36d45c 13 #include "mbed.h"
eencae 0:44597d36d45c 14
eencae 0:44597d36d45c 15 // Create objects for ticker and red LED
eencae 0:44597d36d45c 16 Ticker ticker;
eencae 0:44597d36d45c 17 DigitalOut red_led(LED_RED);
eencae 0:44597d36d45c 18
eencae 0:44597d36d45c 19 // flag - must be volatile as changes within ISR
eencae 1:39d8765b574d 20 // g_ prefix makes it easier to distinguish it as global
eencae 1:39d8765b574d 21 volatile int g_timer_flag = 0;
eencae 0:44597d36d45c 22
eencae 0:44597d36d45c 23 // function prototypes
eencae 0:44597d36d45c 24 void timer_isr();
eencae 0:44597d36d45c 25
eencae 0:44597d36d45c 26 int main()
eencae 0:44597d36d45c 27 {
eencae 0:44597d36d45c 28 // set-up the ticker so that the ISR it is called every 0.5 seconds
eencae 0:44597d36d45c 29 ticker.attach(&timer_isr,0.5);
eencae 0:44597d36d45c 30 // the on-board RGB LED is a common anode - writing a 1 to the pin will turn the LED OFF
eencae 0:44597d36d45c 31 red_led = 1;
eencae 0:44597d36d45c 32
eencae 0:44597d36d45c 33 while (1) {
eencae 0:44597d36d45c 34
eencae 0:44597d36d45c 35 // check if flag is set i.e. interrupt has occured
eencae 1:39d8765b574d 36 if (g_timer_flag) {
eencae 1:39d8765b574d 37 g_timer_flag = 0; // if it has, clear the flag
eencae 0:44597d36d45c 38
eencae 0:44597d36d45c 39 // DO TASK HERE
eencae 0:44597d36d45c 40
eencae 0:44597d36d45c 41 }
eencae 0:44597d36d45c 42
eencae 0:44597d36d45c 43 // put the MCU to sleep until an interrupt wakes it up
eencae 0:44597d36d45c 44 sleep();
eencae 0:44597d36d45c 45
eencae 0:44597d36d45c 46 }
eencae 0:44597d36d45c 47 }
eencae 0:44597d36d45c 48
eencae 0:44597d36d45c 49 // time-triggered interrupt
eencae 0:44597d36d45c 50 void timer_isr()
eencae 0:44597d36d45c 51 {
eencae 1:39d8765b574d 52 g_timer_flag = 1; // set flag in ISR
eencae 0:44597d36d45c 53 }