{"id":307,"date":"2017-11-23T20:54:53","date_gmt":"2017-11-23T19:54:53","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=307"},"modified":"2018-01-04T19:23:25","modified_gmt":"2018-01-04T18:23:25","slug":"12-uart-library-stm32f429","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f429\/komplette-library-liste-stm32f429\/12-uart-library-stm32f429\/","title":{"rendered":"12-UART-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\/11-adc_injected-group-library-stm32f429\/\" title=\"11-ADC_Injected-Group-Library (STM32F429)\"><span class=\"meta-nav\">\u2190<\/span> 11-ADC_Injected-Group-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\/13-usb_cdc-library-stm32f429\/\" title=\"13-USB_CDC-Library (STM32F429)\">13-USB_CDC-Library (STM32F429) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>mit dieser Library k\u00f6nnen die 8 UARTs der CPU benutzt werden<em><br \/>\n<\/em><\/p>\n<p>die UARTs die benutzt werden sollen, m\u00fcssen im H-File deklariert und im C-File m\u00fcssen in der Struktur \u201cUART[]\u201d alle ben\u00f6tigten Parameter eingetragen werden.<br \/>\n(also Pinzuordnung, Baudrate usw)<\/p>\n<p>es gibt eine Sende-Funktion um einen String \u00fcber die UARTs zu senden<\/p>\n<p>und eine Receive-Funktion um zu testen ob ein String \u00fcber eine UART empfangen wurde. (der Sender muss an den String ein Endekennungs-Zeichen anh\u00e4ngen z.B. CarriageReturn)<\/p>\n<p>die Array-Funktion : \u201cUB_Uart_SendArray\u201d sendet ein beliebiges Daten-Array<br \/>\nmit \u201ccnt\u201d Bytes per UART<\/p>\n<p>die Array-Funktion : \u201cUB_Uart_ReceiveArray\u201d empf\u00e4ngt ein beliebiges Daten-Array<br \/>\nund \u00fcbergibt die Anzahl der bis jetzt empfangenen Bytes<br \/>\n(Hinweis : diese Funktion muss u.U. mehrmals aufgerufen werden um alle Daten<br \/>\neinzusammeln)<\/p>\n<p>das eigentliche empfangen der einzelnen Character passiert per Interrupt im Hintergrund.<\/p>\n<p>im Beispiel wurde eine UART definiert :<\/p>\n<pre lang=\"c\" line=\"1\">COM1 per UART1 [TX=PA9], [RX=PA10] mit 115200 Baud<\/pre>\n<p><strong>Enumerationen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum {\r\n  NONE = 0,  \/\/ keine Endekennung\r\n  LFCR,      \/\/ LineFeed + CarriageReturn (0x0A,0x0D)\r\n  CRLF,      \/\/ CarriageReturn + LineFeed (0x0D,0x0A)\r\n  LF,        \/\/ nur LineFeed (0x0A)\r\n  CR         \/\/ nur CarriageReturn (0x0D)\r\n}UART_LASTBYTE_t;<\/pre>\n<p><strong>:<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">typedef enum {\r\n  RX_EMPTY = 0,  \/\/ nichts empfangen\r\n  RX_READY,      \/\/ es steht was im Empfangspuffer\r\n  RX_FULL        \/\/ RX-Puffer ist voll\r\n}UART_RXSTATUS_t;<\/pre>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">void UB_Uart_Init(void);                                                        \/\/ zum init aller UARTs\r\nvoid UB_Uart_SendByte(UART_NAME_t uart, uint16_t wert);                         \/\/ zum senden eines Bytes\r\nvoid UB_Uart_SendString(UART_NAME_t uart, char *ptr, UART_LASTBYTE_t end_cmd);  \/\/ zum senden eine String\r\nUART_RXSTATUS_t UB_Uart_ReceiveString(UART_NAME_t uart, char *ptr);             \/\/ zum empfangen eines Strings\r\nvoid UB_Uart_SendArray(UART_NAME_t uart, uint8_t *data, uint16_t cnt);          \/\/ zum senden eines arrays\r\nuint32_t UB_Uart_ReceiveArray(UART_NAME_t uart, uint8_t *data);                 \/\/ zum empfang eines arrays<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 31.10.2013\r\n\/\/ Version  : 1.0\r\n\/\/ Autor    : UB\r\n\/\/ EMail    : mc-4u(@)t-online.de\r\n\/\/ Web      : www.mikrocontroller-4u.de\r\n\/\/ CPU      : STM32F429\r\n\/\/ IDE      : CooCox CoIDE 1.7.4\r\n\/\/ GCC      : 4.7 2012q4\r\n\/\/ Module   : CMSIS_BOOT, M4_CMSIS_CORE\r\n\/\/ Funktion : Demo der UART-Lib\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\/\/--------------------------------------------------------------\r\n\r\n#include \"main.h\"\r\n#include \"stm32_ub_uart.h\"\r\n\r\nint main(void)\r\n{\r\n  UART_RXSTATUS_t check;\r\n  char rx_buf[RX_BUF_SIZE];\r\n\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ init vom UART (COM1 : TX=PA9, RX=PA10)\r\n  UB_Uart_Init();\r\n\r\n  \/\/ Text senden\r\n  UB_Uart_SendString(COM1, \"Hallo\", CRLF);\r\n\r\n  while(1)\r\n  {\r\n    \/\/ test ob etwas per COM1 empfangen wurde\r\n    check=UB_Uart_ReceiveString(COM1,rx_buf);\r\n    if(check==RX_READY) {\r\n      \/\/ wenn ja, dann als Echo zur\u00fccksenden\r\n      UB_Uart_SendString(COM1, rx_buf, CRLF);\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"wp-content\/uploads\/2015\/07\/uart_f429_v103.zip\">uart_f429_v103<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"wp-content\/uploads\/2015\/07\/Demo_F429_12.zip\">Demo_F429_12<\/a><\/p>\n<p>Hier der Link zu dem PC-Programm :<\/p>\n<p><a title=\"PC-Programme von mir\" href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=140\">PC-Programme<\/a><\/p>\n<hr \/>\n<h3 id=\"comments-title\">5 Antworten auf <em>12-UART-Library (STM32F429)<\/em><\/h3>\n<ol class=\"commentlist\">\n<li id=\"li-comment-2930\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-2930\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/918bf31565ec200439d53979f512457d?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">abdullah<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">3. M\u00e4rz 2015 um 17:21<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>I want to use simultaneously two UART unit. Examples of uart1 and uart2. second UART does not work like that just described me. How do I make.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-2931\" class=\"comment odd alt depth-2\">\n<div id=\"comment-2931\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/918bf31565ec200439d53979f512457d?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">abdullah<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">3. M\u00e4rz 2015 um 17:24<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>I\u2019m using the stm32f429 border.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-2937\" class=\"comment byuser comment-author-admin_ub bypostauthor even depth-3\">\n<div id=\"comment-2937\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">4. M\u00e4rz 2015 um 20:09<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>hi, please check the uart example for the stm32f407. <a href=\"indexce42.html?page_id=609\" rel=\"nofollow\">http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=609<\/a><br \/>\nThe syntax is the same for the stm32f429. You must change the H-File (add the second uart define) and change the C-File (add the second uart parameter). And double check that the hardware pins not used for another function.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li id=\"li-comment-3199\" class=\"comment odd alt thread-odd thread-alt depth-1\">\n<div id=\"comment-3199\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/1.gravatar.com\/avatar\/993bf97b08c6d3e24996da0118f88019?s=40&amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Lu6ith<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">30. April 2015 um 10:36<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Hi,<br \/>\nThis is very useful for me, but I have one dilema.<br \/>\nI\u2019m using You library for RS232 tester but I have to change online baud speed.<br \/>\nHow can I do that ?<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/p>\n<ul class=\"children\">\n<li id=\"li-comment-3201\" class=\"comment byuser comment-author-admin_ub bypostauthor even depth-2\">\n<div id=\"comment-3201\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/67426419ead44d5afa132e92685bb460?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">admin_ub<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">30. April 2015 um 19:24<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>you can call \u201cUSART_Deinit\u201d and after that reinit the USART with the new settings.<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>mit dieser Library k\u00f6nnen die 8 UARTs der CPU benutzt werden die UARTs die benutzt werden sollen, m\u00fcssen im H-File deklariert und im C-File m\u00fcssen in der Struktur \u201cUART[]\u201d alle ben\u00f6tigten Parameter eingetragen werden. (also Pinzuordnung, Baudrate usw) es gibt &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f429\/komplette-library-liste-stm32f429\/12-uart-library-stm32f429\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"parent":160,"menu_order":12,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[129],"tags":[9,102,93],"class_list":["post-307","page","type-page","status-publish","hentry","category-stm32f429","tag-library","tag-stm32f429","tag-uart"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/307","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\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/comments?post=307"}],"version-history":[{"count":4,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/307\/revisions"}],"predecessor-version":[{"id":1841,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/307\/revisions\/1841"}],"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=307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/categories?post=307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/tags?post=307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}