Several examples run on only mbed-os5.13.0 (not 5.14.0)

Dependencies:   BD_SD_DISCO_F769NI BSP_DISCO_F769NI LCD_DISCO_F769NI TS_DISCO_F769NI USBHost_F769NI

Committer:
kenjiArai
Date:
Wed Aug 07 05:39:01 2019 +0000
Revision:
3:35ac9ee7d2d6
1st trial revision (Not finalized yet)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 3:35ac9ee7d2d6 1 // Original
kenjiArai 3:35ac9ee7d2d6 2 // https://os.mbed.com/users/jeonbc/code/stm32-disco-example/
kenjiArai 3:35ac9ee7d2d6 3 //
kenjiArai 3:35ac9ee7d2d6 4 // Modified by K.Arai
kenjiArai 3:35ac9ee7d2d6 5 // July 25th, 2019
kenjiArai 3:35ac9ee7d2d6 6 //
kenjiArai 3:35ac9ee7d2d6 7
kenjiArai 3:35ac9ee7d2d6 8 #include "select_program.h"
kenjiArai 3:35ac9ee7d2d6 9 //#define EXAMPLE_7_USB_MSD
kenjiArai 3:35ac9ee7d2d6 10 //#ifdef EXAMPLE_7_USB_MSD
kenjiArai 3:35ac9ee7d2d6 11 #if 0
kenjiArai 3:35ac9ee7d2d6 12
kenjiArai 3:35ac9ee7d2d6 13 #include <stdlib.h>
kenjiArai 3:35ac9ee7d2d6 14
kenjiArai 3:35ac9ee7d2d6 15 #include "mbed.h"
kenjiArai 3:35ac9ee7d2d6 16 #include "LCD_DISCO_F769NI.h"
kenjiArai 3:35ac9ee7d2d6 17 #include "USBHostMSD.h"
kenjiArai 3:35ac9ee7d2d6 18 #include "FATFileSystem.h"
kenjiArai 3:35ac9ee7d2d6 19
kenjiArai 3:35ac9ee7d2d6 20 LCD_DISCO_F769NI lcd;
kenjiArai 3:35ac9ee7d2d6 21
kenjiArai 3:35ac9ee7d2d6 22 DigitalOut led_green(LED1);
kenjiArai 3:35ac9ee7d2d6 23 DigitalOut led_orange(LED2);
kenjiArai 3:35ac9ee7d2d6 24 DigitalOut led_red(LED3);
kenjiArai 3:35ac9ee7d2d6 25 DigitalOut led_blue(LED4);
kenjiArai 3:35ac9ee7d2d6 26
kenjiArai 3:35ac9ee7d2d6 27 Serial pc(SERIAL_TX, SERIAL_RX, 115200);
kenjiArai 3:35ac9ee7d2d6 28
kenjiArai 3:35ac9ee7d2d6 29 USBHostMSD msd;
kenjiArai 3:35ac9ee7d2d6 30 FATFileSystem fs("usb");
kenjiArai 3:35ac9ee7d2d6 31
kenjiArai 3:35ac9ee7d2d6 32 void msd_task(void const *)
kenjiArai 3:35ac9ee7d2d6 33 {
kenjiArai 3:35ac9ee7d2d6 34 int i = 0;
kenjiArai 3:35ac9ee7d2d6 35 int err;
kenjiArai 3:35ac9ee7d2d6 36
kenjiArai 3:35ac9ee7d2d6 37 printf("wait for usb memory stick insertion\r\n");
kenjiArai 3:35ac9ee7d2d6 38 while(1) {
kenjiArai 3:35ac9ee7d2d6 39 //pc.printf("line:%d\r\n", __LINE__);
kenjiArai 3:35ac9ee7d2d6 40 wait_ms(500);
kenjiArai 3:35ac9ee7d2d6 41 // try to connect a MSD device
kenjiArai 3:35ac9ee7d2d6 42 while(!msd.connect()) {
kenjiArai 3:35ac9ee7d2d6 43 pc.printf("line:%d\r\n", __LINE__);
kenjiArai 3:35ac9ee7d2d6 44 wait_ms(500);
kenjiArai 3:35ac9ee7d2d6 45 }
kenjiArai 3:35ac9ee7d2d6 46 if (fs.mount(&msd) != 0) {
kenjiArai 3:35ac9ee7d2d6 47 pc.printf("line:%d\r\n", __LINE__);
kenjiArai 3:35ac9ee7d2d6 48 continue;
kenjiArai 3:35ac9ee7d2d6 49 } else {
kenjiArai 3:35ac9ee7d2d6 50 pc.printf("file system mounted\n");
kenjiArai 3:35ac9ee7d2d6 51 }
kenjiArai 3:35ac9ee7d2d6 52
kenjiArai 3:35ac9ee7d2d6 53 pc.printf("line:%d\r\n", __LINE__);
kenjiArai 3:35ac9ee7d2d6 54 if (!msd.connect()) {
kenjiArai 3:35ac9ee7d2d6 55 pc.printf("line:%d\r\n", __LINE__);
kenjiArai 3:35ac9ee7d2d6 56 continue;
kenjiArai 3:35ac9ee7d2d6 57 }
kenjiArai 3:35ac9ee7d2d6 58
kenjiArai 3:35ac9ee7d2d6 59 // in a loop, append a file
kenjiArai 3:35ac9ee7d2d6 60 // if the device is disconnected, we try to connect it again
kenjiArai 3:35ac9ee7d2d6 61
kenjiArai 3:35ac9ee7d2d6 62 // append a file
kenjiArai 3:35ac9ee7d2d6 63 File file;
kenjiArai 3:35ac9ee7d2d6 64 err = file.open(&fs, "test1.txt", O_WRONLY | O_CREAT |O_APPEND);
kenjiArai 3:35ac9ee7d2d6 65
kenjiArai 3:35ac9ee7d2d6 66 pc.printf("line:%d\r\n", __LINE__);
kenjiArai 3:35ac9ee7d2d6 67 if (err == 0) {
kenjiArai 3:35ac9ee7d2d6 68 char tmp[100];
kenjiArai 3:35ac9ee7d2d6 69 sprintf(tmp,"Hello fun USB stick World: %d!\r\n", i++);
kenjiArai 3:35ac9ee7d2d6 70 file.write(tmp,strlen(tmp));
kenjiArai 3:35ac9ee7d2d6 71 sprintf(tmp,"Goodbye World!\r\n");
kenjiArai 3:35ac9ee7d2d6 72 file.write(tmp,strlen(tmp));
kenjiArai 3:35ac9ee7d2d6 73 file.close();
kenjiArai 3:35ac9ee7d2d6 74 } else {
kenjiArai 3:35ac9ee7d2d6 75 pc.printf("FILE == NULL\r\n");
kenjiArai 3:35ac9ee7d2d6 76 }
kenjiArai 3:35ac9ee7d2d6 77 ThisThread::sleep_for(500);
kenjiArai 3:35ac9ee7d2d6 78 pc.printf("again\n");
kenjiArai 3:35ac9ee7d2d6 79 // if device disconnected, try to connect again
kenjiArai 3:35ac9ee7d2d6 80 while (msd.connected()) {
kenjiArai 3:35ac9ee7d2d6 81 wait_ms(500);
kenjiArai 3:35ac9ee7d2d6 82 }
kenjiArai 3:35ac9ee7d2d6 83 while (fs.unmount() < 0) {
kenjiArai 3:35ac9ee7d2d6 84 wait_ms(500);
kenjiArai 3:35ac9ee7d2d6 85 pc.printf("unmount\n");
kenjiArai 3:35ac9ee7d2d6 86 }
kenjiArai 3:35ac9ee7d2d6 87 }
kenjiArai 3:35ac9ee7d2d6 88 }
kenjiArai 3:35ac9ee7d2d6 89
kenjiArai 3:35ac9ee7d2d6 90 int main()
kenjiArai 3:35ac9ee7d2d6 91 {
kenjiArai 3:35ac9ee7d2d6 92 pc.baud(115200);
kenjiArai 3:35ac9ee7d2d6 93
kenjiArai 3:35ac9ee7d2d6 94 pc.printf("\x1b[2J\x1b[H %s\r\n %s %s (UTC)\r\n",
kenjiArai 3:35ac9ee7d2d6 95 __FILE__, __DATE__, __TIME__);
kenjiArai 3:35ac9ee7d2d6 96 lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"MBED EXAMPLE", CENTER_MODE);
kenjiArai 3:35ac9ee7d2d6 97 ThisThread::sleep_for(500);
kenjiArai 3:35ac9ee7d2d6 98
kenjiArai 3:35ac9ee7d2d6 99 Thread msdTask(msd_task, NULL, osPriorityNormal, 1024 * 6);
kenjiArai 3:35ac9ee7d2d6 100 pc.printf("line:%d\r\n", __LINE__);
kenjiArai 3:35ac9ee7d2d6 101
kenjiArai 3:35ac9ee7d2d6 102 lcd.Clear(LCD_COLOR_BLUE);
kenjiArai 3:35ac9ee7d2d6 103 lcd.SetBackColor(LCD_COLOR_BLUE);
kenjiArai 3:35ac9ee7d2d6 104 lcd.SetTextColor(LCD_COLOR_WHITE);
kenjiArai 3:35ac9ee7d2d6 105
kenjiArai 3:35ac9ee7d2d6 106 BSP_LCD_SetFont(&Font24);
kenjiArai 3:35ac9ee7d2d6 107 lcd.DisplayStringAt(0, LINE(7), (uint8_t *)"HAVE FUN !!!", CENTER_MODE);
kenjiArai 3:35ac9ee7d2d6 108
kenjiArai 3:35ac9ee7d2d6 109 while(true) {
kenjiArai 3:35ac9ee7d2d6 110 // WARNING: LEDs are OFF
kenjiArai 3:35ac9ee7d2d6 111 led_green = 1;
kenjiArai 3:35ac9ee7d2d6 112 led_orange = 1;
kenjiArai 3:35ac9ee7d2d6 113 led_red = 1;
kenjiArai 3:35ac9ee7d2d6 114 led_blue = 1;
kenjiArai 3:35ac9ee7d2d6 115 ThisThread::sleep_for(200);
kenjiArai 3:35ac9ee7d2d6 116 // WARNING: LEDs are ON
kenjiArai 3:35ac9ee7d2d6 117 led_green = 0;
kenjiArai 3:35ac9ee7d2d6 118 led_orange = 0;
kenjiArai 3:35ac9ee7d2d6 119 led_red = 0;
kenjiArai 3:35ac9ee7d2d6 120 led_blue = 0;
kenjiArai 3:35ac9ee7d2d6 121 ThisThread::sleep_for(1000);
kenjiArai 3:35ac9ee7d2d6 122 }
kenjiArai 3:35ac9ee7d2d6 123 }
kenjiArai 3:35ac9ee7d2d6 124
kenjiArai 3:35ac9ee7d2d6 125 #endif