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
z_example/7_USBMemory_copy0.cpp@3:35ac9ee7d2d6, 2019-08-07 (annotated)
- 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?
User | Revision | Line number | New 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 |