Dies ist die Portierung vom uBasic von Adam-Dunkels für den STM32F429.
Hinweis 1: Es gibt auch die Portierung von uBasic für den XMC2Go, den STM32F4 und den STM32F746.
Hinweis 2: Es gibt für das STM32F429-Disco auch noch einen Basic Editor und Interpreter.
uBasic ist ein Basic-Interpreter der sehr simpel geschrieben ist und damit auch leicht um weitere Basic-Befehle erweiterbar ist.
Es ist die Minimal-Version mit einer Doku als PDF wie ihr selbst noch Basic-Befehle hinzufügen könnt.
Hier die Doku als PDF : uBasic_Minimal
In dieser Version liegt das Beispiel-Basic-Program als Klartext im Flash und wird zu beginn ins RAM kopiert. Ihr könnt das erweitern und das Programm z.B. von SD-Karte
oder über eine UART laden.
Hier der Auszug aus dem stm32_ub_ubasic.c Modul.
33 34 35 36 37 38 39 40 41 42 43 44 45 46 | //---------------------------------------------------------------------- // Beispiel Basic-Program //---------------------------------------------------------------------- static const char basic_prg[] = "10 print \"Hello STM32F429 Discovery\"\n\ 20 gosub 100\n\ 30 for i = 1 to 10\n\ 40 print i\n\ 50 next i\n\ 60 print \"end\"\n\ 70 end\n\ 100 print \"subroutine\"\n\ 110 return\n"; static uint32_t BASIC_ROM_SIZE = sizeof(basic_prg); |
Den Befehl “PRINT” habe ich auf den UART1 (TX=PA9, RX=PA10, 115200 Baud) geleitet, damit man als ersten Test irgendwas sieht. Im Main Programm habe ich die while(1) Schleife so programmiert, dass serielle Daten an UART1 empfangen werden, wieder als ECHO zurückgesendet werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | //-------------------------------------------------------------- // File : main.c // Datum : 15.01.2018 // Version : 1.0 // Autor : UB, MB // EMail : mc-4u(@)t-online.de // Web : http://mikrocontroller.bplaced.net/ // CPU : STM32F429 (Discovery-Board) // IDE : CooCox CoIDE 1.7.8 // GCC : 4.9 2015q2 // Module : CMSIS_BOOT, M4_CMSIS_CORE // Funktion : uBasic (Minimal-Version) // Hinweis : Diese zwei Files muessen auf 8MHz stehen // "cmsis_boot/stm32f4xx.h" // "cmsis_boot/system_stm32f4xx.c" // In Configuration diese Define hinzufügen : // "STM32F429_439xx" , "__ASSEMBLY__" , "USE_STDPERIPH_DRIVER" // Das Beispiel Basic-Program ist in stm32_ub_ubasic.c definiert // PRINT-Ausgabe an COM1 UART1 (TX=PA9, RX=PA10) mit 115200 Baud //-------------------------------------------------------------- #include "main.h" #include "stm32_ub_ubasic.h" int main(void) { ErrorStatus checkUBasic; char buf[RX_BUF_SIZE]; // puffer fuer Datenempfang UART_RXSTATUS_t checkRX; SystemInit(); // Quarz Einstellungen aktivieren // init vom uBasic checkUBasic=UB_UBasic_Init(); if(checkUBasic==SUCCESS) { // Basic-Program abarbeiten UB_UBasic_Run(); } while(1) { // check ob Daten an UART1 empfangen werden checkRX=UB_Uart_ReceiveString(COM1,buf); if(checkRX==RX_READY) { // wenn Daten empfangen wurden // als Echo wieder zurücksenden UB_Uart_SendString(COM1,buf,LFCR); } } } |
Downloads :
Hier die Library zum Download :
Hier der komplette CooCox-Projektordner zum Download :
Viel Spass damit,
Manfred