1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
23
28
33
42
47
56
57
58
59
60
61
62
63
64
65
66
67
68
69
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
120
121
122
123
124
128
129
130
131
132
133
135
136
137
140
141
144
145
146
147
148
149
150
151
152
157
159
164
166
167
168
169
170
171
172
173
177
178
179
183
184
185
186
187
189
190
191
196
197
198
202
203
204
205
206
207
213
214
215
216
217
222
223
230
231
232
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
259
260
261
262
263
264
265
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
295
296
297
298
299
300
301
320
321
324
325
/* ... */
#include "main.h"
#include "app_threadx.h"
Includes
Private includes
Private typedef
#if defined ( __GNUC__) && !defined(__clang__)
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
Private define
Private macro
UART_HandleTypeDef huart3;
Private variables
static void SystemClock_Config(void);
void PeriphCommonClock_Config(void);
static void GPIO_Init(void);
static void USART3_UART_Init(void);
void Error_Handler(void);
Private function prototypes
/* ... */
int main(void)
{
HAL_Init();
SystemClock_Config();
PeriphCommonClock_Config();
BSP_LED_Init(LED_GREEN);
BSP_LED_Init(LED_RED);
GPIO_Init();
USART3_UART_Init();
MX_AZURE_RTOS_Init();
while (1)
{
}while (1) { ... }
}{ ... }
/* ... */
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
/* ... */
__HAL_RCC_PWR_CLK_ENABLE();
/* ... */
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
/* ... */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 8;
RCC_OscInitStruct.PLL.PLLN = 360;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 7;
if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { ... }
/* ... */
if (HAL_PWREx_EnableOverDrive() != HAL_OK)
{
Error_Handler();
}if (HAL_PWREx_EnableOverDrive() != HAL_OK) { ... }
/* ... */
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
{
Error_Handler();
}if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) { ... }
}{ ... }
/* ... */
void PeriphCommonClock_Config(void)
{
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
/* ... */
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_TIM;
PeriphClkInitStruct.TIMPresSelection = RCC_TIMPRES_ACTIVATED;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { ... }
}{ ... }
/* ... */
void Error_Handler(void)
{
printf(" Error \n");
BSP_LED_Off(LED_GREEN);
while(1)
{
BSP_LED_Toggle(LED_RED);
HAL_Delay(400);
}while (1) { ... }
}{ ... }
/* ... */
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
...}
/* ... */
static void USART3_UART_Init(void)
{
huart3.Instance = USART3;
huart3.Init.BaudRate = 115200;
huart3.Init.WordLength = UART_WORDLENGTH_8B;
huart3.Init.StopBits = UART_STOPBITS_1;
huart3.Init.Parity = UART_PARITY_NONE;
huart3.Init.Mode = UART_MODE_TX_RX;
huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart3.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart3) != HAL_OK)
{
Error_Handler();
}if (HAL_UART_Init(&huart3) != HAL_OK) { ... }
}{ ... }
/* ... */
static void GPIO_Init(void)
{
__HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
}{ ... }
/* ... */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim->Instance == TIM6) {
HAL_IncTick();
}if (htim->Instance == TIM6) { ... }
}{ ... }
#ifdef USE_FULL_ASSERT
/* ... */
void assert_failed(uint8_t *file, uint32_t line)
{
/* ... */
while (1)
{
}while (1) { ... }
}assert_failed (uint8_t *file, uint32_t line) { ... }
/* ... */#endif
/* ... */
/* ... */