Forum: Mikrocontroller und Digitale Elektronik UART mit stm32f030f4, HAL Lib und eigenem Makefile - Problem


von dakesew (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Forummitglieder,

Ich versuch mich, nachdem ich ein wenig mit AVRs gespielt habe, in die 
STM32 Arms und der HAL Lib einzuarbeiten. Jetzt hat ich schon anfägliche 
Erfolgsergebnisse mit GPIO, aber mit dem UART hab ich einfach kein 
Glück. Ich hab dank den mitgelieferten Beispielen und der Dokumentation 
das Folgende Beispiel zusammengeschraubt:
1
uint8_t aTxBuffer[] = "Hello World \n";
2
GPIO_InitTypeDef GPIO_InitStruct;
3
UART_HandleTypeDef UartHandle;
4
5
int main(void) {
6
    HAL_Init();
7
8
    /* initialize the Clock */
9
    SystemClock_Config();  //Hier passiert nichts
10
11
    /* -1- Enable each GPIO Clock (to be able to program the configuration registers) */
12
    __GPIOA_CLK_ENABLE();
13
    /* -2- Configure IOs in output push-pull mode to drive external LEDs */
14
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
15
    GPIO_InitStruct.Pull = GPIO_PULLUP;
16
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
17
    GPIO_InitStruct.Pin = GPIO_PIN_4;
18
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
19
20
    /* -5- Configure the UART peripheral */
21
    UartHandle.Instance = USART1;
22
    UartHandle.Init.BaudRate = 4800;
23
    UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
24
    UartHandle.Init.StopBits = UART_STOPBITS_1;
25
    UartHandle.Init.Parity = UART_PARITY_NONE;
26
    UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
27
    UartHandle.Init.Mode = UART_MODE_TX;
28
    UartHandle.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
29
    HAL_UART_DeInit(&UartHandle);
30
    HAL_UART_Init(&UartHandle);
31
    __USART1_CLK_ENABLE();
32
33
    /* -7- Configure TX GPIO */
34
    GPIO_InitStruct.Pin = GPIO_PIN_2;
35
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
36
    GPIO_InitStruct.Pull = GPIO_PULLUP;
37
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
38
    GPIO_InitStruct.Alternate = GPIO_AF1_USART1;
39
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
40
41
    while (1) {
42
        HAL_UART_Transmit(&UartHandle, (uint8_t *) aTxBuffer, 12, 50000);
43
        HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_4);
44
    }
45
}
Jetzt hab ich das Problem, das die LED an PA4 Blinkt, aber an PA2 
einfach nichts raukommt (auch mit Scope). Kann mir irgendjemand 
weiterhelfen? Ich hab keine Ahnung was ich falsch machen könnte . Im 
Anhang ist mein komplettes Verzeichnis.

Danke

von Jim M. (turboj)


Lesenswert?

Ich würde die USART1 Clock enablen bevor ich mit Init versuche dort 
Register zu beschreiben.

von dakesew (Gast)


Lesenswert?

Das hat auch nichts gebracht:
1
    /* -6- Enable USART1 Clock */
2
3
    __USART1_CLK_ENABLE();
4
5
    /* -5- Configure the UART peripheral */
6
    /* Put the USART peripheral in the Asynchronous mode (UART Mode) */
7
    /* UART configured as follows:
8
        - Word Length = 8 Bits
9
        - Stop Bit = One Stop bit
10
        - Parity = None
11
        - BaudRate = 9600 baud
12
        - Hardware flow control disabled (RTS and CTS signals) */
13
    UartHandle.Instance = USART1;
14
    UartHandle.Init.BaudRate = 4800;
15
    UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
16
    UartHandle.Init.StopBits = UART_STOPBITS_1;
17
    UartHandle.Init.Parity = UART_PARITY_NONE;
18
    UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
19
    UartHandle.Init.Mode = UART_MODE_TX;
20
    UartHandle.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
21
    HAL_UART_DeInit(&UartHandle);
22
    HAL_UART_Init(&UartHandle);

Andere Vorschläge?

von dakesew (Gast)


Lesenswert?

Ok, habs jetzt zum laufen gebracht --> Das eine IC Beinchen beim stm32 
hatte keinen Kontakt zur Adapterplatine.

Man muss aber auch erstmal die UART1 Clock anschalten befor man 
Initialisiert.

Danke tourboj

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.