Port to freeRTOS

UNTESTED
This commit is contained in:
2023-12-01 11:17:29 +01:00
parent e5273c7012
commit f9515f85fe
46 changed files with 29804 additions and 211 deletions

View File

@@ -18,6 +18,7 @@
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "cmsis_os.h"
#include "lwip.h"
/* Private includes ----------------------------------------------------------*/
@@ -44,7 +45,6 @@
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
static const char* TAG = "main";
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
@@ -64,6 +64,7 @@ UART_HandleTypeDef huart1;
SDRAM_HandleTypeDef hsdram1;
osThreadId appHandle;
/* USER CODE BEGIN PV */
/* USER CODE END PV */
@@ -76,8 +77,10 @@ static void MX_USART1_UART_Init(void);
static void MX_DMA2D_Init(void);
static void MX_FMC_Init(void);
static void MX_QUADSPI_Init(void);
/* USER CODE BEGIN PFP */
void app_main(void const * argument);
/* USER CODE BEGIN PFP */
void app_main(void const * argument);
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
@@ -110,67 +113,59 @@ int main(void) {
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_LTDC_Init();
MX_USART1_UART_Init();
MX_DMA2D_Init();
MX_FMC_Init();
MX_LWIP_Init();
MX_QUADSPI_Init();
/* USER CODE BEGIN 2 */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_LTDC_Init();
MX_USART1_UART_Init();
MX_DMA2D_Init();
MX_FMC_Init();
MX_QUADSPI_Init();
/* USER CODE BEGIN 2 */
/* Initialize QSPI */
BSP_QSPI_Init();
BSP_QSPI_MemoryMappedMode();
WRITE_REG(QUADSPI->LPTR, 0xFFF);
/* Clear terminal */
printf(CLEAR_SCREEN);
/* USER CODE END 2 */
/* Initialize the LCD */
lcd_init(true);
/* USER CODE BEGIN RTOS_MUTEX */
/* add mutexes, ... */
/* USER CODE END RTOS_MUTEX */
/* Initialize the filesystem */
llfs_init();
/* USER CODE BEGIN RTOS_SEMAPHORES */
/* add semaphores, ... */
/* USER CODE END RTOS_SEMAPHORES */
/* Initialize the tftp server */
tftp_server_init();
/* USER CODE BEGIN RTOS_TIMERS */
/* start timers, add new ones, ... */
/* USER CODE END RTOS_TIMERS */
/* Initialize tcp command interface*/
tcp_cmd_init();
/* USER CODE BEGIN RTOS_QUEUES */
/* add queues, ... */
/* USER CODE END RTOS_QUEUES */
/* Initialize Modbus*/
modbus_init();
/* Create the thread(s) */
/* definition and creation of app */
osThreadDef(app, app_main, osPriorityNormal, 0, 128);
appHandle = osThreadCreate(osThread(app), NULL);
/* Initialize the MQTT application */
mqtt_application_init();
/* USER CODE BEGIN RTOS_THREADS */
/* add threads, ... */
/* USER CODE END RTOS_THREADS */
// Initialize the UDP broadcast service
/* Start scheduler */
osKernelStart();
/* We should never get here as control is now taken by the scheduler */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
if (udp_broadcast_init(10, 255) != ERR_OK) {
LOG_WARN(TAG, "error initializing udp connection, check warnings from udp_broadcast_init() or "
"udp_broadcast_connection_init()");
}
if (udp_broadcast_set_owner_details("Joran", "Van Nieuwenhoven") != ERR_OK) {
LOG_WARN(TAG, "error setting owner's details");
}
/* Initialize website backend */
wbe_init();
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1) {
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
MX_LWIP_Process();
lcd_task();
}
/* USER CODE END 3 */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
/**
@@ -503,17 +498,60 @@ static void MX_GPIO_Init(void) {
/* USER CODE BEGIN 4 */
/* USER CODE END 4 */
/* USER CODE BEGIN Header_app_main */
/**
* @brief This function is executed in case of error occurrence.
* @retval None
*/
void Error_Handler(void) {
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
__disable_irq();
while (1) {
}
/* USER CODE END Error_Handler_Debug */
* @brief Function implementing the app thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_app_main */
__weak void app_main(void const * argument)
{
/* init code for LWIP */
MX_LWIP_Init();
/* USER CODE BEGIN 5 */
/* Infinite loop */
for(;;)
{
osDelay(1);
}
/* USER CODE END 5 */
}
/**
* @brief Period elapsed callback in non blocking mode
* @note This function is called when TIM1 interrupt took place, inside
* HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment
* a global variable "uwTick" used as application time base.
* @param htim : TIM handle
* @retval None
*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
/* USER CODE BEGIN Callback 0 */
/* USER CODE END Callback 0 */
if (htim->Instance == TIM1) {
HAL_IncTick();
}
/* USER CODE BEGIN Callback 1 */
/* USER CODE END Callback 1 */
}
/**
* @brief This function is executed in case of error occurrence.
* @retval None
*/
void Error_Handler(void)
{
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
__disable_irq();
while (1)
{
}
/* USER CODE END Error_Handler_Debug */
}
#ifdef USE_FULL_ASSERT