PushToGo on STM32F429-Disco Board
Dependencies: BSP_DISCO_F429ZI LCD_DISCO_F429ZI pushtogo usb
main.cpp@1:64c1fd738059, 2018-09-09 (annotated)
- Committer:
- caoyuan9642
- Date:
- Sun Sep 09 19:03:27 2018 +0000
- Revision:
- 1:64c1fd738059
- Parent:
- 0:084d1dae2ea1
- Child:
- 3:17d124d08a01
updated docs
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
caoyuan9642 | 0:084d1dae2ea1 | 1 | #include "mbed.h" |
caoyuan9642 | 0:084d1dae2ea1 | 2 | #include <LCDConsole.h> |
caoyuan9642 | 0:084d1dae2ea1 | 3 | #include <stdio.h> |
caoyuan9642 | 0:084d1dae2ea1 | 4 | #include "SDBlockDevice.h" |
caoyuan9642 | 0:084d1dae2ea1 | 5 | #include "FATFileSystem.h" |
caoyuan9642 | 0:084d1dae2ea1 | 6 | #include "EquatorialMount.h" |
caoyuan9642 | 0:084d1dae2ea1 | 7 | #include "MCULoadMeasurement.h" |
caoyuan9642 | 1:64c1fd738059 | 8 | #include "telescope_hardware.h" |
caoyuan9642 | 0:084d1dae2ea1 | 9 | |
caoyuan9642 | 0:084d1dae2ea1 | 10 | Thread blinker_thread(osPriorityNormal, 1024, NULL, "Blinker"); |
caoyuan9642 | 0:084d1dae2ea1 | 11 | DigitalOut led1(LED1); |
caoyuan9642 | 0:084d1dae2ea1 | 12 | //DigitalOut led1(PB_3_ALT0); |
caoyuan9642 | 0:084d1dae2ea1 | 13 | //DigitalOut led2(PC_12); |
caoyuan9642 | 0:084d1dae2ea1 | 14 | //DigitalOut led3(PE_3); |
caoyuan9642 | 0:084d1dae2ea1 | 15 | //DigitalOut led4(PB_7); |
caoyuan9642 | 0:084d1dae2ea1 | 16 | |
caoyuan9642 | 0:084d1dae2ea1 | 17 | void blink() |
caoyuan9642 | 0:084d1dae2ea1 | 18 | { |
caoyuan9642 | 0:084d1dae2ea1 | 19 | while (true) |
caoyuan9642 | 0:084d1dae2ea1 | 20 | { |
caoyuan9642 | 0:084d1dae2ea1 | 21 | led1 = !led1; |
caoyuan9642 | 0:084d1dae2ea1 | 22 | // led2 = !led2; |
caoyuan9642 | 0:084d1dae2ea1 | 23 | // led3 = !led3; |
caoyuan9642 | 0:084d1dae2ea1 | 24 | // led4 = !led4; |
caoyuan9642 | 0:084d1dae2ea1 | 25 | Thread::wait(80); |
caoyuan9642 | 0:084d1dae2ea1 | 26 | } |
caoyuan9642 | 0:084d1dae2ea1 | 27 | } |
caoyuan9642 | 0:084d1dae2ea1 | 28 | |
caoyuan9642 | 0:084d1dae2ea1 | 29 | //Thread printer_th(osPriorityNormal, 2048, NULL, "Printer Thread"); |
caoyuan9642 | 0:084d1dae2ea1 | 30 | ///* Mail */ |
caoyuan9642 | 0:084d1dae2ea1 | 31 | //typedef struct |
caoyuan9642 | 0:084d1dae2ea1 | 32 | //{ |
caoyuan9642 | 0:084d1dae2ea1 | 33 | // char msg[128]; |
caoyuan9642 | 0:084d1dae2ea1 | 34 | //} mail_t; |
caoyuan9642 | 0:084d1dae2ea1 | 35 | // |
caoyuan9642 | 0:084d1dae2ea1 | 36 | //typedef Mail<mail_t, 256> MB_t; |
caoyuan9642 | 0:084d1dae2ea1 | 37 | //MB_t mbox; |
caoyuan9642 | 0:084d1dae2ea1 | 38 | //Serial pc(USBTX, USBRX, 115200); |
caoyuan9642 | 0:084d1dae2ea1 | 39 | // |
caoyuan9642 | 0:084d1dae2ea1 | 40 | //Timer tim; |
caoyuan9642 | 0:084d1dae2ea1 | 41 | //void printer(MB_t *mbox) |
caoyuan9642 | 0:084d1dae2ea1 | 42 | //{ |
caoyuan9642 | 0:084d1dae2ea1 | 43 | // while (true) |
caoyuan9642 | 0:084d1dae2ea1 | 44 | // { |
caoyuan9642 | 0:084d1dae2ea1 | 45 | // mail_t *m = (mail_t *) mbox->get().value.p; |
caoyuan9642 | 0:084d1dae2ea1 | 46 | // pc.printf("%s\r\n", m->msg); |
caoyuan9642 | 0:084d1dae2ea1 | 47 | // mbox->free(m); |
caoyuan9642 | 0:084d1dae2ea1 | 48 | // } |
caoyuan9642 | 0:084d1dae2ea1 | 49 | //} |
caoyuan9642 | 0:084d1dae2ea1 | 50 | |
caoyuan9642 | 0:084d1dae2ea1 | 51 | /** |
caoyuan9642 | 0:084d1dae2ea1 | 52 | * Printf for debugging use. Takes about 20us for each call. Can be called from any context |
caoyuan9642 | 0:084d1dae2ea1 | 53 | */ |
caoyuan9642 | 0:084d1dae2ea1 | 54 | //void xprintf(const char* format, ...) |
caoyuan9642 | 0:084d1dae2ea1 | 55 | //{ |
caoyuan9642 | 0:084d1dae2ea1 | 56 | // uint16_t len; |
caoyuan9642 | 0:084d1dae2ea1 | 57 | // va_list argptr; |
caoyuan9642 | 0:084d1dae2ea1 | 58 | // va_start(argptr, format); |
caoyuan9642 | 0:084d1dae2ea1 | 59 | // |
caoyuan9642 | 0:084d1dae2ea1 | 60 | // mail_t *m = mbox.alloc(); |
caoyuan9642 | 0:084d1dae2ea1 | 61 | // len = sprintf(m->msg, "%9d>", tim.read_us()); |
caoyuan9642 | 0:084d1dae2ea1 | 62 | // len += vsprintf(&m->msg[len], format, argptr); |
caoyuan9642 | 0:084d1dae2ea1 | 63 | // mbox.put(m); |
caoyuan9642 | 0:084d1dae2ea1 | 64 | // |
caoyuan9642 | 0:084d1dae2ea1 | 65 | // va_end(argptr); |
caoyuan9642 | 0:084d1dae2ea1 | 66 | //} |
caoyuan9642 | 1:64c1fd738059 | 67 | //extern void test_stepper(); |
caoyuan9642 | 1:64c1fd738059 | 68 | //extern void testmath(); |
caoyuan9642 | 1:64c1fd738059 | 69 | //extern void test_em(); |
caoyuan9642 | 1:64c1fd738059 | 70 | //extern void test_deapply(); |
caoyuan9642 | 1:64c1fd738059 | 71 | //extern void test_server(); |
caoyuan9642 | 0:084d1dae2ea1 | 72 | |
caoyuan9642 | 0:084d1dae2ea1 | 73 | //SDBlockDevice sdb(PA_7, PB_4, PA_5, PC_13); |
caoyuan9642 | 0:084d1dae2ea1 | 74 | //FATFileSystem fs("fs"); |
caoyuan9642 | 0:084d1dae2ea1 | 75 | |
caoyuan9642 | 0:084d1dae2ea1 | 76 | char s[128]; |
caoyuan9642 | 0:084d1dae2ea1 | 77 | |
caoyuan9642 | 0:084d1dae2ea1 | 78 | Thread test(osPriorityNormal, 16384, NULL, "test"); |
caoyuan9642 | 0:084d1dae2ea1 | 79 | |
caoyuan9642 | 0:084d1dae2ea1 | 80 | // Instrumentation |
caoyuan9642 | 0:084d1dae2ea1 | 81 | |
caoyuan9642 | 0:084d1dae2ea1 | 82 | int main() |
caoyuan9642 | 0:084d1dae2ea1 | 83 | { |
caoyuan9642 | 0:084d1dae2ea1 | 84 | /*Enable LCD redirecting*/ |
caoyuan9642 | 0:084d1dae2ea1 | 85 | LCDConsole::init(0, 0, 240, 280); |
caoyuan9642 | 0:084d1dae2ea1 | 86 | LCDConsole::redirect(true); |
caoyuan9642 | 0:084d1dae2ea1 | 87 | setvbuf(stdout, NULL, _IONBF, 0); |
caoyuan9642 | 0:084d1dae2ea1 | 88 | setvbuf(stderr, NULL, _IONBF, 0); |
caoyuan9642 | 0:084d1dae2ea1 | 89 | |
caoyuan9642 | 0:084d1dae2ea1 | 90 | printf("System initialized.\n"); |
caoyuan9642 | 0:084d1dae2ea1 | 91 | |
caoyuan9642 | 0:084d1dae2ea1 | 92 | blinker_thread.start(blink); |
caoyuan9642 | 0:084d1dae2ea1 | 93 | // tim.start(); |
caoyuan9642 | 0:084d1dae2ea1 | 94 | // printer_th.start(callback(printer, &mbox)); |
caoyuan9642 | 0:084d1dae2ea1 | 95 | // xprintf("System initialized"); |
caoyuan9642 | 0:084d1dae2ea1 | 96 | // |
caoyuan9642 | 0:084d1dae2ea1 | 97 | // if (fs.mount(&sdb) == 0) |
caoyuan9642 | 0:084d1dae2ea1 | 98 | // { |
caoyuan9642 | 0:084d1dae2ea1 | 99 | // FILE *fp = fopen("/fs/Hello.txt", "r"); |
caoyuan9642 | 0:084d1dae2ea1 | 100 | // if (fp == NULL) |
caoyuan9642 | 0:084d1dae2ea1 | 101 | // { |
caoyuan9642 | 0:084d1dae2ea1 | 102 | // xprintf("Could not open file for write\n"); |
caoyuan9642 | 0:084d1dae2ea1 | 103 | // } |
caoyuan9642 | 0:084d1dae2ea1 | 104 | // else |
caoyuan9642 | 0:084d1dae2ea1 | 105 | // { |
caoyuan9642 | 0:084d1dae2ea1 | 106 | // fgets(s, 128, fp); |
caoyuan9642 | 0:084d1dae2ea1 | 107 | // xprintf("%s", s); |
caoyuan9642 | 0:084d1dae2ea1 | 108 | // fclose(fp); |
caoyuan9642 | 0:084d1dae2ea1 | 109 | // } |
caoyuan9642 | 0:084d1dae2ea1 | 110 | // |
caoyuan9642 | 0:084d1dae2ea1 | 111 | // } |
caoyuan9642 | 0:084d1dae2ea1 | 112 | // else |
caoyuan9642 | 0:084d1dae2ea1 | 113 | // { |
caoyuan9642 | 0:084d1dae2ea1 | 114 | // xprintf("FS failed to load SD card."); |
caoyuan9642 | 0:084d1dae2ea1 | 115 | // } |
caoyuan9642 | 0:084d1dae2ea1 | 116 | |
caoyuan9642 | 0:084d1dae2ea1 | 117 | // testmath(); |
caoyuan9642 | 0:084d1dae2ea1 | 118 | |
caoyuan9642 | 0:084d1dae2ea1 | 119 | // test_deapply(); |
caoyuan9642 | 1:64c1fd738059 | 120 | // test.start(test_server); |
caoyuan9642 | 1:64c1fd738059 | 121 | telescopeHardwareInit(); |
caoyuan9642 | 1:64c1fd738059 | 122 | telescopeServerInit(); |
caoyuan9642 | 0:084d1dae2ea1 | 123 | |
caoyuan9642 | 0:084d1dae2ea1 | 124 | while (1) |
caoyuan9642 | 0:084d1dae2ea1 | 125 | { |
caoyuan9642 | 0:084d1dae2ea1 | 126 | Thread::wait(1000); |
caoyuan9642 | 0:084d1dae2ea1 | 127 | } |
caoyuan9642 | 0:084d1dae2ea1 | 128 | } |
caoyuan9642 | 0:084d1dae2ea1 | 129 | |
caoyuan9642 | 0:084d1dae2ea1 | 130 |