Tset program for SoftSerial library. Only for F446RE & L432KC.
Dependencies: BufferedSoftSerial
3_main.cpp@1:14d1cec89444, 2020-05-12 (annotated)
- 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?
User | Revision | Line number | New 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 |