First version of my operation system for stm32 board

Dependencies:   RA8875 VS1053 sd-driver-hs

Committer:
Hagrid
Date:
Thu Mar 01 07:14:46 2018 +0000
Revision:
2:a3d00f0610f9
Parent:
0:86f82f777a7a
Child:
3:a60dc00bf3a2
Test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Hagrid 0:86f82f777a7a 1 #include "include.h"
Hagrid 2:a3d00f0610f9 2 ///# include
Hagrid 0:86f82f777a7a 3 //Serial device
Hagrid 0:86f82f777a7a 4 Serial keyboard(Tx_KB,Rx_KB);// Tx, Rx
Hagrid 0:86f82f777a7a 5
Hagrid 0:86f82f777a7a 6 //SPI device
Hagrid 0:86f82f777a7a 7 VS1053 mp3(MOSI_AUDIO, MISO_AUDIO, CLK_AUDIO, CS_AUDIO, RST_AUDIO,DREQ_AUDIO,DSC_AUDIO,PA_4);
Hagrid 0:86f82f777a7a 8 RA8875 lcd(MOSI_LCD, MISO_LCD, CLK_LCD, CS_LCD, NC, "tft");
Hagrid 0:86f82f777a7a 9 SDBlockDevice sd(MOSI_SD, MISO_SD, CLK_SD, CS_SD);
Hagrid 0:86f82f777a7a 10
Hagrid 0:86f82f777a7a 11 //File system
Hagrid 0:86f82f777a7a 12 FATFileSystem fs("fs");
Hagrid 0:86f82f777a7a 13
Hagrid 0:86f82f777a7a 14 //Tread
Hagrid 0:86f82f777a7a 15 Thread kb_thread;
Hagrid 0:86f82f777a7a 16
Hagrid 0:86f82f777a7a 17 void keyboard_task()
Hagrid 0:86f82f777a7a 18 {
Hagrid 0:86f82f777a7a 19 while(true) {
Hagrid 0:86f82f777a7a 20 input[position] = keyboard.getc();
Hagrid 0:86f82f777a7a 21 }
Hagrid 0:86f82f777a7a 22 }
Hagrid 0:86f82f777a7a 23
Hagrid 0:86f82f777a7a 24 int main()
Hagrid 0:86f82f777a7a 25 {
Hagrid 0:86f82f777a7a 26 wait(0.3);
Hagrid 0:86f82f777a7a 27 //init device
Hagrid 0:86f82f777a7a 28 lcd.init(480,272);
Hagrid 0:86f82f777a7a 29 mp3.initialize();
Hagrid 0:86f82f777a7a 30 keyboard.baud(57600);
Hagrid 0:86f82f777a7a 31 lcd.foreground(Orange);
Hagrid 0:86f82f777a7a 32 kb_thread.start(keyboard_task);
Hagrid 0:86f82f777a7a 33 sd.init();
Hagrid 0:86f82f777a7a 34 fs.mount(&sd);
Hagrid 0:86f82f777a7a 35 lcd.printf("HagridOS v.5.0\n\r>");
Hagrid 0:86f82f777a7a 36
Hagrid 0:86f82f777a7a 37 fs.mount(&sd);
Hagrid 0:86f82f777a7a 38 ///start main code
Hagrid 0:86f82f777a7a 39 while (true) {
Hagrid 0:86f82f777a7a 40
Hagrid 0:86f82f777a7a 41 if(!keyboard.readable()) { //scan key
Hagrid 0:86f82f777a7a 42 if (input[position] == '\n') { //press enter
Hagrid 0:86f82f777a7a 43 input[position] = '\0'; //insert in end position NULL character
Hagrid 0:86f82f777a7a 44 kbsplit(input);//split keyboard input
Hagrid 0:86f82f777a7a 45
Hagrid 0:86f82f777a7a 46 if(tmpE[0] == NULL) { //press only enter if
Hagrid 0:86f82f777a7a 47 lcd.printf("\n\r");
Hagrid 0:86f82f777a7a 48 lcd.printf(">");
Hagrid 0:86f82f777a7a 49 } else {
Hagrid 0:86f82f777a7a 50 switch(compare(&tmpE[0])) { //switch run basic commands
Hagrid 0:86f82f777a7a 51 case 0:
Hagrid 0:86f82f777a7a 52 fs.mkdir(tmpE[1],777);
Hagrid 0:86f82f777a7a 53 lcd.printf("\n\r");
Hagrid 0:86f82f777a7a 54 lcd.printf(">");
Hagrid 0:86f82f777a7a 55 erase();
Hagrid 0:86f82f777a7a 56 break;
Hagrid 0:86f82f777a7a 57 case 1:
Hagrid 0:86f82f777a7a 58 fs.remove(tmpE[1]);
Hagrid 0:86f82f777a7a 59 lcd.printf("\n\r");
Hagrid 0:86f82f777a7a 60 lcd.printf(">");
Hagrid 0:86f82f777a7a 61 erase();
Hagrid 0:86f82f777a7a 62 break;
Hagrid 0:86f82f777a7a 63 case 2:
Hagrid 0:86f82f777a7a 64 fs.mount(&sd);
Hagrid 0:86f82f777a7a 65 DIR *d;
Hagrid 0:86f82f777a7a 66 struct dirent *p;
Hagrid 0:86f82f777a7a 67 d = opendir("/fs/");
Hagrid 0:86f82f777a7a 68 if (d != NULL) {
Hagrid 0:86f82f777a7a 69 while ((p = readdir(d)) != NULL) {
Hagrid 0:86f82f777a7a 70 lcd.printf("\n\r");
Hagrid 0:86f82f777a7a 71 lcd.printf(p->d_name);
Hagrid 0:86f82f777a7a 72 }
Hagrid 0:86f82f777a7a 73 }
Hagrid 0:86f82f777a7a 74 closedir(d);
Hagrid 0:86f82f777a7a 75 fs.unmount();
Hagrid 0:86f82f777a7a 76 lcd.printf("\n\r");
Hagrid 0:86f82f777a7a 77 lcd.printf(">");
Hagrid 0:86f82f777a7a 78 erase();
Hagrid 0:86f82f777a7a 79 break;
Hagrid 0:86f82f777a7a 80 case 3:
Hagrid 0:86f82f777a7a 81 lcd.cls();
Hagrid 0:86f82f777a7a 82 lcd.printf("HagridOS v.5.0\n\r>");
Hagrid 0:86f82f777a7a 83 erase();
Hagrid 0:86f82f777a7a 84 break;
Hagrid 0:86f82f777a7a 85 case 4:
Hagrid 0:86f82f777a7a 86 lcd.printf("\n\rBasic Operation System for STM32 by HAGRID\n\r");
Hagrid 0:86f82f777a7a 87 lcd.printf("Version: 5.0 release: 24.02.2018\n\r");
Hagrid 0:86f82f777a7a 88 lcd.printf("SD size: %lluMb\n\r",(sd.size()/1024)/1024);
Hagrid 0:86f82f777a7a 89 lcd.printf("CPU speed: %d MHz", SystemCoreClock/1000000);
Hagrid 0:86f82f777a7a 90 lcd.printf("\n\r");
Hagrid 0:86f82f777a7a 91 lcd.printf(">");
Hagrid 0:86f82f777a7a 92 erase();
Hagrid 0:86f82f777a7a 93 break;
Hagrid 0:86f82f777a7a 94 case 5:
Hagrid 0:86f82f777a7a 95 lcd.printf("\n\r");
Hagrid 0:86f82f777a7a 96 lcd.printf(">");
Hagrid 0:86f82f777a7a 97 erase();
Hagrid 0:86f82f777a7a 98 break;
Hagrid 0:86f82f777a7a 99 case 6:
Hagrid 0:86f82f777a7a 100 wait(atoi(tmpE[1]));
Hagrid 0:86f82f777a7a 101 lcd.printf("\n\r");
Hagrid 0:86f82f777a7a 102 lcd.printf(">");
Hagrid 0:86f82f777a7a 103 erase();
Hagrid 0:86f82f777a7a 104 break;
Hagrid 0:86f82f777a7a 105 case 7:
Hagrid 0:86f82f777a7a 106 lcd.printf("\n\r");
Hagrid 0:86f82f777a7a 107 lcd.printf(">");
Hagrid 0:86f82f777a7a 108 erase();
Hagrid 0:86f82f777a7a 109 break;
Hagrid 0:86f82f777a7a 110 case 8:
Hagrid 0:86f82f777a7a 111 lcd.Backlight(atof(tmpE[1]));
Hagrid 0:86f82f777a7a 112 lcd.printf("\n\r");
Hagrid 0:86f82f777a7a 113 lcd.printf(">");
Hagrid 0:86f82f777a7a 114 erase();
Hagrid 0:86f82f777a7a 115 break;
Hagrid 0:86f82f777a7a 116 case 9:
Hagrid 0:86f82f777a7a 117 FILE* song = fopen(tmpE[1], "r");
Hagrid 0:86f82f777a7a 118
Hagrid 0:86f82f777a7a 119 while(!feof(song)) {
Hagrid 0:86f82f777a7a 120 int n=fread(&array, 1, sizeof(array), song);
Hagrid 0:86f82f777a7a 121 mp3.writeStream(array,n);
Hagrid 0:86f82f777a7a 122 }
Hagrid 0:86f82f777a7a 123 mp3.terminateStream();
Hagrid 0:86f82f777a7a 124
Hagrid 0:86f82f777a7a 125 fclose(song); //close the file
Hagrid 0:86f82f777a7a 126 lcd.printf("\n\r");
Hagrid 0:86f82f777a7a 127 lcd.printf(">");
Hagrid 0:86f82f777a7a 128 erase();
Hagrid 0:86f82f777a7a 129 break;
Hagrid 0:86f82f777a7a 130 case 10:
Hagrid 0:86f82f777a7a 131 sprintf(c_dir,"%s%s",home,tmpE[1]);
Hagrid 0:86f82f777a7a 132 lcd.printf("\n\r");
Hagrid 0:86f82f777a7a 133 lcd.printf(">");
Hagrid 0:86f82f777a7a 134 erase();
Hagrid 0:86f82f777a7a 135 break;
Hagrid 0:86f82f777a7a 136 default:
Hagrid 0:86f82f777a7a 137 lcd.printf("\n\r");
Hagrid 0:86f82f777a7a 138 lcd.printf("hsh: %s command not found",tmpE[0]);
Hagrid 0:86f82f777a7a 139 lcd.printf("\n\r");
Hagrid 0:86f82f777a7a 140 lcd.printf(">");
Hagrid 0:86f82f777a7a 141 erase();
Hagrid 0:86f82f777a7a 142 break;
Hagrid 0:86f82f777a7a 143 }//end switch
Hagrid 0:86f82f777a7a 144 }//end press enter only
Hagrid 0:86f82f777a7a 145 } else {
Hagrid 0:86f82f777a7a 146 lcd.printf(&(input[position]));
Hagrid 0:86f82f777a7a 147 position++;
Hagrid 0:86f82f777a7a 148 }//end press enter
Hagrid 0:86f82f777a7a 149 }//end press key
Hagrid 0:86f82f777a7a 150 wait(0.1);
Hagrid 0:86f82f777a7a 151 }//end while
Hagrid 0:86f82f777a7a 152 fs.unmount();
Hagrid 0:86f82f777a7a 153 }//end main