From d19cec08897de741361e934f25f25a0a077cf2f5 Mon Sep 17 00:00:00 2001 From: wangxujie Date: Mon, 10 Feb 2025 13:55:11 +0800 Subject: [PATCH] =?UTF-8?q?FreeRTOS=E7=A7=BB=E6=A4=8D=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Core/Inc/FreeRTOSConfig.h | 2 +- Core/Inc/main.h | 29 +++++++------- Core/Src/freertos.c | 80 +++++++++++++++++++++++++-------------- Core/Src/main.c | 16 +++----- TEST2.ioc | 5 ++- User/driver/dac161s997.c | 2 +- User/driver/dac161s997.h | 2 +- 7 files changed, 78 insertions(+), 58 deletions(-) diff --git a/Core/Inc/FreeRTOSConfig.h b/Core/Inc/FreeRTOSConfig.h index 9fe16c1..cd95759 100644 --- a/Core/Inc/FreeRTOSConfig.h +++ b/Core/Inc/FreeRTOSConfig.h @@ -62,7 +62,7 @@ #define configUSE_TICK_HOOK 0 #define configCPU_CLOCK_HZ ( SystemCoreClock ) #define configTICK_RATE_HZ ((TickType_t)1000) -#define configMAX_PRIORITIES ( 7 ) +#define configMAX_PRIORITIES ( 32 ) #define configMINIMAL_STACK_SIZE ((uint16_t)128) #define configTOTAL_HEAP_SIZE ((size_t)15360) #define configMAX_TASK_NAME_LEN ( 24 ) diff --git a/Core/Inc/main.h b/Core/Inc/main.h index 86d34c9..dba87ae 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -23,8 +23,7 @@ #define __MAIN_H #ifdef __cplusplus -extern "C" -{ +extern "C" { #endif /* Includes ------------------------------------------------------------------*/ @@ -37,10 +36,10 @@ extern "C" #include "tcpserverc.h" #include "leds.h" #include - /* USER CODE END Includes */ +/* USER CODE END Includes */ - /* Exported types ------------------------------------------------------------*/ - /* USER CODE BEGIN ET */ +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ extern uint8_t tcp_echo_flags_hart1; // 标志位,连接成功?1 extern uint8_t tcp_echo_flags_hart2; // 标志位,连接成功?1 extern uint8_t tcp_echo_flags_ble1; @@ -71,20 +70,20 @@ extern "C" #define LOCAL_PORT 5001 - /* USER CODE END ET */ +/* USER CODE END ET */ - /* Exported constants --------------------------------------------------------*/ - /* USER CODE BEGIN EC */ +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ - /* USER CODE END EC */ +/* USER CODE END EC */ - /* Exported macro ------------------------------------------------------------*/ - /* USER CODE BEGIN EM */ +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ - /* USER CODE END EM */ +/* USER CODE END EM */ - /* Exported functions prototypes ---------------------------------------------*/ - void Error_Handler(void); +/* Exported functions prototypes ---------------------------------------------*/ +void Error_Handler(void); /* USER CODE BEGIN EFP */ @@ -171,7 +170,7 @@ extern "C" /* USER CODE BEGIN Private defines */ #define TRUE 0 #define FAIL -1 - /* USER CODE END Private defines */ +/* USER CODE END Private defines */ #ifdef __cplusplus } diff --git a/Core/Src/freertos.c b/Core/Src/freertos.c index 2207754..615f7ea 100644 --- a/Core/Src/freertos.c +++ b/Core/Src/freertos.c @@ -26,7 +26,7 @@ /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "dac161s997.h" -#include "user_spi.h" +#include "ad7124.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -48,18 +48,20 @@ /* USER CODE BEGIN Variables */ /* USER CODE END Variables */ -osThreadId defaultTaskHandle; -osThreadId led_toggleHandle; +osThreadId lwip_taskHandle; +osThreadId led_taskHandle; osThreadId dac_taskHandle; +osThreadId adc_taskHandle; /* Private function prototypes -----------------------------------------------*/ /* USER CODE BEGIN FunctionPrototypes */ /* USER CODE END FunctionPrototypes */ -void StartDefaultTask(void const *argument); -void start_led_toggle(void const *argument); +void start_tcp_task(void const *argument); +void start_led_toggle_task(void const *argument); void start_dac_task(void const *argument); +void start_adc_task(void const *argument); extern void MX_LWIP_Init(void); void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */ @@ -108,63 +110,65 @@ void MX_FREERTOS_Init(void) /* USER CODE END RTOS_QUEUES */ /* Create the thread(s) */ - /* definition and creation of defaultTask */ - osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 512); - defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); + /* definition and creation of lwip_task */ + osThreadDef(lwip_task, start_tcp_task, osPriorityHigh, 0, 512); + lwip_taskHandle = osThreadCreate(osThread(lwip_task), NULL); - /* definition and creation of led_toggle */ - osThreadDef(led_toggle, start_led_toggle, osPriorityIdle, 0, 128); - led_toggleHandle = osThreadCreate(osThread(led_toggle), NULL); + /* definition and creation of led_task */ + osThreadDef(led_task, start_led_toggle_task, osPriorityLow, 0, 128); + led_taskHandle = osThreadCreate(osThread(led_task), NULL); /* definition and creation of dac_task */ - osThreadDef(dac_task, start_dac_task, osPriorityIdle, 0, 512); + osThreadDef(dac_task, start_dac_task, osPriorityLow, 0, 512); dac_taskHandle = osThreadCreate(osThread(dac_task), NULL); + /* definition and creation of adc_task */ + osThreadDef(adc_task, start_adc_task, osPriorityLow, 0, 128); + adc_taskHandle = osThreadCreate(osThread(adc_task), NULL); + /* USER CODE BEGIN RTOS_THREADS */ /* add threads, ... */ /* USER CODE END RTOS_THREADS */ } -/* USER CODE BEGIN Header_StartDefaultTask */ +/* USER CODE BEGIN Header_start_tcp_task */ /** - * @brief Function implementing the defaultTask thread. + * @brief Function implementing the lwip_task thread. * @param argument: Not used * @retval None */ -/* USER CODE END Header_StartDefaultTask */ -void StartDefaultTask(void const *argument) +/* USER CODE END Header_start_tcp_task */ +void start_tcp_task(void const *argument) { /* init code for LWIP */ MX_LWIP_Init(); + /* USER CODE BEGIN start_tcp_task */ tcp_echo_init(); - /* USER CODE BEGIN StartDefaultTask */ /* Infinite loop */ for (;;) { osDelay(1); } - /* USER CODE END StartDefaultTask */ + /* USER CODE END start_tcp_task */ } -/* USER CODE BEGIN Header_start_led_toggle */ +/* USER CODE BEGIN Header_start_led_toggle_task */ /** - * @brief Function implementing the led_toggle thread. + * @brief Function implementing the led_task thread. * @param argument: Not used * @retval None */ -/* USER CODE END Header_start_led_toggle */ -void start_led_toggle(void const *argument) +/* USER CODE END Header_start_led_toggle_task */ +void start_led_toggle_task(void const *argument) { - /* USER CODE BEGIN start_led_toggle */ - HAL_GPIO_TogglePin(LED3_Y_GPIO_Port, LED3_Y_Pin); + /* USER CODE BEGIN start_led_toggle_task */ /* Infinite loop */ for (;;) { - osDelay(500); - HAL_GPIO_TogglePin(LED2_Y_GPIO_Port, LED2_Y_Pin); - osDelay(500); + HAL_GPIO_TogglePin(LED2_G_GPIO_Port, LED2_G_Pin); + osDelay(1000); } - /* USER CODE END start_led_toggle */ + /* USER CODE END start_led_toggle_task */ } /* USER CODE BEGIN Header_start_dac_task */ @@ -188,6 +192,26 @@ void start_dac_task(void const *argument) /* USER CODE END start_dac_task */ } +/* USER CODE BEGIN Header_start_adc_task */ +/** + * @brief Function implementing the adc_task thread. + * @param argument: Not used + * @retval None + */ +/* USER CODE END Header_start_adc_task */ +void start_adc_task(void const *argument) +{ + /* USER CODE BEGIN start_adc_task */ + ad7124_setup(); + /* Infinite loop */ + for (;;) + { + ad7124_get_analog(STOP_NC_ADC); + osDelay(1000); + } + /* USER CODE END start_adc_task */ +} + /* Private application code --------------------------------------------------*/ /* USER CODE BEGIN Application */ diff --git a/Core/Src/main.c b/Core/Src/main.c index 0e43332..8ab21c4 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -115,17 +115,17 @@ int main(void) MX_USART2_UART_Init(); MX_USART3_UART_Init(); /* USER CODE BEGIN 2 */ - // tcp_echo_init(); // 服务器初始化 TCP_Client_Init(); // 客户端初始化 - // ad7124_setup(); // AD7124初始�?? - // dac161s997_init(); // DAC161S997初始�?? + // tcp_echo_init(); // 朝务器初始化 TCP_Client_Init(); // 客户端初始化 + // ad7124_setup(); // AD7124初始�??? + // dac161s997_init(); // DAC161S997初始�??? // HAL_GPIO_WritePin(DO_EN_GPIO_Port, DO_EN_Pin, GPIO_PIN_SET); // DO输出使能 HAL_UARTEx_ReceiveToIdle_DMA(&huart4, lcd_uart4.rx_data_temp, ARRAY_LEN(lcd_uart4.rx_data_temp)); HAL_UARTEx_ReceiveToIdle_DMA(&huart6, ble1_uart6.rx_data_temp, ARRAY_LEN(ble1_uart6.rx_data_temp)); HAL_UARTEx_ReceiveToIdle_DMA(&huart3, ble2_uart3.rx_data_temp, ARRAY_LEN(ble2_uart3.rx_data_temp)); - hart_ht1200m_reset(); // 复位HT1200M模块 - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); // 启动PWM输出,用于驱动HT1200M模块 + hart_ht1200m_reset(); // 夝佝HT1200M模块 + HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); // 坯动PWM输出,用于驱动HT1200M模块 /* USER CODE END 2 */ /* Call init function for freertos objects (in freertos.c) */ @@ -244,11 +244,7 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) HAL_IncTick(); } /* USER CODE BEGIN Callback 1 */ - if (htim == (&htim3)) - { - // User code to be executed on capture event for TIM3 - HAL_GPIO_TogglePin(LED2_Y_GPIO_Port, LED2_Y_Pin); - } + /* USER CODE END Callback 1 */ } diff --git a/TEST2.ioc b/TEST2.ioc index 2f974c5..27e5277 100644 --- a/TEST2.ioc +++ b/TEST2.ioc @@ -72,9 +72,10 @@ Dma.USART6_TX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphData ETH.IPParameters=MediaInterface ETH.MediaInterface=HAL_ETH_RMII_MODE FREERTOS.FootprintOK=true -FREERTOS.IPParameters=Tasks01,configMAX_TASK_NAME_LEN,configENABLE_FPU,FootprintOK -FREERTOS.Tasks01=defaultTask,0,512,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL;led_toggle,-3,128,start_led_toggle,Default,NULL,Dynamic,NULL,NULL;dac_task,-3,512,start_dac_task,Default,NULL,Dynamic,NULL,NULL +FREERTOS.IPParameters=Tasks01,configMAX_TASK_NAME_LEN,configENABLE_FPU,configMAX_PRIORITIES,FootprintOK +FREERTOS.Tasks01=lwip_task,2,512,start_tcp_task,Default,NULL,Dynamic,NULL,NULL;led_task,-2,128,start_led_toggle_task,Default,NULL,Dynamic,NULL,NULL;dac_task,-2,512,start_dac_task,Default,NULL,Dynamic,NULL,NULL;adc_task,-2,128,start_adc_task,Default,NULL,Dynamic,NULL,NULL FREERTOS.configENABLE_FPU=1 +FREERTOS.configMAX_PRIORITIES=32 FREERTOS.configMAX_TASK_NAME_LEN=24 File.Version=6 GPIO.groupedBy=Group By Peripherals diff --git a/User/driver/dac161s997.c b/User/driver/dac161s997.c index 6341bc3..645eed4 100644 --- a/User/driver/dac161s997.c +++ b/User/driver/dac161s997.c @@ -1,5 +1,5 @@ #include "dac161s997.h" -#include "user_spi.h" + /** * @brief 向DAC161S997芯片写入寄存器值 diff --git a/User/driver/dac161s997.h b/User/driver/dac161s997.h index ea58f8f..6947e5a 100644 --- a/User/driver/dac161s997.h +++ b/User/driver/dac161s997.h @@ -2,6 +2,7 @@ #define __DAC161S997_H__ #include "main.h" +#include "user_spi.h" /* Defines ********************************************************************/ /** * @defgroup DAC161S997_REGS @@ -19,7 +20,6 @@ #define DAC161S997_SPI SPI1 - void dac161s997_write_reg(uint8_t dac_num, uint8_t reg, uint16_t data); uint16_t dac161s997_read(uint8_t reg); extern void dac161s997_init(void);