For NTHU_Racing MCU tutorial Learn to use PinInterrupt
Dependencies: mbed
main.cpp@0:21fdaaa57d18, 2017-01-22 (annotated)
- Committer:
- open4416
- Date:
- Sun Jan 22 05:08:15 2017 +0000
- Revision:
- 0:21fdaaa57d18
Not funtional yet
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
open4416 | 0:21fdaaa57d18 | 1 | #include "mbed.h" |
open4416 | 0:21fdaaa57d18 | 2 | |
open4416 | 0:21fdaaa57d18 | 3 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~GPIO registor~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// |
open4416 | 0:21fdaaa57d18 | 4 | DigitalOut led(D13); //link leg |
open4416 | 0:21fdaaa57d18 | 5 | InterruptIn button(PC_13); //same as "button(USER_BUTTON)" |
open4416 | 0:21fdaaa57d18 | 6 | Serial pc(D1, D0); //Serial reg |
open4416 | 0:21fdaaa57d18 | 7 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~end of GPIO registor~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// |
open4416 | 0:21fdaaa57d18 | 8 | |
open4416 | 0:21fdaaa57d18 | 9 | |
open4416 | 0:21fdaaa57d18 | 10 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~Varible registor~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// |
open4416 | 0:21fdaaa57d18 | 11 | Ticker TT; //call a timer |
open4416 | 0:21fdaaa57d18 | 12 | int count; //numbers of pressed |
open4416 | 0:21fdaaa57d18 | 13 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~end of Varible registor~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// |
open4416 | 0:21fdaaa57d18 | 14 | |
open4416 | 0:21fdaaa57d18 | 15 | |
open4416 | 0:21fdaaa57d18 | 16 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~Function registor~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// |
open4416 | 0:21fdaaa57d18 | 17 | void init_IO(); //initialize IO state |
open4416 | 0:21fdaaa57d18 | 18 | void init_TIMER(); //set TT_main{} rate |
open4416 | 0:21fdaaa57d18 | 19 | void TT_main(); //timebase function rated by TT |
open4416 | 0:21fdaaa57d18 | 20 | |
open4416 | 0:21fdaaa57d18 | 21 | void pressed(); //program run when pointed to here |
open4416 | 0:21fdaaa57d18 | 22 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~end of Function registor~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// |
open4416 | 0:21fdaaa57d18 | 23 | |
open4416 | 0:21fdaaa57d18 | 24 | |
open4416 | 0:21fdaaa57d18 | 25 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~main funtion~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// |
open4416 | 0:21fdaaa57d18 | 26 | int main() |
open4416 | 0:21fdaaa57d18 | 27 | { |
open4416 | 0:21fdaaa57d18 | 28 | init_IO(); //initialized value and IRQ(Interrupt request) |
open4416 | 0:21fdaaa57d18 | 29 | init_TIMER(); //start TT_main |
open4416 | 0:21fdaaa57d18 | 30 | pc.baud(9600); //set baud rate |
open4416 | 0:21fdaaa57d18 | 31 | |
open4416 | 0:21fdaaa57d18 | 32 | while(1) { //main() loop |
open4416 | 0:21fdaaa57d18 | 33 | } |
open4416 | 0:21fdaaa57d18 | 34 | |
open4416 | 0:21fdaaa57d18 | 35 | } |
open4416 | 0:21fdaaa57d18 | 36 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~end of main funtion~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// |
open4416 | 0:21fdaaa57d18 | 37 | |
open4416 | 0:21fdaaa57d18 | 38 | |
open4416 | 0:21fdaaa57d18 | 39 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~init_IO funtion~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// |
open4416 | 0:21fdaaa57d18 | 40 | void init_IO(void) //initialize |
open4416 | 0:21fdaaa57d18 | 41 | { |
open4416 | 0:21fdaaa57d18 | 42 | led = 0; |
open4416 | 0:21fdaaa57d18 | 43 | count = 0; |
open4416 | 0:21fdaaa57d18 | 44 | button.fall(&pressed); |
open4416 | 0:21fdaaa57d18 | 45 | } |
open4416 | 0:21fdaaa57d18 | 46 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~end of init_IO funtion~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// |
open4416 | 0:21fdaaa57d18 | 47 | |
open4416 | 0:21fdaaa57d18 | 48 | |
open4416 | 0:21fdaaa57d18 | 49 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~Timebase funtion~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// |
open4416 | 0:21fdaaa57d18 | 50 | void init_TIMER() //set TT_main{} rate |
open4416 | 0:21fdaaa57d18 | 51 | { |
open4416 | 0:21fdaaa57d18 | 52 | TT.attach_us(&TT_main, 500000); //rate set to 0.5 sec |
open4416 | 0:21fdaaa57d18 | 53 | } |
open4416 | 0:21fdaaa57d18 | 54 | |
open4416 | 0:21fdaaa57d18 | 55 | void TT_main() //interrupt function by TT |
open4416 | 0:21fdaaa57d18 | 56 | { |
open4416 | 0:21fdaaa57d18 | 57 | led = !led; //just to make sure program runnung |
open4416 | 0:21fdaaa57d18 | 58 | //print out data |
open4416 | 0:21fdaaa57d18 | 59 | } |
open4416 | 0:21fdaaa57d18 | 60 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~end of Timebase funtion~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// |
open4416 | 0:21fdaaa57d18 | 61 | |
open4416 | 0:21fdaaa57d18 | 62 | |
open4416 | 0:21fdaaa57d18 | 63 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~IRQ funtion~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// |
open4416 | 0:21fdaaa57d18 | 64 | void pressed() //do these shit when triger |
open4416 | 0:21fdaaa57d18 | 65 | { |
open4416 | 0:21fdaaa57d18 | 66 | //these will be run if pressed() executed |
open4416 | 0:21fdaaa57d18 | 67 | } |
open4416 | 0:21fdaaa57d18 | 68 | //~~~~~~~~~~~~~~~~~~~~~~~~~~~end of IRQ funtion~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// |