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
Diff: 3_main.cpp
- Revision:
- 1:7fe8da827212
- Parent:
- 0:98865e300cd5
--- a/3_main.cpp Sun May 10 08:15:36 2020 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ -/* - * Mbed Application program - * SoftSerial(also BufferedSoftSerial) function test programs - * UART 3 channels - * (1) Mbed Serial communication line as "pc" - * (2) CPU another UART channel as "ser" - * (3) Software Serial channel as "dev" - * - * Copyright (c) 2020 Kenji Arai / JH1PJL - * http://www7b.biglobe.ne.jp/~kenjia/ - * https://os.mbed.com/users/kenjiArai/ - * Created: May 9th, 2020 - * Revised: May 10th, 2020 - */ - -/* - Tested board on OS5.15.3 - Nucleo-F446RE, Nucleo-L432KC - */ - -// Pre-selection -------------------------------------------------------------- -#include "select_example.h" -//#define EXAMPLE_3 -#ifdef EXAMPLE_3 -#warning "Select 3" - -// Include -------------------------------------------------------------------- -#include "mbed.h" -#include "BufferedSoftSerial.h" - -// Definition ----------------------------------------------------------------- -#if (MBED_MAJOR_VERSION == 2) -#error "Cannot run on OS2" -#endif - -// Constructor ---------------------------------------------------------------- -#if defined(TARGET_NUCLEO_L432KC) -DigitalOut test_point(D12); -Serial ser(D5, D4, 9600); -BufferedSoftSerial dev(D6,D3); -#elif defined(TARGET_NUCLEO_F446RE) -DigitalOut test_point(A0); -Serial ser(D8, D2, 9600); -BufferedSoftSerial dev(D4,D3); -#endif -Serial pc(USBTX,USBRX, 9600); - -// RAM ------------------------------------------------------------------------ - -// ROM / Constant data -------------------------------------------------------- - -// Function prototypes -------------------------------------------------------- -void pc2dev(void const *args); -void dev2pc(void const *args); - -//------------------------------------------------------------------------------ -// Control Program -//------------------------------------------------------------------------------ -osThreadDef(pc2dev, osPriorityNormal,1024); -osThreadDef(dev2pc, osPriorityNormal,1024); - -int main() -{ - // Start tasks - osThreadCreate(osThread(pc2dev), NULL); - osThreadCreate(osThread(dev2pc), NULL); - // main routine - int count = 0; - while(true) { - ser.printf( "Time passed %4d [sec]\r\n", count++); - ThisThread::sleep_for(1000); - } -} - -void pc2dev(void const *args) -{ - while(true) { - if (pc.readable()) { - dev.putc(pc.getc()); - } else { - ThisThread::yield(); - } - } -} - -void dev2pc(void const *args) -{ - while(true) { - if (dev.readable()) { - pc.putc(dev.getc()); - } else { - ThisThread::yield(); - } - } -} - -#endif //#ifdef EXAMPLE_3 \ No newline at end of file