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

0_main.cpp

Committer:
kenjiArai
Date:
2020-05-10
Revision:
0:98865e300cd5

File content as of revision 0:98865e300cd5:

/*
 * 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_0
#ifdef EXAMPLE_0
#warning "Select 0"

//  Include --------------------------------------------------------------------
#include "mbed.h"
#include "BufferedSoftSerial.h"

//  Definition -----------------------------------------------------------------
#define BEFFERED    1
    
//  Constructor ----------------------------------------------------------------
#if defined(TARGET_NUCLEO_L432KC)
DigitalOut test_point(D12);
Serial ser(D5, D4, 9600);
#   if BEFFERED
    BufferedSoftSerial dev(D6,D3);
#   else
    SoftSerial dev(D6,D3);
#   endif
#elif defined(TARGET_NUCLEO_F446RE)
DigitalOut test_point(A0);
Serial ser(D8, D2, 9600);
#   if BEFFERED
    BufferedSoftSerial dev(D4,D3);
#   else
    SoftSerial dev(D4,D3);
#   endif
#endif
Serial pc(USBTX,USBRX, 9600);

//  RAM ------------------------------------------------------------------------

//  ROM / Constant data --------------------------------------------------------

//  Function prototypes --------------------------------------------------------

//------------------------------------------------------------------------------
//  Control Program
//------------------------------------------------------------------------------
/*
    UART 3 channels
        (1) Mbed Serial communication line as "pc"
        (2) CPU another UART channel as "ser"
        (3) Software Serial channel as "dev"
 */
int main()
{
    int count = 0;
    while(true) {
        for (uint32_t i = '!'; i < '~'; i++) {
            dev.putc(i);        // output to softserial
            ser.putc(i);        // output to another UART
            pc.putc(i);         // output to PC
        }
        dev.puts("----> ABCDEFGHIJKLMOPQRSTUVWXYZ0123456789");
        ser.puts("----> ABCDEFGHIJKLMOPQRSTUVWXYZ0123456789");
        pc.puts( "----> ABCDEFGHIJKLMOPQRSTUVWXYZ0123456789");
        dev.printf("--------->%4d\r\n", count);
        ser.printf("--------->%4d\r\n", count);
        pc.printf( "--------->%4d\r\n", count++);
    }
}

#endif //#ifdef EXAMPLE_0