STM32 NUCLEOF411RE USART1 mit HC-05 verbinden

OP #5509011
Lesenswert?

Hallo Leute,

möchte meine STM32 NUCLEO-F411RE über Bluetoot mit meinem Rechner 
verbinden und Daten senden. Beide HC-05 Module habe ich eingerichtet und 
laut status LED ist sie auch miteinander verbunden. Meine Aufbau seht 
ihr im Bild. Ich benutze das USART1 da ich gehört habe USART2 benutzt 
noch irgendwie die USB Schnittstelle und sei deswegen ungeeignet? 
Jedenfalls Will ich Sensordaten rüber schicken, für den Test mit 
bluetooth habe ich mit der CubeMx Initialisierungssoftware von STM mein 
USART1 initialisiert und versuche daten zu schicken. Leider bisher ohne 
erfolg ich bekomme weder einen fehler noch kommen Daten an meinem COM 
Port an. Jemand eine idee ?
1
/* Includes ------------------------------------------------------------------*/
2
#include "main.h"
3
#include "stm32f4xx_hal.h"
4

5
/* Private variables ---------------------------------------------------------*/
6
UART_HandleTypeDef huart1;
7

8
/* Private variables ---------------------------------------------------------*/
9
uint8_t bufftx[10] = "hello!\n\r";
10

11
/* Private function prototypes -----------------------------------------------*/
12
void SystemClock_Config(void);
13
static void MX_GPIO_Init(void);
14
static void MX_USART1_UART_Init(void);
15

16
int main(void)
17
{
18
  HAL_Init();
19
  
20
  /* Configure the system clock */
21
  SystemClock_Config();
22

23
  /* Initialize all configured peripherals */
24
  MX_GPIO_Init();
25
  MX_USART1_UART_Init();
26

27
  while (1)
28
  {
29
  HAL_UART_Transmit(&huart1, bufftx, 10, 100);
30
  HAL_Delay(100);
31
  }
32
}
33

34
void SystemClock_Config(void)
35
{
36

37
  RCC_OscInitTypeDef RCC_OscInitStruct;
38
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
39

40
    /**Configure the main internal regulator output voltage 
41
    */
42
  __HAL_RCC_PWR_CLK_ENABLE();
43

44
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
45

46
    /**Initializes the CPU, AHB and APB busses clocks 
47
    */
48
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
49
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
50
  RCC_OscInitStruct.HSICalibrationValue = 16;
51
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
52
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
53
  {
54
    _Error_Handler(__FILE__, __LINE__);
55
  }
56

57
    /**Initializes the CPU, AHB and APB busses clocks 
58
    */
59
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
60
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
61
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
62
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
63
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
64
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
65

66
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
67
  {
68
    _Error_Handler(__FILE__, __LINE__);
69
  }
70

71
    /**Configure the Systick interrupt time 
72
    */
73
  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
74

75
    /**Configure the Systick 
76
    */
77
  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
78

79
  /* SysTick_IRQn interrupt configuration */
80
  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
81
}
82

83
/* USART1 init function */
84
static void MX_USART1_UART_Init(void)
85
{
86

87
  huart1.Instance = USART1;
88
  huart1.Init.BaudRate = 9600;
89
  huart1.Init.WordLength = UART_WORDLENGTH_8B;
90
  huart1.Init.StopBits = UART_STOPBITS_1;
91
  huart1.Init.Parity = UART_PARITY_NONE;
92
  huart1.Init.Mode = UART_MODE_TX_RX;
93
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
94
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
95
  if (HAL_UART_Init(&huart1) != HAL_OK)
96
  {
97
    _Error_Handler(__FILE__, __LINE__);
98
  }
99

100
}
101

102
static void MX_GPIO_Init(void)
103
{
104

105
  /* GPIO Ports Clock Enable */
106
  __HAL_RCC_GPIOA_CLK_ENABLE();
107

108
}
109

110
void _Error_Handler(char *file, int line)
111
{
112
  while(1)
113
  {
114
  }
115
}
116

117
#ifdef  USE_FULL_ASSERT
118

119
void assert_failed(uint8_t* file, uint32_t line)
120
{ 
121

122
}

Gruß Belaya
Angehängte Dateien:
#5509042
Lesenswert?

Was auf Anhieb auffällt:

Walt N. schrieb:
> /* Private variables
> ---------------------------------------------------------*/
> uint8_t bufftx[10] = "hello!\n\r";

sollte sein:
1
/* Private variables 
2
---------------------------------------------------------*/
3
uint8_t bufftx[] = "hello!\n\r";

und:

Walt N. schrieb:
> while (1)
>   {
>   HAL_UART_Transmit(&huart1, bufftx, 10, 100);
>   HAL_Delay(100);
>   }

sollte sein:
1
while (1)
2
  {
3
  HAL_UART_Transmit(&huart1, bufftx, sizeof[bufftx], 100);
4
  HAL_Delay(100);
5
  }

Alternativ kannst du auch den bufftx lassen wie er ist und statt 
sizeof() strlen() nutzen.
#5509070
Lesenswert?

Walt N. schrieb:
> Habe das gefühl es liegt an
> meiner USART1 initialisierung oder bei der GPIO init?

Glaub ich nicht!

Walt N. schrieb:
> Ansonsten reicht
> es bei dem HC-05 Modul wenn die verbunden sind?

Ja

Schau mit einem Oszilloskop an TX Vom Nucleo, ob da was rauskommt! (wird 
aber wohl)

Ansonsten verbinde mal TX und RX von dem HC05 am Nucleo (natürlich ohne 
das Nucleo-Board) und schau mit einem Terminal auf dem PC ob die 
eingegebenen Zeichen zurück gesendet werden.

Ganz wichtig:

IMMER: TX mit RX verbinden und umgekehrt!

Oder laß zum Testen die Bluetooth-Geschichte erstmal weg, und verbinde 
die Serielle vom Nucleo über deinem USB-Adapter direkt mit dem PC.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren