Yiming Zhang
/
botton
mid
main.cpp@0:9a525a0d1d3f, 2020-04-27 (annotated)
- Committer:
- sjuzyz
- Date:
- Mon Apr 27 12:01:16 2020 +0000
- Revision:
- 0:9a525a0d1d3f
mid
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sjuzyz | 0:9a525a0d1d3f | 1 | #include "mbed.h" |
sjuzyz | 0:9a525a0d1d3f | 2 | #include "N5110.h" |
sjuzyz | 0:9a525a0d1d3f | 3 | |
sjuzyz | 0:9a525a0d1d3f | 4 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
sjuzyz | 0:9a525a0d1d3f | 5 | |
sjuzyz | 0:9a525a0d1d3f | 6 | InterruptIn buttonL(PTB18); |
sjuzyz | 0:9a525a0d1d3f | 7 | InterruptIn buttonR(PTB3); |
sjuzyz | 0:9a525a0d1d3f | 8 | |
sjuzyz | 0:9a525a0d1d3f | 9 | // g_ prefix makes it easier to distinguish it as global |
sjuzyz | 0:9a525a0d1d3f | 10 | volatile int g_buttonL_flag = 0; |
sjuzyz | 0:9a525a0d1d3f | 11 | volatile int g_buttonR_flag = 0; |
sjuzyz | 0:9a525a0d1d3f | 12 | // Button L&R interrupt service routine |
sjuzyz | 0:9a525a0d1d3f | 13 | void buttonL_isr(); |
sjuzyz | 0:9a525a0d1d3f | 14 | void buttonR_isr(); |
sjuzyz | 0:9a525a0d1d3f | 15 | |
sjuzyz | 0:9a525a0d1d3f | 16 | int main() { |
sjuzyz | 0:9a525a0d1d3f | 17 | |
sjuzyz | 0:9a525a0d1d3f | 18 | lcd.init(); |
sjuzyz | 0:9a525a0d1d3f | 19 | |
sjuzyz | 0:9a525a0d1d3f | 20 | // Button L&R is connected between the pin and 3.3 V, we therefore need to turn on the internal pull-down resister |
sjuzyz | 0:9a525a0d1d3f | 21 | buttonL.mode(PullDown); |
sjuzyz | 0:9a525a0d1d3f | 22 | buttonR.mode(PullDown); |
sjuzyz | 0:9a525a0d1d3f | 23 | // It will return 0 by default and a 1 when pressed i.e. cause a rising edge |
sjuzyz | 0:9a525a0d1d3f | 24 | buttonL.rise(&buttonL_isr); |
sjuzyz | 0:9a525a0d1d3f | 25 | buttonR.rise(&buttonR_isr); |
sjuzyz | 0:9a525a0d1d3f | 26 | |
sjuzyz | 0:9a525a0d1d3f | 27 | int p=20, q=3; //位置 |
sjuzyz | 0:9a525a0d1d3f | 28 | int a=2, b=1; //步长 |
sjuzyz | 0:9a525a0d1d3f | 29 | |
sjuzyz | 0:9a525a0d1d3f | 30 | while(1) { |
sjuzyz | 0:9a525a0d1d3f | 31 | |
sjuzyz | 0:9a525a0d1d3f | 32 | lcd.clear(); |
sjuzyz | 0:9a525a0d1d3f | 33 | lcd.printString("Hello!",p,q); |
sjuzyz | 0:9a525a0d1d3f | 34 | |
sjuzyz | 0:9a525a0d1d3f | 35 | if (g_buttonL_flag) { |
sjuzyz | 0:9a525a0d1d3f | 36 | p=p-a; |
sjuzyz | 0:9a525a0d1d3f | 37 | q=q-b; |
sjuzyz | 0:9a525a0d1d3f | 38 | g_buttonL_flag = 0; // if it has, clear the flag |
sjuzyz | 0:9a525a0d1d3f | 39 | } |
sjuzyz | 0:9a525a0d1d3f | 40 | |
sjuzyz | 0:9a525a0d1d3f | 41 | if (g_buttonR_flag) { |
sjuzyz | 0:9a525a0d1d3f | 42 | p=p+a; |
sjuzyz | 0:9a525a0d1d3f | 43 | q=q+b; |
sjuzyz | 0:9a525a0d1d3f | 44 | g_buttonR_flag = 0; // if it has, clear the flag |
sjuzyz | 0:9a525a0d1d3f | 45 | } |
sjuzyz | 0:9a525a0d1d3f | 46 | |
sjuzyz | 0:9a525a0d1d3f | 47 | lcd.refresh(); |
sjuzyz | 0:9a525a0d1d3f | 48 | wait(0.1); |
sjuzyz | 0:9a525a0d1d3f | 49 | } |
sjuzyz | 0:9a525a0d1d3f | 50 | |
sjuzyz | 0:9a525a0d1d3f | 51 | } |
sjuzyz | 0:9a525a0d1d3f | 52 | |
sjuzyz | 0:9a525a0d1d3f | 53 | void buttonL_isr() |
sjuzyz | 0:9a525a0d1d3f | 54 | { |
sjuzyz | 0:9a525a0d1d3f | 55 | g_buttonL_flag = 1; // set flag in ISR |
sjuzyz | 0:9a525a0d1d3f | 56 | } |
sjuzyz | 0:9a525a0d1d3f | 57 | |
sjuzyz | 0:9a525a0d1d3f | 58 | void buttonR_isr() |
sjuzyz | 0:9a525a0d1d3f | 59 | { |
sjuzyz | 0:9a525a0d1d3f | 60 | g_buttonR_flag = 1; // set flag in ISR |
sjuzyz | 0:9a525a0d1d3f | 61 | } |