L14-Click 1.0
STM32WLE5CC LoRaWAN Sensor Platform
Loading...
Searching...
No Matches
main.c
Go to the documentation of this file.
1/* USER CODE BEGIN Header */
2/**
3 ******************************************************************************
4 * @file : main.c
5 * @brief : Main program body
6 ******************************************************************************
7 * @attention
8 *
9 * Copyright (c) 2025 STMicroelectronics.
10 * All rights reserved.
11 *
12 * This software is licensed under terms that can be found in the LICENSE file
13 * in the root directory of this software component.
14 * If no LICENSE file comes with this software, it is provided AS-IS.
15 *
16 ******************************************************************************
17 */
18/* USER CODE END Header */
19/* Includes ------------------------------------------------------------------*/
20#include "main.h"
21#include "dma.h"
22#include "i2c.h"
23#include "app_lorawan.h"
24#include "rtc.h"
25#include "spi.h"
26#include "usart.h"
27#include "gpio.h"
28
29/* Private includes ----------------------------------------------------------*/
30/* USER CODE BEGIN Includes */
31#include <stdio.h>
32#include "mysensors.h"
33#include "mysensors_base.h"
34#include "mymems.h"
35#include "usart_if.h"
36#include "stm32_seq.h"
37#include "stm32_lpm.h"
38#include "mylora_process.h"
39#include "timer_if.h" // #define RTC_BKP_STANDBY RTC_BKP_DR3 // MT 25.1.2026 - restart register
40//#include "stm32_lpm_if.h"
41#include "nfc.h"
42#include "sys_app.h"
43#include "lora_app.h"
44/* USER CODE END Includes */
45
46/* Private typedef -----------------------------------------------------------*/
47/* USER CODE BEGIN PTD */
48
49/* USER CODE END PTD */
50
51/* Private define ------------------------------------------------------------*/
52/* USER CODE BEGIN PD */
53
54/* USER CODE END PD */
55
56/* Private macro -------------------------------------------------------------*/
57/* USER CODE BEGIN PM */
58
59/* USER CODE END PM */
60
61/* Private variables ---------------------------------------------------------*/
62
63/* USER CODE BEGIN PV */
64static modeDevice_t _modeDevice = MODEDEVICE_SLEEP; // default state
65static volatile int _nfcTagged = 0; //counter of NFC tagged
66static UTIL_TIMER_Object_t _nfcAfterTrigger; // after
67
68/* USER CODE END PV */
69
70/* Private function prototypes -----------------------------------------------*/
71void SystemClock_Config(void);
72/* USER CODE BEGIN PFP */
73
74/* USER CODE END PFP */
75
76/* Private user code ---------------------------------------------------------*/
77/* USER CODE BEGIN 0 */
78
79#ifdef WRITELOG
80void writeLogNL(const char *buf)
81{
82 Uart_Info(buf);
83}
84
85void writeLogVA(const char *format, va_list argList)
86{
87 static char buf[200];
88 int len;
89
90 vsprintf(buf, format, argList);
91 len = strlen(buf);
92 if (len > 0 && buf[len - 1] != '\n' && buf[len - 2] != '\r')
93 strcat(buf, "\r\n");
94 writeLogNL(buf);
95}
96
97void writeLog(const char *format, ...) //
98{
99 va_list argList;
100 va_start(argList, format);
101 writeLogVA(format, argList);
102 va_end(argList);
103}
104
105#endif
106
107void I2C_Scan(I2C_HandleTypeDef *hi2c) //
108{
109 HAL_StatusTypeDef res;
110 int8_t found = 0;
111
112 HAL_Delay(1500);
113 writeLog("Scanning I2C bus...");
114 for (uint8_t addr = 1; addr < 127; addr++) //
115 {
116 res = HAL_I2C_IsDeviceReady(hi2c, addr << 1, 2, 2);
117 if (res == HAL_OK) //
118 {
119 writeLog("Found I2C device at 0x%02X", addr);
120 found++;
121 HAL_Delay(100);
122 }
123 }
124 if (!found)
125 writeLog("no I2C devices");
126 else
127 HAL_Delay(1500);
128}
129
130/**
131 * @brief called from GPIO interrupt
132 */
133void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
134{
135 // Check if the interrupt came from the GPO pin
136 if (GPIO_Pin == NFC_INT_Pin)
137 {
138 UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_NFC_INT), CFG_SEQ_Prio_0); // start of nfc4_INT
139 }
140}
141
143{
144 HAL_StatusTypeDef status;
145
146 writeLog("start UUART read");
147 status = Uart_StartReceving(&huart1);
148 writeLog("UART read: %d", (int) status);
149}
150
151void togle_LedOff(int off)
152{
153 if (off)
154 HAL_GPIO_WritePin(USER_LED_GPIO_Port, USER_LED_Pin, GPIO_PIN_RESET);
155 else
156 HAL_GPIO_TogglePin(USER_LED_GPIO_Port, USER_LED_Pin);
157}
158
160{
161 switch (mod)
162 {
163 case MODEDEVICE_SLEEP:
164 UTIL_LPM_SetStopMode((1 << CFG_LPM_APPLI_Id), UTIL_LPM_DISABLE);
165 UTIL_LPM_SetOffMode((1 << CFG_LPM_APPLI_Id), UTIL_LPM_DISABLE);
166 break;
167 case MODEDEVICE_STOP:
168 UTIL_LPM_SetStopMode((1 << CFG_LPM_APPLI_Id), UTIL_LPM_ENABLE);
169 UTIL_LPM_SetOffMode((1 << CFG_LPM_APPLI_Id), UTIL_LPM_DISABLE);
170 break;
171 case MODEDEVICE_OFF:
172 UTIL_LPM_SetStopMode((1 << CFG_LPM_APPLI_Id), UTIL_LPM_ENABLE);
173 UTIL_LPM_SetOffMode((1 << CFG_LPM_APPLI_Id), UTIL_LPM_ENABLE);
174 break;
175 }
176 _modeDevice = mod;
177}
178
179static void Uart_RxProcessing()
180{
181// writeLog("from:%s!", (const char*) uart_req_buf);
182 Uart_NextReceving(); // a pokracujeme v citani portu, data su nachystane v uart_req_buf
183}
184
185/**
186 * @brief The interrupt of NFC4 tag
187 */
188static void sensors_NFCInt()
189{
190 writeLog("nfc4 tag interrupt"); // don't know what to do with this.... and whether it makes sense
191 ++_nfcTagged;
192 UTIL_TIMER_Stop(&_nfcAfterTrigger); // restart timer
193 UTIL_TIMER_Start(&_nfcAfterTrigger);
194}
195
196/**
197 * @bried check the data from NFC. Function is called from timer _nfcAfterTrigger or directly
198 */
199static void checkResetRestart()
200{
201 HAL_StatusTypeDef status;
202
203 status = nfc_ReadSystemParams(&hi2c2);
204 if (status == HAL_OK)
205 {
206 writeLog("checkResetRestart ok, reset:%d, restart:%d",(int)_systemParams.DevReset, (int)_systemParams.DevRestart);
207
208 if (_systemParams.DevReset)
209 {
211 mems_Reset();
212 NVIC_SystemReset();
213 }
214
215 if (_systemParams.DevRestart)
216 {
217 _systemParams.DevRestart = 0;
219 NVIC_SystemReset();
220 }
221 }
222 else
223 writeLog("checkResetRestart failed!, status:%d",(int)status);
224}
225
226
227
228/* USER CODE END 0 */
229
230/**
231 * @brief The application entry point.
232 * @retval int
233 */
234int main(void)
235{
236 /* USER CODE BEGIN 1 */
237 int8_t afterStandby = 0, status;
238 uint8_t countChanges;
239
240 /* USER CODE END 1 */
241
242 /* MCU Configuration--------------------------------------------------------*/
243
244 /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
245 HAL_Init();
246
247 /* USER CODE BEGIN Init */
248 HAL_PWREx_SetRadioBusyTrigger(PWR_RADIO_IRQ_TRIGGER_WU_IT);
249 UTIL_SEQ_Init();
250 /* USER CODE END Init */
251
252 /* Configure the system clock */
254
255 /* USER CODE BEGIN SysInit */
257 if (afterStandby)
258 {
260 }
261
262 /*
263 * The system_params contains all information about setting the program, included the LoRaWan settings as DEVEUI, APPKEY, APPEUI
264 * These values are set from system_params, which can be read from NFC tag - therefore must be suppressed default setting of MX_LoRaWAN_Init
265 * The MX_LoRaWAN_Init is below via SystemApp_Init and LoRaWAN_Init
266 */
267 // default setting of system_params
268
269 /* USER CODE END SysInit */
270
271 /* Initialize all configured peripherals */
272 MX_GPIO_Init();
273 MX_DMA_Init();
275 MX_I2C2_Init();
276 MX_SPI1_Init();
277 MX_RTC_Init();
279 /* USER CODE BEGIN 2 */
280
281 // MX_LoRaWan_Init() is disable above and is provide here, after NFC has been read - and the begining!!!
283
284 // pause after start within in 5s
285 for (int i = 0; i < 2; i++)
286 {
287 HAL_GPIO_TogglePin(USER_LED_GPIO_Port, USER_LED_Pin);
288 HAL_Delay(500);
289 }
290
291#ifndef DEBUG
292 // !!! this is important !!!
293 HAL_DBGMCU_DisableDBGStandbyMode(); // no SWD in release
294#endif
295
296 // reading comport
297 uart_Start();
298 UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_Uart_RX), UTIL_SEQ_RFU, Uart_RxProcessing); // repeated v HAL_UART_RxCharMT
299 UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_NFC_INT), UTIL_SEQ_RFU, sensors_NFCInt); // repeated v HAL_GPIO_EXTI_Callback
300
301 //I2C_Scan(&hi2c2);
302
304 mems_Init();
305
306 // for debug - log system_params to log - default setting
307 //mems_WriteToSystemParams();
308 //systemParams_Log("(default)"); // default setting
309
311 status = nfc_Init(&hi2c2);
312 writeLog("nfc tag: Init %s", (status == HAL_OK) ? "OK" : "failed");
313
314 // for debug - log system_params to log - from NFC
315 systemParams_Log("(from NFC + mems)");
317
318 // 13.3.2026 - nothing, stop and go to sleep - NFC not present, always ON
319 if (_systemParams.DevOnOff || status != HAL_OK)
320 {
321 writeLog("...ON...");
322
324 // MX_LoRaWan_Init() is disable above and is provide here, after NFC has been read
325 LoRaWAN_Init();
326 }
327 else
328 writeLog("...OFF...");
329
330 // sequencer, added sequencer for sensors
333 GetTimeDate(); // 1st initialization
334
335
336 checkResetRestart(); // check reset/restart
337
338 // create timer for NFC tag detection, 5sec after last
339 UTIL_TIMER_Create(&_nfcAfterTrigger, 5000, UTIL_TIMER_ONESHOT, checkResetRestart, NULL);
340
341 i2c_OnOff(0);
342
343 /*
344 {
345 // memory test
346 int buf = 0, i, j, x;
347 char buf1[] = "mala lofasocka", buf2[] = "velka lofasocka", *bufW;
348 mems_SensorsDataBlock_t *data;
349
350 HAL_StatusTypeDef status;
351
352 writeLog("mem test start");
353
354 _memsMainBlock.Sens_CountMax = 19;
355 if (_memsMainBlock.Sens_CountCurrent > _memsMainBlock.Sens_CountMax)
356 _memsMainBlock.Sens_CountCurrent = _memsMainBlock.Sens_CountMax;
357
358 mems_WriteMainBlock();
359 mems_WriteMainBlock();
360
361 for (j = 0; j < 10; j++)
362 {
363 // precitam prazdny
364 // status = mems_SensorGetLastData(&data);
365 // if (status != HAL_OK && status != HAL_BUSY)
366 // Error_Handler();
367
368 // zapis....
369 for (i = 0; i < 50; i++)
370 {
371 bufW = ((buf) ? buf2 : buf1);
372 status = mems_SensorAddData(bufW, strlen(bufW)+1);
373 if (status != HAL_OK)
374 {
375 writeLog("err 1");
376 Error_Handler();
377 }
378 // kontrola na posledny
379 status = mems_SensorGetLastData(&data, 0); // chcem posledny
380 if (status != HAL_OK)
381 {
382 writeLog("err 2");
383 Error_Handler();
384 }
385 if (strcmp((const char*)data->Data, bufW) != 0)
386 {
387 Error_Handler();
388 writeLog("err 3");
389 }
390
391 x = _memsMainBlock.Sens_CountCurrent;
392 mems_SensorRemoveLastData(2); // remove last,beforelast,beforebeforelast - 3ps
393 mems_SensorCheck(0);
394
395 // kontrola
396 //if (x != _memsMainBlock.Sens_CountCurrent + 3)
397 //{
398 // writeLog("err 4");
399 // Error_Handler();
400 //}
401 }
402
403
404 mems_SensorCheck(0);
405
406 // citanie
407 // status = mems_SensorGetLastData(&data);
408 // if (status != HAL_OK && status != HAL_BUSY)
409 // Error_Handler();
410
411 buf = !buf;
412 writeLog("check:%d", j);
413 }
414 writeLog("mem test OK");
415 }
416 // */
417 /* USER CODE END 2 */
418
419 /* Infinite loop */
420 /* USER CODE BEGIN WHILE */
421
422 setModeDevice(MODEDEVICE_STOP); // default stop mode
423
424 writeLog("tick:%lu afterStandby:%d", HAL_GetTick(), (int) afterStandby);
425
426 while (1) //
427 {
428 /* USER CODE END WHILE */
430
431 /* USER CODE BEGIN 3 */
432
434 {
435 if (!_nfcTagged) // write NFC if was not tagged
436 {
437 nfc_ReadSystemParams(&hi2c2); // 1st read from NFC, then write
438 if ((countChanges = mems_WriteToSystemParams()) > 0) // update NFC, before going to OFF mode - if is NFC tagged never write my...
439 {
440 status = nfc_WriteSystemParams(&hi2c2);
441 writeLog("nfc_WriteSystemParams: changes:%d status:%s", (int) countChanges, (status == HAL_OK) ? "OK" : "failed");
442 }
443 }
444 }
445 }
446 /* USER CODE END 3 */
447}
448
449/**
450 * @brief System Clock Configuration
451 * @retval None
452 */
454{
455 RCC_OscInitTypeDef RCC_OscInitStruct =
456 { 0 };
457 RCC_ClkInitTypeDef RCC_ClkInitStruct =
458 { 0 };
459
460 /** Configure LSE Drive Capability
461 */
462 HAL_PWR_EnableBkUpAccess();
463 __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
464
465 /** Configure the main internal regulator output voltage
466 */
467 __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2);
468
469 /** Initializes the CPU, AHB and APB buses clocks
470 */
471 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_MSI;
472 RCC_OscInitStruct.LSEState = RCC_LSE_ON;
473 RCC_OscInitStruct.MSIState = RCC_MSI_ON;
474 RCC_OscInitStruct.MSICalibrationValue = RCC_MSICALIBRATION_DEFAULT;
475 RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_8;
476 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
477 if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
478 {
480 }
481
482 /** Configure the SYSCLKSource, HCLK, PCLK1 and PCLK2 clocks dividers
483 */
484 RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK3 | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
485 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_MSI;
486 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
487 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
488 RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
489 RCC_ClkInitStruct.AHBCLK3Divider = RCC_SYSCLK_DIV1;
490
491 if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
492 {
494 }
495}
496
497/* USER CODE BEGIN 4 */
498
499/* USER CODE END 4 */
500
501/**
502 * @brief This function is executed in case of error occurrence.
503 * @retval None
504 */
506{
507 /* USER CODE BEGIN Error_Handler_Debug */
508 /* User can add his own implementation to report the HAL error return state */
509 //__disable_irq();
510 while (1)
511 {
512 HAL_GPIO_TogglePin(USER_LED_GPIO_Port, USER_LED_Pin);
513 HAL_Delay(100);
514 }
515 /* USER CODE END Error_Handler_Debug */
516}
517#ifdef USE_FULL_ASSERT
518/**
519 * @brief Reports the name of the source file and the source line number
520 * where the assert_param error has occurred.
521 * @param file: pointer to the source file name
522 * @param line: assert_param error line source number
523 * @retval None
524 */
525void assert_failed(uint8_t *file, uint32_t line)
526{
527 /* USER CODE BEGIN 6 */
528 /* User can add his own implementation to report the file name and line number,
529 ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
530 /* USER CODE END 6 */
531}
532#endif /* USE_FULL_ASSERT */
void MX_LoRaWAN_Process(void)
Entry Lora Process or scheduling.
Definition app_lorawan.c:81
void MX_LoRaWAN_Init(void)
Init Lora Application.
Definition app_lorawan.c:65
Header of application of the LRWAN Middleware.
This file contains all the function prototypes for the dma.c file.
void MX_DMA_Init(void)
Initialise DMA1 channels used by USART1 (TX via DMA) and other peripherals. Must be called before MX_...
Definition dma.c:39
This file contains all the function prototypes for the gpio.c file.
void MX_GPIO_Init(void)
Initialise all GPIO pins and ports as configured by STM32CubeMX. Enables GPIO clocks,...
Definition gpio.c:42
This file contains all the function prototypes for the i2c.c file.
void MX_I2C2_Init(void)
Initialise the I2C2 peripheral (hi2c2) as configured by STM32CubeMX. Sets clock speed,...
Definition i2c.c:30
I2C_HandleTypeDef hi2c2
Definition i2c.c:27
void LoRaWAN_Init(void)
Init Lora Application.
Definition lora_app.c:310
void systemParams_SetLoRaWanParams()
set the lorawan parameters from _systemParams before start of loraWan
Definition lora_app.c:300
Header of application of the LRWAN Middleware.
void uart_Start()
start of UART reading
Definition main.c:142
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
called from GPIO interrupt
Definition main.c:133
void Error_Handler(void)
This function is executed in case of error occurrence.
Definition main.c:505
static modeDevice_t _modeDevice
Definition main.c:64
void writeLog(const char *format,...)
Format and send a log message over UART (printf-style). Available only when WRITELOG is defined; comp...
Definition main.c:97
static UTIL_TIMER_Object_t _nfcAfterTrigger
Definition main.c:66
static void checkResetRestart()
Definition main.c:199
void SystemClock_Config(void)
System Clock Configuration.
Definition main.c:453
void writeLogVA(const char *format, va_list argList)
Format and send a log message using a va_list argument list. Used internally by writeLog(); can also ...
Definition main.c:85
void setModeDevice(modeDevice_t mod)
set new device mode
Definition main.c:159
int main(void)
The application entry point.
Definition main.c:234
void togle_LedOff(int off)
togle led
Definition main.c:151
void writeLogNL(const char *buf)
Send a pre-formatted C string to the UART log followed by a newline.
Definition main.c:80
static void Uart_RxProcessing()
Definition main.c:179
static volatile int _nfcTagged
Definition main.c:65
void I2C_Scan(I2C_HandleTypeDef *hi2c)
Definition main.c:107
static void sensors_NFCInt()
The interrupt of NFC4 tag.
Definition main.c:188
: Header for main.c file. This file contains the common defines of the application.
modeDevice_t
Device power/sleep mode selector.
Definition main.h:56
@ MODEDEVICE_SLEEP
Definition main.h:57
@ MODEDEVICE_OFF
Definition main.h:59
@ MODEDEVICE_STOP
Definition main.h:58
#define NFC_INT_Pin
Definition main.h:139
#define USER_LED_Pin
Definition main.h:144
#define USER_LED_GPIO_Port
Definition main.h:145
void GetTimeDate()
Filled up _currentTime & _currentDate.
void myloraWan_Init(uint32_t myloraWanAppBit)
initialization of myloraWan process, sequencer
uint8_t mems_WriteToSystemParams()
write data from memory to systemParams
Definition mymems.c:268
void mems_Init()
Initialise NFC and external flash; load the main block and system parameters. Verifies the flash sign...
Definition mymems.c:52
HAL_StatusTypeDef mems_Reset()
memory reset - remove sign from chip
Definition mymems.c:125
void setBackUpRegister(uint32_t backupRegister, uint32_t value)
Write a value to an RTC backup register.
Definition mymems.c:358
uint32_t getBackUpRegister(uint32_t backupRegister)
Read a value from an RTC backup register.
Definition mymems.c:337
void sensors_Init(I2C_HandleTypeDef *hi2c)
Initialization of all sensors, must be called before for store of hi2c handler.
Definition mysensors.c:399
void sensorsSeq_Init(uint32_t sensortAppBit, uint32_t mylorawanAppBit)
the sensors sequencer initialization and set the process in sequencer
Definition mysensors.c:436
void i2c_OnOff(uint8_t onOff)
possible to I2C turn on/off - cumulative
Definition mysensors.c:184
systemParams_t _systemParams
void systemParams_Log(const char *info)
Log the current _systemParams fields to the UART debug output.
void sensorsBase_Init()
Initialization of base sensor data structure.
HAL_StatusTypeDef nfc_WriteSystemParams(I2C_HandleTypeDef *hi2c)
Write system params to NFC.
Definition nfc.c:101
HAL_StatusTypeDef nfc_ReadSystemParams(I2C_HandleTypeDef *hi2c)
reading _systemParams from NFC - all data will be rewrite in _systemParams
Definition nfc.c:140
HAL_StatusTypeDef nfc_FactoryReset(I2C_HandleTypeDef *hi2c)
reset NFC data to factory - default state
Definition nfc.c:121
HAL_StatusTypeDef nfc_Init(I2C_HandleTypeDef *hi2c)
NFC initialization and read NFC tag systemParams from addr 0. If data there are not valid,...
Definition nfc.c:71
This file contains all the function prototypes for the rtc.c file.
void MX_RTC_Init(void)
Initialise the RTC peripheral with settings generated by STM32CubeMX. Configures the prescalers,...
Definition rtc.c:30
This file contains all the function prototypes for the spi.c file.
void MX_SPI1_Init(void)
Initialise SPI1 peripheral (hspi1) as configured by STM32CubeMX. Sets clock polarity/phase,...
Definition spi.c:30
void HAL_Delay(__IO uint32_t Delay)
Definition sys_app.c:369
uint32_t HAL_GetTick(void)
Definition sys_app.c:337
Function prototypes for sys_app.c file.
void SystemApp_Init(void)
initialize the system (dbg pins, trace, mbmux, sys timer, LPM, ...)
Definition sys_app.c:90
configuration of the timer_if.c instances
#define RTC_BKP_STANDBY_SIGN
Magic value stored in RTC_BKP_STANDBY before entering standby mode. On wakeup, if getBackUpRegister(R...
Definition timer_if.h:69
#define RTC_BKP_STANDBY
RTC backup register index used to persist the standby-mode flag across a system reset / wakeup from O...
Definition timer_if.h:61
This file contains all the function prototypes for the usart.c file.
UART_HandleTypeDef huart1
Definition usart.c:30
void MX_USART1_UART_Init(void)
Initialise USART1 (huart1) as configured by STM32CubeMX. Sets baud rate, word length,...
Definition usart.c:35
Header for USART interface configuration.
UTIL_ADV_TRACE_Status_t Uart_Info(const char *strInfo)
Write to UART1.
Definition usart_if.c:299
UTIL_ADV_TRACE_Status_t Uart_NextReceving()
continue with next reading if data arrived
Definition usart_if.c:306
UTIL_ADV_TRACE_Status_t Uart_StartReceving(UART_HandleTypeDef *uart)
start reading
Definition usart_if.c:313
@ CFG_SEQ_Prio_0
@ CFG_SEQ_Task_NFC_INT
@ CFG_SEQ_Task_MyLoraSend
@ CFG_SEQ_Task_Uart_RX
@ CFG_SEQ_Task_Sensors
@ CFG_LPM_APPLI_Id