Habe folgenden Code unter Eclipse CDT erstellt
1 | #include "stm32f4xx_hal.h"
|
2 | #include "stm32f4xx_hal_gpio.h"
|
3 | #include "stm32f4xx_hal_uart.h"
|
4 |
|
5 | static void SystemClock_Config(void);
|
6 | int main(void) {
|
7 | HAL_Init();
|
8 |
|
9 |
|
10 |
|
11 | unsigned char message[] = "Hello UART!\n";
|
12 |
|
13 | SystemClock_Config();
|
14 | __HAL_RCC_GPIOA_CLK_ENABLE();
|
15 |
|
16 |
|
17 | GPIO_InitTypeDef GPIOinit;
|
18 | GPIOinit.Pin = GPIO_PIN_0 | GPIO_PIN_1;
|
19 | GPIOinit.Mode = GPIO_MODE_AF_PP;
|
20 | GPIOinit.Pull = GPIO_PULLUP;
|
21 | GPIOinit.Speed = GPIO_SPEED_FAST;
|
22 | GPIOinit.Alternate = GPIO_AF8_UART4;
|
23 | HAL_GPIO_Init(GPIOD, &GPIOinit);
|
24 |
|
25 | UART_HandleTypeDef uart4;
|
26 | uart4.Instance = UART4;
|
27 | uart4.Init.BaudRate = 9600;
|
28 | uart4.Init.WordLength = UART_WORDLENGTH_8B;
|
29 | uart4.Init.StopBits = UART_STOPBITS_1;
|
30 | uart4.Init.Parity = UART_PARITY_NONE;
|
31 | uart4.Init.Mode = UART_MODE_TX_RX;
|
32 | HAL_UART_Init(&uart4);
|
33 |
|
34 | HAL_UART_Transmit(&uart4, message, 12, 100);
|
35 |
|
36 | while (1) {
|
37 |
|
38 | }
|
39 | }
|
(Clock Config ist in der Uebersicht weggelassen)
Sources und Includes fuer die HAL-Library sind im Suchfad vorhanden.
Wenn ich nun bauen lasse, werden alle Typedefs erkannt, und die Sources
fuer Clock Config, GPIO usw. sauber kompiliert. Der Linker beschwert
sich danach allerdings, dass er kein Objectfile fuer die UART-Funktionen
finden kann.
Suche nun schon ewig, wie ich Eclipse dazu bringen kann, den Code fuer
den UART auch automatisch mit zu kompilieren, finde aber nix. Was mache
ich falsch?
In der Shell kompilieren und das Objectfile per Hand an der richtigen
Stelle ablegen ginge zwar, ist aber sicher nicht die elganteste Loesung.