Digital Control System / Mbed 2 deprecated Lab1_2

Dependencies:   mbed

Committer:
duncan_120
Date:
Mon Oct 25 09:35:55 2021 +0000
Revision:
0:3fda85229347
Child:
1:2c4a65353203

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
duncan_120 0:3fda85229347 1 #include "mbed.h"
duncan_120 0:3fda85229347 2 #define BAUD_RATE 115200
duncan_120 0:3fda85229347 3 //----------------------------------------------------------------
duncan_120 0:3fda85229347 4 //----------------- Hardware Declaration -------------------
duncan_120 0:3fda85229347 5 //----------------------------------------------------------------
duncan_120 0:3fda85229347 6 Serial uart(USBTX, USBRX);
duncan_120 0:3fda85229347 7 DigitalOut myled1(A4);
duncan_120 0:3fda85229347 8 DigitalOut myled2(A5);
duncan_120 0:3fda85229347 9 Ticker timer;
duncan_120 0:3fda85229347 10
duncan_120 0:3fda85229347 11 //----------------------------------------------------------------
duncan_120 0:3fda85229347 12 //--------------------- System variable ------------------------
duncan_120 0:3fda85229347 13 //----------------------------------------------------------------
duncan_120 0:3fda85229347 14 float blink_sec = 0.2;
duncan_120 0:3fda85229347 15 const int kTimerMicroSecond = 1000;
duncan_120 0:3fda85229347 16
duncan_120 0:3fda85229347 17 int i;
duncan_120 0:3fda85229347 18 static int x=0;
duncan_120 0:3fda85229347 19
duncan_120 0:3fda85229347 20 //----------------------------------------------------------------
duncan_120 0:3fda85229347 21 //--------------------- function zone ------------------------
duncan_120 0:3fda85229347 22 //----------------------------------------------------------------
duncan_120 0:3fda85229347 23
duncan_120 0:3fda85229347 24 void InitializeTimer();
duncan_120 0:3fda85229347 25 void InitializeUart();
duncan_120 0:3fda85229347 26 void UartReceiveInterrupt();
duncan_120 0:3fda85229347 27 void TimerInterrupt();
duncan_120 0:3fda85229347 28
duncan_120 0:3fda85229347 29
duncan_120 0:3fda85229347 30 int main()
duncan_120 0:3fda85229347 31 {
duncan_120 0:3fda85229347 32 InitializeUart();
duncan_120 0:3fda85229347 33 while(1)
duncan_120 0:3fda85229347 34 {
duncan_120 0:3fda85229347 35 if(x==1) {
duncan_120 0:3fda85229347 36 InitializeTimer();
duncan_120 0:3fda85229347 37 x=0;
duncan_120 0:3fda85229347 38 }
duncan_120 0:3fda85229347 39 wait(1);
duncan_120 0:3fda85229347 40 i++;
duncan_120 0:3fda85229347 41
duncan_120 0:3fda85229347 42
duncan_120 0:3fda85229347 43 }
duncan_120 0:3fda85229347 44
duncan_120 0:3fda85229347 45 }
duncan_120 0:3fda85229347 46
duncan_120 0:3fda85229347 47 void InitializeUart()
duncan_120 0:3fda85229347 48 {
duncan_120 0:3fda85229347 49 myled1= 1;
duncan_120 0:3fda85229347 50 myled2= 1;
duncan_120 0:3fda85229347 51 uart.baud(BAUD_RATE);
duncan_120 0:3fda85229347 52 uart.attach(&UartReceiveInterrupt, Serial::RxIrq);
duncan_120 0:3fda85229347 53 uart.printf("UART OK\r\n");
duncan_120 0:3fda85229347 54 }
duncan_120 0:3fda85229347 55
duncan_120 0:3fda85229347 56
duncan_120 0:3fda85229347 57 void UartReceiveInterrupt()
duncan_120 0:3fda85229347 58 {
duncan_120 0:3fda85229347 59 while(uart.readable())
duncan_120 0:3fda85229347 60 {
duncan_120 0:3fda85229347 61 // write your code here
duncan_120 0:3fda85229347 62 if(uart.getc())
duncan_120 0:3fda85229347 63 {
duncan_120 0:3fda85229347 64 uart.printf("This program runs %d seconds.\r\n",i);
duncan_120 0:3fda85229347 65 x=1;
duncan_120 0:3fda85229347 66 }
duncan_120 0:3fda85229347 67 }
duncan_120 0:3fda85229347 68 }
duncan_120 0:3fda85229347 69
duncan_120 0:3fda85229347 70
duncan_120 0:3fda85229347 71
duncan_120 0:3fda85229347 72 void InitializeTimer()
duncan_120 0:3fda85229347 73 {
duncan_120 0:3fda85229347 74 timer.attach_us(&TimerInterrupt, kTimerMicroSecond); // the address of the function to be attached (timer1_ITR) and the interval (1000 micro-seconds)
duncan_120 0:3fda85229347 75 uart.printf("TIMER OK\r\n");
duncan_120 0:3fda85229347 76 myled1= 0;
duncan_120 0:3fda85229347 77 myled2= 1;
duncan_120 0:3fda85229347 78 }
duncan_120 0:3fda85229347 79
duncan_120 0:3fda85229347 80
duncan_120 0:3fda85229347 81 void TimerInterrupt()
duncan_120 0:3fda85229347 82 {
duncan_120 0:3fda85229347 83 static int timer_count = 0;
duncan_120 0:3fda85229347 84 // write your code here
duncan_120 0:3fda85229347 85 if(timer_count == 500)
duncan_120 0:3fda85229347 86 {
duncan_120 0:3fda85229347 87 myled1= 1; //1暗 0亮
duncan_120 0:3fda85229347 88 myled2= 0;
duncan_120 0:3fda85229347 89 timer_count++;
duncan_120 0:3fda85229347 90 uart.printf("This program runs %d seconds.\r\n",i);
duncan_120 0:3fda85229347 91 }
duncan_120 0:3fda85229347 92 else if (timer_count == 2500)
duncan_120 0:3fda85229347 93 {
duncan_120 0:3fda85229347 94 myled1= 0;
duncan_120 0:3fda85229347 95 myled2= 1;
duncan_120 0:3fda85229347 96 timer_count = 0;
duncan_120 0:3fda85229347 97 uart.printf("This program runs %d seconds.\r\n",i);
duncan_120 0:3fda85229347 98
duncan_120 0:3fda85229347 99 }
duncan_120 0:3fda85229347 100 else
duncan_120 0:3fda85229347 101 {
duncan_120 0:3fda85229347 102 timer_count++;
duncan_120 0:3fda85229347 103
duncan_120 0:3fda85229347 104 }
duncan_120 0:3fda85229347 105 }