PushToGo on STM32F429-Disco Board

Dependencies:   BSP_DISCO_F429ZI LCD_DISCO_F429ZI pushtogo usb

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?

UserRevisionLine numberNew 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