Test program for SoftSerial. TimerEvent function has bug for STM32 series Mbed. FRDM-64K works well without bug. This is a temporary solution avoid bug but not perfect.
Dependencies: BufferedSoftSerial
main.cpp@1:7fe8da827212, 2020-05-12 (annotated)
- Committer:
- kenjiArai
- Date:
- Tue May 12 05:44:33 2020 +0000
- Revision:
- 1:7fe8da827212
expand for several CPU's
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 1:7fe8da827212 | 1 | /* |
kenjiArai | 1:7fe8da827212 | 2 | * Mbed Application program |
kenjiArai | 1:7fe8da827212 | 3 | * SoftSerial(also BufferedSoftSerial) function test programs |
kenjiArai | 1:7fe8da827212 | 4 | * UART 2 channels |
kenjiArai | 1:7fe8da827212 | 5 | * (1) Mbed Serial communication line as "pc" |
kenjiArai | 1:7fe8da827212 | 6 | * (2) Software Serial channel as "dev" |
kenjiArai | 1:7fe8da827212 | 7 | * |
kenjiArai | 1:7fe8da827212 | 8 | * Copyright (c) 2020 Kenji Arai / JH1PJL |
kenjiArai | 1:7fe8da827212 | 9 | * http://www7b.biglobe.ne.jp/~kenjia/ |
kenjiArai | 1:7fe8da827212 | 10 | * https://os.mbed.com/users/kenjiArai/ |
kenjiArai | 1:7fe8da827212 | 11 | * Created: May 9th, 2020 |
kenjiArai | 1:7fe8da827212 | 12 | * Revised: May 12th, 2020 |
kenjiArai | 1:7fe8da827212 | 13 | */ |
kenjiArai | 1:7fe8da827212 | 14 | |
kenjiArai | 1:7fe8da827212 | 15 | /* |
kenjiArai | 1:7fe8da827212 | 16 | Tested board on OS5.15.3 |
kenjiArai | 1:7fe8da827212 | 17 | Nucleo-L152RE, |
kenjiArai | 1:7fe8da827212 | 18 | Nucleo-F401RE, -F411RE, -F446RE, |
kenjiArai | 1:7fe8da827212 | 19 | Nucleo-L432KC, -L476RG |
kenjiArai | 1:7fe8da827212 | 20 | FRDM-K64F |
kenjiArai | 1:7fe8da827212 | 21 | |
kenjiArai | 1:7fe8da827212 | 22 | CAUTION!! |
kenjiArai | 1:7fe8da827212 | 23 | Due to bug inside TimerEvent, not stable on STM32 series Mbed |
kenjiArai | 1:7fe8da827212 | 24 | at this moment. |
kenjiArai | 1:7fe8da827212 | 25 | FRDM-K40 works fine(no trouble TimerEvent function). |
kenjiArai | 1:7fe8da827212 | 26 | */ |
kenjiArai | 1:7fe8da827212 | 27 | |
kenjiArai | 1:7fe8da827212 | 28 | // Include -------------------------------------------------------------------- |
kenjiArai | 1:7fe8da827212 | 29 | #include "mbed.h" |
kenjiArai | 1:7fe8da827212 | 30 | #include "BufferedSoftSerial.h" |
kenjiArai | 1:7fe8da827212 | 31 | |
kenjiArai | 1:7fe8da827212 | 32 | // Definition ----------------------------------------------------------------- |
kenjiArai | 1:7fe8da827212 | 33 | #define BAUD 9600 |
kenjiArai | 1:7fe8da827212 | 34 | //#define BAUD 14400 |
kenjiArai | 1:7fe8da827212 | 35 | //#define BAUD 19200 // No continuous transmission |
kenjiArai | 1:7fe8da827212 | 36 | //#define BAUD 38400 // NOT SUCCESS!! |
kenjiArai | 1:7fe8da827212 | 37 | |
kenjiArai | 1:7fe8da827212 | 38 | // Constructor ---------------------------------------------------------------- |
kenjiArai | 1:7fe8da827212 | 39 | #if defined(TARGET_NUCLEO_L432KC) |
kenjiArai | 1:7fe8da827212 | 40 | DigitalOut test_point(D12); |
kenjiArai | 1:7fe8da827212 | 41 | Serial ser(D5, D4, BAUD); |
kenjiArai | 1:7fe8da827212 | 42 | BufferedSoftSerial dev(D6,D3); |
kenjiArai | 1:7fe8da827212 | 43 | #else |
kenjiArai | 1:7fe8da827212 | 44 | DigitalOut test_point(A0); |
kenjiArai | 1:7fe8da827212 | 45 | BufferedSoftSerial dev(D4,D3); |
kenjiArai | 1:7fe8da827212 | 46 | #endif |
kenjiArai | 1:7fe8da827212 | 47 | Serial pc(USBTX,USBRX, BAUD); |
kenjiArai | 1:7fe8da827212 | 48 | |
kenjiArai | 1:7fe8da827212 | 49 | // RAM ------------------------------------------------------------------------ |
kenjiArai | 1:7fe8da827212 | 50 | |
kenjiArai | 1:7fe8da827212 | 51 | // ROM / Constant data -------------------------------------------------------- |
kenjiArai | 1:7fe8da827212 | 52 | |
kenjiArai | 1:7fe8da827212 | 53 | // Function prototypes -------------------------------------------------------- |
kenjiArai | 1:7fe8da827212 | 54 | void pc2dev(void const *args); |
kenjiArai | 1:7fe8da827212 | 55 | void dev2pc(void const *args); |
kenjiArai | 1:7fe8da827212 | 56 | |
kenjiArai | 1:7fe8da827212 | 57 | //------------------------------------------------------------------------------ |
kenjiArai | 1:7fe8da827212 | 58 | // Control Program |
kenjiArai | 1:7fe8da827212 | 59 | //------------------------------------------------------------------------------ |
kenjiArai | 1:7fe8da827212 | 60 | osThreadDef(pc2dev, osPriorityNormal,1024); |
kenjiArai | 1:7fe8da827212 | 61 | osThreadDef(dev2pc, osPriorityNormal,1024); |
kenjiArai | 1:7fe8da827212 | 62 | |
kenjiArai | 1:7fe8da827212 | 63 | int main() |
kenjiArai | 1:7fe8da827212 | 64 | { |
kenjiArai | 1:7fe8da827212 | 65 | dev.baud(BAUD); |
kenjiArai | 1:7fe8da827212 | 66 | // Start tasks |
kenjiArai | 1:7fe8da827212 | 67 | osThreadCreate(osThread(pc2dev), NULL); |
kenjiArai | 1:7fe8da827212 | 68 | osThreadCreate(osThread(dev2pc), NULL); |
kenjiArai | 1:7fe8da827212 | 69 | while(true) { |
kenjiArai | 1:7fe8da827212 | 70 | ThisThread::sleep_for(1000000); |
kenjiArai | 1:7fe8da827212 | 71 | } |
kenjiArai | 1:7fe8da827212 | 72 | } |
kenjiArai | 1:7fe8da827212 | 73 | |
kenjiArai | 1:7fe8da827212 | 74 | void pc2dev(void const *args) |
kenjiArai | 1:7fe8da827212 | 75 | { |
kenjiArai | 1:7fe8da827212 | 76 | pc.printf("\r\nStart program\r\n"); |
kenjiArai | 1:7fe8da827212 | 77 | while(true) { |
kenjiArai | 1:7fe8da827212 | 78 | if (pc.readable()) { |
kenjiArai | 1:7fe8da827212 | 79 | dev.putc(pc.getc()); |
kenjiArai | 1:7fe8da827212 | 80 | } else { |
kenjiArai | 1:7fe8da827212 | 81 | ThisThread::yield(); |
kenjiArai | 1:7fe8da827212 | 82 | } |
kenjiArai | 1:7fe8da827212 | 83 | } |
kenjiArai | 1:7fe8da827212 | 84 | } |
kenjiArai | 1:7fe8da827212 | 85 | |
kenjiArai | 1:7fe8da827212 | 86 | void dev2pc(void const *args) |
kenjiArai | 1:7fe8da827212 | 87 | { |
kenjiArai | 1:7fe8da827212 | 88 | dev.printf("\r\nStart program\r\n"); |
kenjiArai | 1:7fe8da827212 | 89 | while(true) { |
kenjiArai | 1:7fe8da827212 | 90 | if (dev.readable()) { |
kenjiArai | 1:7fe8da827212 | 91 | pc.putc(dev.getc()); |
kenjiArai | 1:7fe8da827212 | 92 | } else { |
kenjiArai | 1:7fe8da827212 | 93 | ThisThread::yield(); |
kenjiArai | 1:7fe8da827212 | 94 | } |
kenjiArai | 1:7fe8da827212 | 95 | } |
kenjiArai | 1:7fe8da827212 | 96 | } |