28-uBasic-Library (STM32F429)

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);
	}
  }
}

Hier die Library zum Download :

ub_stm32f429_ubasic_v100

Hier der komplette CooCox-Projektordner zum Download :

Demo_F429_28_uBasic

Viel Spass damit,
Manfred


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...