{"id":2001,"date":"2018-02-09T17:13:51","date_gmt":"2018-02-09T16:13:51","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=2001"},"modified":"2018-03-03T18:35:50","modified_gmt":"2018-03-03T17:35:50","slug":"28-ubasic-library-stm32f429","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f429\/komplette-library-liste-stm32f429\/28-ubasic-library-stm32f429\/","title":{"rendered":"28-uBasic-Library (STM32F429)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f429\/komplette-library-liste-stm32f429\/27-simple_gui-library-stm32f429\/\" title=\"27-Simple_GUI-Library (STM32F429)\"><span class=\"meta-nav\">\u2190<\/span> 27-Simple_GUI-Library (STM32F429)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f429\/komplette-library-liste-stm32f429\/29-lcd-text-i2c-library-stm32f429\/\" title=\"29-LCD-Text-I2C-Library (STM32F429)\">29-LCD-Text-I2C-Library (STM32F429) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>Dies ist die Portierung vom <a href=\"http:\/\/dunkels.com\/adam\/ubasic\/\" target=\"_blank\" rel=\"noopener\">uBasic von Adam-Dunkels<\/a> f\u00fcr den <strong>STM32F429<\/strong>.<\/p>\n<p><em>Hinweis 1:<\/em> Es gibt auch die Portierung von uBasic f\u00fcr den\u00a0<a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=766\"><strong>XMC2Go<\/strong><\/a>,\u00a0 den\u00a0<a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=535\"><strong>STM32F4<\/strong><\/a> und den\u00a0\u00a0<a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=1410\"><strong>STM32F746<\/strong><\/a>.<\/p>\n<p><em>Hinweis 2:<\/em> Es gibt f\u00fcr das STM32F429-Disco auch noch einen\u00a0<a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=775\"><strong>Basic Editor und Interpreter<\/strong><\/a>.<\/p>\n<p>uBasic ist ein Basic-Interpreter der sehr simpel geschrieben ist\u00a0und damit auch leicht um weitere Basic-Befehle erweiterbar ist.<\/p>\n<p>Es ist die Minimal-Version mit einer Doku als PDF wie ihr selbst noch Basic-Befehle hinzuf\u00fcgen k\u00f6nnt.<\/p>\n<p>Hier die Doku als PDF :\u00a0<a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2015\/07\/uBasic_Minimal.pdf\" target=\"_blank\" rel=\"noopener\">uBasic_Minimal<\/a><\/p>\n<p>In dieser Version liegt das Beispiel-Basic-Program\u00a0als Klartext im Flash und wird zu beginn ins RAM kopiert.\u00a0Ihr k\u00f6nnt das erweitern und das Programm z.B. von SD-Karte<br \/>\noder \u00fcber eine UART laden.<\/p>\n<p>Hier der Auszug aus dem\u00a0<strong>stm32_ub_ubasic.c<\/strong> Modul.<\/p>\n<pre lang=\"c\" line=\"33\">\/\/----------------------------------------------------------------------\r\n\/\/ Beispiel Basic-Program\r\n\/\/----------------------------------------------------------------------\r\nstatic const char basic_prg[] =\r\n\"10 print \\\"Hello STM32F429 Discovery\\\"\\n\\\r\n20 gosub 100\\n\\\r\n30 for i = 1 to 10\\n\\\r\n40 print i\\n\\\r\n50 next i\\n\\\r\n60 print \\\"end\\\"\\n\\\r\n70 end\\n\\\r\n100 print \\\"subroutine\\\"\\n\\\r\n110 return\\n\";\r\nstatic uint32_t BASIC_ROM_SIZE = sizeof(basic_prg);\r\n<\/pre>\n<p>Den Befehl \u201cPRINT\u201d 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\u00fcckgesendet werden.<\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 15.01.2018\r\n\/\/ Version  : 1.0\r\n\/\/ Autor    : UB, MB\r\n\/\/ EMail    : mc-4u(@)t-online.de\r\n\/\/ Web      : http:\/\/mikrocontroller.bplaced.net\/\r\n\/\/ CPU      : STM32F429 (Discovery-Board)\r\n\/\/ IDE      : CooCox CoIDE 1.7.8\r\n\/\/ GCC      : 4.9 2015q2\r\n\/\/ Module   : CMSIS_BOOT, M4_CMSIS_CORE\r\n\/\/ Funktion : uBasic (Minimal-Version)\r\n\/\/ Hinweis  : Diese zwei Files muessen auf 8MHz stehen\r\n\/\/              \"cmsis_boot\/stm32f4xx.h\"\r\n\/\/              \"cmsis_boot\/system_stm32f4xx.c\"\r\n\/\/ In Configuration diese Define hinzuf\u00fcgen :\r\n\/\/ \"STM32F429_439xx\" , \"__ASSEMBLY__\" , \"USE_STDPERIPH_DRIVER\"\r\n\/\/ Das Beispiel Basic-Program ist in stm32_ub_ubasic.c definiert\r\n\/\/ PRINT-Ausgabe an COM1 UART1 (TX=PA9, RX=PA10) mit 115200 Baud\r\n\/\/--------------------------------------------------------------\r\n\r\n#include \"main.h\"\r\n#include \"stm32_ub_ubasic.h\"\r\n\r\nint main(void)\r\n{\r\n  ErrorStatus checkUBasic;\r\n  char buf[RX_BUF_SIZE]; \/\/ puffer fuer Datenempfang\r\n  UART_RXSTATUS_t checkRX;\r\n\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ init vom uBasic\r\n  checkUBasic=UB_UBasic_Init();\r\n  if(checkUBasic==SUCCESS)\r\n  {\r\n    \/\/ Basic-Program abarbeiten\r\n    UB_UBasic_Run();\r\n  }\r\n\r\n  while(1)\r\n  {\r\n\t\/\/ check ob Daten an UART1 empfangen werden\r\n\tcheckRX=UB_Uart_ReceiveString(COM1,buf);\r\n\tif(checkRX==RX_READY)\r\n\t{\r\n\t\t\/\/ wenn Daten empfangen wurden\r\n\t\t\/\/ als Echo wieder zur\u00fccksenden\r\n\t\tUB_Uart_SendString(COM1,buf,LFCR);\r\n\t}\r\n  }\r\n}\r\n<\/pre>\n<p><strong>Downloads :<\/strong><\/p>\n<div class=\"sdm_download_item \"><div class=\"sdm_download_item_top\"><div class=\"sdm_download_thumbnail\"><img decoding=\"async\" class=\"sdm_download_thumbnail_image\" src=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2018\/03\/CoIDE-Library-Thumbnail.jpg\" alt = \"ub_stm32f429_ubasic_v100\" \/><\/div><div class=\"sdm_download_title\">ub_stm32f429_ubasic_v100<\/div><\/div><div style=\"clear:both;\"><\/div><div class=\"sdm_download_description\"><p>Hier die<strong> Library<\/strong> zum\u00a0Download :<\/p>\n<\/div><div class=\"sdm_download_link\"><span class=\"sdm_download_button\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?sdm_process_download=1&download_id=2177\" class=\"sdm_download green\" title=\"ub_stm32f429_ubasic_v100\" target=\"_self\">Jetzt herunterladen!<\/a><\/span><span class=\"sdm_download_item_count\"><span class=\"sdm_item_count_number\">562<\/span><span class=\"sdm_item_count_string\"> Downloads<\/span><\/span><\/div><\/div><div class=\"sdm_clear_float\"><\/div>\n<div class=\"sdm_download_item \"><div class=\"sdm_download_item_top\"><div class=\"sdm_download_thumbnail\"><img decoding=\"async\" class=\"sdm_download_thumbnail_image\" src=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2018\/03\/CoIDE-Demo-Thumbnail.jpg\" alt = \"Demo_F429_28_uBasic\" \/><\/div><div class=\"sdm_download_title\">Demo_F429_28_uBasic<\/div><\/div><div style=\"clear:both;\"><\/div><div class=\"sdm_download_description\"><p>Hier der komplette <strong>CooCox-Projektordner<\/strong> zum Download :<\/p>\n<\/div><div class=\"sdm_download_link\"><span class=\"sdm_download_button\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/?sdm_process_download=1&download_id=2178\" class=\"sdm_download green\" title=\"Demo_F429_28_uBasic\" target=\"_self\">Jetzt herunterladen!<\/a><\/span><span class=\"sdm_download_item_count\"><span class=\"sdm_item_count_number\">579<\/span><span class=\"sdm_item_count_string\"> Downloads<\/span><\/span><\/div><\/div><div class=\"sdm_clear_float\"><\/div>\n<p>Viel Spass damit,<br \/>\nManfred<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dies ist die Portierung vom uBasic von Adam-Dunkels f\u00fcr den STM32F429. Hinweis 1: Es gibt auch die Portierung von uBasic f\u00fcr den\u00a0XMC2Go,\u00a0 den\u00a0STM32F4 und den\u00a0\u00a0STM32F746. Hinweis 2: Es gibt f\u00fcr das STM32F429-Disco auch noch einen\u00a0Basic Editor und Interpreter. uBasic ist &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f429\/komplette-library-liste-stm32f429\/28-ubasic-library-stm32f429\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":160,"menu_order":28,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[129],"tags":[9,102,156],"class_list":["post-2001","page","type-page","status-publish","hentry","category-stm32f429","tag-library","tag-stm32f429","tag-ubasic"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/2001","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/comments?post=2001"}],"version-history":[{"count":12,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/2001\/revisions"}],"predecessor-version":[{"id":2180,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/2001\/revisions\/2180"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/160"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/media?parent=2001"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/categories?post=2001"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/tags?post=2001"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}