Tset program for SoftSerial library. Only for F446RE & L432KC.

Dependencies:   BufferedSoftSerial

Committer:
kenjiArai
Date:
Tue May 12 05:42:35 2020 +0000
Revision:
1:14d1cec89444
Parent:
0:98865e300cd5
updated library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:98865e300cd5 1 /*
kenjiArai 0:98865e300cd5 2 * Mbed Application program
kenjiArai 0:98865e300cd5 3 * SoftSerial(also BufferedSoftSerial) function test programs
kenjiArai 0:98865e300cd5 4 * UART 3 channels
kenjiArai 0:98865e300cd5 5 * (1) Mbed Serial communication line as "pc"
kenjiArai 0:98865e300cd5 6 * (2) CPU another UART channel as "ser"
kenjiArai 0:98865e300cd5 7 * (3) Software Serial channel as "dev"
kenjiArai 0:98865e300cd5 8 *
kenjiArai 0:98865e300cd5 9 * Copyright (c) 2020 Kenji Arai / JH1PJL
kenjiArai 0:98865e300cd5 10 * http://www7b.biglobe.ne.jp/~kenjia/
kenjiArai 0:98865e300cd5 11 * https://os.mbed.com/users/kenjiArai/
kenjiArai 0:98865e300cd5 12 * Created: May 9th, 2020
kenjiArai 1:14d1cec89444 13 * Revised: May 11th, 2020
kenjiArai 0:98865e300cd5 14 */
kenjiArai 0:98865e300cd5 15
kenjiArai 0:98865e300cd5 16 /*
kenjiArai 0:98865e300cd5 17 Tested board on OS5.15.3
kenjiArai 0:98865e300cd5 18 Nucleo-F446RE, Nucleo-L432KC
kenjiArai 0:98865e300cd5 19 */
kenjiArai 0:98865e300cd5 20
kenjiArai 0:98865e300cd5 21 // Pre-selection --------------------------------------------------------------
kenjiArai 0:98865e300cd5 22 #include "select_example.h"
kenjiArai 0:98865e300cd5 23 //#define EXAMPLE_3
kenjiArai 0:98865e300cd5 24 #ifdef EXAMPLE_3
kenjiArai 0:98865e300cd5 25 #warning "Select 3"
kenjiArai 0:98865e300cd5 26
kenjiArai 0:98865e300cd5 27 // Include --------------------------------------------------------------------
kenjiArai 0:98865e300cd5 28 #include "mbed.h"
kenjiArai 0:98865e300cd5 29 #include "BufferedSoftSerial.h"
kenjiArai 0:98865e300cd5 30
kenjiArai 0:98865e300cd5 31 // Definition -----------------------------------------------------------------
kenjiArai 0:98865e300cd5 32 #if (MBED_MAJOR_VERSION == 2)
kenjiArai 0:98865e300cd5 33 #error "Cannot run on OS2"
kenjiArai 0:98865e300cd5 34 #endif
kenjiArai 0:98865e300cd5 35
kenjiArai 1:14d1cec89444 36 #define BAUD 9600
kenjiArai 1:14d1cec89444 37 //#define BAUD 14400
kenjiArai 1:14d1cec89444 38 //#define BAUD 19200 // No continuous transmission
kenjiArai 1:14d1cec89444 39 //#define BAUD 38400 // NOT SUCCESS!!
kenjiArai 1:14d1cec89444 40
kenjiArai 0:98865e300cd5 41 // Constructor ----------------------------------------------------------------
kenjiArai 0:98865e300cd5 42 #if defined(TARGET_NUCLEO_L432KC)
kenjiArai 0:98865e300cd5 43 DigitalOut test_point(D12);
kenjiArai 1:14d1cec89444 44 Serial ser(D5, D4, BAUD);
kenjiArai 0:98865e300cd5 45 BufferedSoftSerial dev(D6,D3);
kenjiArai 0:98865e300cd5 46 #elif defined(TARGET_NUCLEO_F446RE)
kenjiArai 0:98865e300cd5 47 DigitalOut test_point(A0);
kenjiArai 1:14d1cec89444 48 Serial ser(D8, D2, BAUD);
kenjiArai 0:98865e300cd5 49 BufferedSoftSerial dev(D4,D3);
kenjiArai 0:98865e300cd5 50 #endif
kenjiArai 1:14d1cec89444 51 Serial pc(USBTX,USBRX, BAUD);
kenjiArai 0:98865e300cd5 52
kenjiArai 0:98865e300cd5 53 // RAM ------------------------------------------------------------------------
kenjiArai 0:98865e300cd5 54
kenjiArai 0:98865e300cd5 55 // ROM / Constant data --------------------------------------------------------
kenjiArai 0:98865e300cd5 56
kenjiArai 0:98865e300cd5 57 // Function prototypes --------------------------------------------------------
kenjiArai 0:98865e300cd5 58 void pc2dev(void const *args);
kenjiArai 0:98865e300cd5 59 void dev2pc(void const *args);
kenjiArai 0:98865e300cd5 60
kenjiArai 0:98865e300cd5 61 //------------------------------------------------------------------------------
kenjiArai 0:98865e300cd5 62 // Control Program
kenjiArai 0:98865e300cd5 63 //------------------------------------------------------------------------------
kenjiArai 0:98865e300cd5 64 osThreadDef(pc2dev, osPriorityNormal,1024);
kenjiArai 0:98865e300cd5 65 osThreadDef(dev2pc, osPriorityNormal,1024);
kenjiArai 0:98865e300cd5 66
kenjiArai 0:98865e300cd5 67 int main()
kenjiArai 0:98865e300cd5 68 {
kenjiArai 1:14d1cec89444 69 dev.baud(BAUD);
kenjiArai 0:98865e300cd5 70 // Start tasks
kenjiArai 0:98865e300cd5 71 osThreadCreate(osThread(pc2dev), NULL);
kenjiArai 0:98865e300cd5 72 osThreadCreate(osThread(dev2pc), NULL);
kenjiArai 0:98865e300cd5 73 // main routine
kenjiArai 0:98865e300cd5 74 int count = 0;
kenjiArai 0:98865e300cd5 75 while(true) {
kenjiArai 0:98865e300cd5 76 ser.printf( "Time passed %4d [sec]\r\n", count++);
kenjiArai 0:98865e300cd5 77 ThisThread::sleep_for(1000);
kenjiArai 0:98865e300cd5 78 }
kenjiArai 0:98865e300cd5 79 }
kenjiArai 0:98865e300cd5 80
kenjiArai 0:98865e300cd5 81 void pc2dev(void const *args)
kenjiArai 0:98865e300cd5 82 {
kenjiArai 0:98865e300cd5 83 while(true) {
kenjiArai 0:98865e300cd5 84 if (pc.readable()) {
kenjiArai 0:98865e300cd5 85 dev.putc(pc.getc());
kenjiArai 0:98865e300cd5 86 } else {
kenjiArai 0:98865e300cd5 87 ThisThread::yield();
kenjiArai 0:98865e300cd5 88 }
kenjiArai 0:98865e300cd5 89 }
kenjiArai 0:98865e300cd5 90 }
kenjiArai 0:98865e300cd5 91
kenjiArai 0:98865e300cd5 92 void dev2pc(void const *args)
kenjiArai 0:98865e300cd5 93 {
kenjiArai 0:98865e300cd5 94 while(true) {
kenjiArai 0:98865e300cd5 95 if (dev.readable()) {
kenjiArai 0:98865e300cd5 96 pc.putc(dev.getc());
kenjiArai 0:98865e300cd5 97 } else {
kenjiArai 0:98865e300cd5 98 ThisThread::yield();
kenjiArai 0:98865e300cd5 99 }
kenjiArai 0:98865e300cd5 100 }
kenjiArai 0:98865e300cd5 101 }
kenjiArai 0:98865e300cd5 102
kenjiArai 0:98865e300cd5 103 #endif //#ifdef EXAMPLE_3