Digital Control System / Mbed 2 deprecated Lab1_2

Dependencies:   mbed

Committer:
duncan_120
Date:
Wed Oct 27 05:12:47 2021 +0000
Revision:
2:b514c679dba8
Parent:
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 1:2c4a65353203 18
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 1:2c4a65353203 33
duncan_120 1:2c4a65353203 34 InitializeTimer();
duncan_120 1:2c4a65353203 35
duncan_120 1:2c4a65353203 36 while(1){
duncan_120 1:2c4a65353203 37 //please write your code here
duncan_120 0:3fda85229347 38 wait(1);
duncan_120 0:3fda85229347 39 i++;
duncan_120 0:3fda85229347 40 }
duncan_120 0:3fda85229347 41 }
duncan_120 0:3fda85229347 42
duncan_120 0:3fda85229347 43 void InitializeUart()
duncan_120 0:3fda85229347 44 {
duncan_120 0:3fda85229347 45 myled1= 1;
duncan_120 0:3fda85229347 46 myled2= 1;
duncan_120 0:3fda85229347 47 uart.baud(BAUD_RATE);
duncan_120 0:3fda85229347 48 uart.attach(&UartReceiveInterrupt, Serial::RxIrq);
duncan_120 0:3fda85229347 49 uart.printf("UART OK\r\n");
duncan_120 0:3fda85229347 50 }
duncan_120 0:3fda85229347 51
duncan_120 0:3fda85229347 52
duncan_120 0:3fda85229347 53 void UartReceiveInterrupt()
duncan_120 0:3fda85229347 54 {
duncan_120 0:3fda85229347 55 while(uart.readable())
duncan_120 0:3fda85229347 56 {
duncan_120 0:3fda85229347 57 // write your code here
duncan_120 0:3fda85229347 58 if(uart.getc())
duncan_120 0:3fda85229347 59 {
duncan_120 0:3fda85229347 60 uart.printf("This program runs %d seconds.\r\n",i);
duncan_120 1:2c4a65353203 61
duncan_120 0:3fda85229347 62 }
duncan_120 0:3fda85229347 63 }
duncan_120 0:3fda85229347 64 }
duncan_120 0:3fda85229347 65
duncan_120 0:3fda85229347 66
duncan_120 0:3fda85229347 67
duncan_120 0:3fda85229347 68 void InitializeTimer()
duncan_120 0:3fda85229347 69 {
duncan_120 0:3fda85229347 70 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 71 uart.printf("TIMER OK\r\n");
duncan_120 0:3fda85229347 72 myled1= 0;
duncan_120 0:3fda85229347 73 myled2= 1;
duncan_120 0:3fda85229347 74 }
duncan_120 0:3fda85229347 75
duncan_120 0:3fda85229347 76
duncan_120 0:3fda85229347 77 void TimerInterrupt()
duncan_120 0:3fda85229347 78 {
duncan_120 0:3fda85229347 79 static int timer_count = 0;
duncan_120 0:3fda85229347 80 // write your code here
duncan_120 0:3fda85229347 81 if(timer_count == 500)
duncan_120 0:3fda85229347 82 {
duncan_120 0:3fda85229347 83 myled1= 1; //1暗 0亮
duncan_120 0:3fda85229347 84 myled2= 0;
duncan_120 0:3fda85229347 85 timer_count++;
duncan_120 0:3fda85229347 86 }
duncan_120 0:3fda85229347 87 else if (timer_count == 2500)
duncan_120 0:3fda85229347 88 {
duncan_120 0:3fda85229347 89 myled1= 0;
duncan_120 0:3fda85229347 90 myled2= 1;
duncan_120 0:3fda85229347 91 timer_count = 0;
duncan_120 0:3fda85229347 92
duncan_120 0:3fda85229347 93 }
duncan_120 0:3fda85229347 94 else
duncan_120 0:3fda85229347 95 {
duncan_120 0:3fda85229347 96 timer_count++;
duncan_120 0:3fda85229347 97
duncan_120 0:3fda85229347 98 }
duncan_120 0:3fda85229347 99 }