12-UART-Library (STM32F429)

mit dieser Library können die 8 UARTs der CPU benutzt werden

die UARTs die benutzt werden sollen, müssen im H-File deklariert und im C-File müssen in der Struktur “UART[]” alle benötigten Parameter eingetragen werden.
(also Pinzuordnung, Baudrate usw)

es gibt eine Sende-Funktion um einen String über die UARTs zu senden

und eine Receive-Funktion um zu testen ob ein String über eine UART empfangen wurde. (der Sender muss an den String ein Endekennungs-Zeichen anhängen z.B. CarriageReturn)

die Array-Funktion : “UB_Uart_SendArray” sendet ein beliebiges Daten-Array
mit “cnt” Bytes per UART

die Array-Funktion : “UB_Uart_ReceiveArray” empfängt ein beliebiges Daten-Array
und übergibt die Anzahl der bis jetzt empfangenen Bytes
(Hinweis : diese Funktion muss u.U. mehrmals aufgerufen werden um alle Daten
einzusammeln)

das eigentliche empfangen der einzelnen Character passiert per Interrupt im Hintergrund.

im Beispiel wurde eine UART definiert :

1
COM1 per UART1 [TX=PA9], [RX=PA10] mit 115200 Baud

Enumerationen :

1
2
3
4
5
6
7
typedef enum {
  NONE = 0,  // keine Endekennung
  LFCR,      // LineFeed + CarriageReturn (0x0A,0x0D)
  CRLF,      // CarriageReturn + LineFeed (0x0D,0x0A)
  LF,        // nur LineFeed (0x0A)
  CR         // nur CarriageReturn (0x0D)
}UART_LASTBYTE_t;

:

1
2
3
4
5
typedef enum {
  RX_EMPTY = 0,  // nichts empfangen
  RX_READY,      // es steht was im Empfangspuffer
  RX_FULL        // RX-Puffer ist voll
}UART_RXSTATUS_t;

Funktionen :

1
2
3
4
5
6
void UB_Uart_Init(void);                                                        // zum init aller UARTs
void UB_Uart_SendByte(UART_NAME_t uart, uint16_t wert);                         // zum senden eines Bytes
void UB_Uart_SendString(UART_NAME_t uart, char *ptr, UART_LASTBYTE_t end_cmd);  // zum senden eine String
UART_RXSTATUS_t UB_Uart_ReceiveString(UART_NAME_t uart, char *ptr);             // zum empfangen eines Strings
void UB_Uart_SendArray(UART_NAME_t uart, uint8_t *data, uint16_t cnt);          // zum senden eines arrays
uint32_t UB_Uart_ReceiveArray(UART_NAME_t uart, uint8_t *data);                 // zum empfang eines arrays

Beispiel :

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
//--------------------------------------------------------------
// File     : main.c
// Datum    : 31.10.2013
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F429
// IDE      : CooCox CoIDE 1.7.4
// GCC      : 4.7 2012q4
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der UART-Lib
// 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"
//--------------------------------------------------------------
 
#include "main.h"
#include "stm32_ub_uart.h"
 
int main(void)
{
  UART_RXSTATUS_t check;
  char rx_buf[RX_BUF_SIZE];
 
  SystemInit(); // Quarz Einstellungen aktivieren
 
  // init vom UART (COM1 : TX=PA9, RX=PA10)
  UB_Uart_Init();
 
  // Text senden
  UB_Uart_SendString(COM1, "Hallo", CRLF);
 
  while(1)
  {
    // test ob etwas per COM1 empfangen wurde
    check=UB_Uart_ReceiveString(COM1,rx_buf);
    if(check==RX_READY) {
      // wenn ja, dann als Echo zurücksenden
      UB_Uart_SendString(COM1, rx_buf, CRLF);
    }
  }
}

Hier die Library zum Download :

uart_f429_v103

Hier der komplette CooCox-Projektordner zum Download :

Demo_F429_12

Hier der Link zu dem PC-Programm :

PC-Programme


5 Antworten auf 12-UART-Library (STM32F429)

  1. abdullah sagt:

    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.

    • abdullah sagt:

      I’m using the stm32f429 border.

      • admin_ub sagt:

        hi, please check the uart example for the stm32f407. http://mikrocontroller.bplaced.net/wordpress/?page_id=609
        The 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.

  2. Lu6ith sagt:

    Hi,
    This is very useful for me, but I have one dilema.
    I’m using You library for RS232 tester but I have to change online baud speed.
    How can I do that ?

    • admin_ub sagt:

      you can call “USART_Deinit” and after that reinit the USART with the new settings.


Wie hat Dir dieser Artikel gefallen?

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.