Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
|
2dc7c95b7a |
|
@ -23,7 +23,8 @@
|
||||||
#define __MAIN_H
|
#define __MAIN_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C"
|
||||||
|
{
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
@ -36,10 +37,10 @@ extern "C" {
|
||||||
#include "tcpserverc.h"
|
#include "tcpserverc.h"
|
||||||
#include "leds.h"
|
#include "leds.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
/* USER CODE END Includes */
|
/* USER CODE END Includes */
|
||||||
|
|
||||||
/* Exported types ------------------------------------------------------------*/
|
/* Exported types ------------------------------------------------------------*/
|
||||||
/* USER CODE BEGIN ET */
|
/* USER CODE BEGIN ET */
|
||||||
extern uint8_t tcp_echo_flags_hart1;
|
extern uint8_t tcp_echo_flags_hart1;
|
||||||
extern uint8_t tcp_echo_flags_hart2;
|
extern uint8_t tcp_echo_flags_hart2;
|
||||||
extern uint8_t tcp_echo_flags_ble1;
|
extern uint8_t tcp_echo_flags_ble1;
|
||||||
|
@ -47,10 +48,10 @@ extern "C" {
|
||||||
extern uint8_t tcp_echo_flags_control;
|
extern uint8_t tcp_echo_flags_control;
|
||||||
extern uint8_t send_data_flag_cmd;
|
extern uint8_t send_data_flag_cmd;
|
||||||
|
|
||||||
extern uint8_t uart_forwarding_flags_hart1;
|
extern uint8_t uart_echo_flags_hart1;
|
||||||
extern uint8_t uart_forwarding_flags_hart2;
|
extern uint8_t uart_echo_flags_hart2;
|
||||||
extern uint8_t uart_forwarding_flags_ble1;
|
extern uint8_t uart_echo_flags_ble1;
|
||||||
extern uint8_t uart_forwarding_flags_ble2;
|
extern uint8_t uart_echo_flags_ble2;
|
||||||
#define ARRAY_LEN(arr) (sizeof(arr)) / (sizeof(arr[0]))
|
#define ARRAY_LEN(arr) (sizeof(arr)) / (sizeof(arr[0]))
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
@ -78,20 +79,20 @@ extern "C" {
|
||||||
|
|
||||||
#define LOCAL_PORT 5001
|
#define LOCAL_PORT 5001
|
||||||
|
|
||||||
/* USER CODE END ET */
|
/* USER CODE END ET */
|
||||||
|
|
||||||
/* Exported constants --------------------------------------------------------*/
|
/* Exported constants --------------------------------------------------------*/
|
||||||
/* USER CODE BEGIN EC */
|
/* USER CODE BEGIN EC */
|
||||||
|
|
||||||
/* USER CODE END EC */
|
/* USER CODE END EC */
|
||||||
|
|
||||||
/* Exported macro ------------------------------------------------------------*/
|
/* Exported macro ------------------------------------------------------------*/
|
||||||
/* USER CODE BEGIN EM */
|
/* USER CODE BEGIN EM */
|
||||||
|
|
||||||
/* USER CODE END EM */
|
/* USER CODE END EM */
|
||||||
|
|
||||||
/* Exported functions prototypes ---------------------------------------------*/
|
/* Exported functions prototypes ---------------------------------------------*/
|
||||||
void Error_Handler(void);
|
void Error_Handler(void);
|
||||||
|
|
||||||
/* USER CODE BEGIN EFP */
|
/* USER CODE BEGIN EFP */
|
||||||
#define ENCODE_TIM8 1
|
#define ENCODE_TIM8 1
|
||||||
|
@ -195,7 +196,7 @@ void Error_Handler(void);
|
||||||
/* USER CODE BEGIN Private defines */
|
/* USER CODE BEGIN Private defines */
|
||||||
#define TRUE 0
|
#define TRUE 0
|
||||||
#define FAIL -1
|
#define FAIL -1
|
||||||
/* USER CODE END Private defines */
|
/* USER CODE END Private defines */
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,7 +64,6 @@ osThreadId dac_taskHandle;
|
||||||
osThreadId adc_taskHandle;
|
osThreadId adc_taskHandle;
|
||||||
osThreadId gpio_di_do_taskHandle;
|
osThreadId gpio_di_do_taskHandle;
|
||||||
osThreadId ec11_taskHandle;
|
osThreadId ec11_taskHandle;
|
||||||
osThreadId uart_forwardingHandle;
|
|
||||||
|
|
||||||
/* Private function prototypes -----------------------------------------------*/
|
/* Private function prototypes -----------------------------------------------*/
|
||||||
/* USER CODE BEGIN FunctionPrototypes */
|
/* USER CODE BEGIN FunctionPrototypes */
|
||||||
|
@ -87,7 +86,6 @@ void start_dac_task(void const *argument);
|
||||||
void start_adc_task(void const *argument);
|
void start_adc_task(void const *argument);
|
||||||
void start_gpio_di_do_task(void const *argument);
|
void start_gpio_di_do_task(void const *argument);
|
||||||
void start_ec11_task(void const *argument);
|
void start_ec11_task(void const *argument);
|
||||||
void start_uart_forwarding(void const *argument);
|
|
||||||
|
|
||||||
extern void MX_LWIP_Init(void);
|
extern void MX_LWIP_Init(void);
|
||||||
void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */
|
void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */
|
||||||
|
@ -160,10 +158,6 @@ void MX_FREERTOS_Init(void)
|
||||||
osThreadDef(ec11_task, start_ec11_task, osPriorityNormal, 0, 512);
|
osThreadDef(ec11_task, start_ec11_task, osPriorityNormal, 0, 512);
|
||||||
ec11_taskHandle = osThreadCreate(osThread(ec11_task), NULL);
|
ec11_taskHandle = osThreadCreate(osThread(ec11_task), NULL);
|
||||||
|
|
||||||
/* definition and creation of uart_forwarding */
|
|
||||||
osThreadDef(uart_forwarding, start_uart_forwarding, osPriorityRealtime, 0, 512);
|
|
||||||
uart_forwardingHandle = osThreadCreate(osThread(uart_forwarding), NULL);
|
|
||||||
|
|
||||||
/* USER CODE BEGIN RTOS_THREADS */
|
/* USER CODE BEGIN RTOS_THREADS */
|
||||||
/* add threads, ... */
|
/* add threads, ... */
|
||||||
/* USER CODE END RTOS_THREADS */
|
/* USER CODE END RTOS_THREADS */
|
||||||
|
@ -222,7 +216,6 @@ void start_tcp_task(void const *argument)
|
||||||
tcp_abort(server_pcb_control); // 热插拔下线时调用
|
tcp_abort(server_pcb_control); // 热插拔下线时调用
|
||||||
tcp_echo_flags_control = 0;
|
tcp_echo_flags_control = 0;
|
||||||
}
|
}
|
||||||
tcp_echo_flags_ble1 = 2;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -348,28 +341,10 @@ void start_ec11_task(void const *argument)
|
||||||
{
|
{
|
||||||
linear_encoder_get_data();
|
linear_encoder_get_data();
|
||||||
uart_lcd_ec11_control_current();
|
uart_lcd_ec11_control_current();
|
||||||
vTaskDelay(100);
|
|
||||||
}
|
|
||||||
/* USER CODE END start_ec11_task */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Header_start_uart_forwarding */
|
|
||||||
/**
|
|
||||||
* @brief Function implementing the uart_forwarding thread.
|
|
||||||
* @param argument: Not used
|
|
||||||
* @retval None
|
|
||||||
*/
|
|
||||||
/* USER CODE END Header_start_uart_forwarding */
|
|
||||||
void start_uart_forwarding(void const *argument)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN start_uart_forwarding */
|
|
||||||
/* Infinite loop */
|
|
||||||
for (;;)
|
|
||||||
{
|
|
||||||
uart_forwarding_tcp();
|
uart_forwarding_tcp();
|
||||||
vTaskDelay(10);
|
vTaskDelay(10);
|
||||||
}
|
}
|
||||||
/* USER CODE END start_uart_forwarding */
|
/* USER CODE END start_ec11_task */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Private application code --------------------------------------------------*/
|
/* Private application code --------------------------------------------------*/
|
||||||
|
|
|
@ -82,10 +82,15 @@ uint8_t tcp_echo_flags_ble2 = 0;
|
||||||
uint8_t tcp_echo_flags_control = 0;
|
uint8_t tcp_echo_flags_control = 0;
|
||||||
uint8_t send_data_flag_cmd = 0;
|
uint8_t send_data_flag_cmd = 0;
|
||||||
|
|
||||||
uint8_t uart_forwarding_flags_hart1 = 0;
|
uint8_t uart_echo_flags_hart1 = 0;
|
||||||
uint8_t uart_forwarding_flags_hart2 = 0;
|
uint8_t uart_echo_flags_hart2 = 0;
|
||||||
uint8_t uart_forwarding_flags_ble1 = 0;
|
uint8_t uart_echo_flags_ble1 = 0;
|
||||||
uint8_t uart_forwarding_flags_ble2 = 0;
|
uint8_t uart_echo_flags_ble2 = 0;
|
||||||
|
// TEST
|
||||||
|
// uint8_t data_flag = 0;
|
||||||
|
// uint32_t receive_times1 = 0;
|
||||||
|
// uint32_t receive_times2 = 0;
|
||||||
|
// ENDTEST
|
||||||
|
|
||||||
extern struct netif gnetif;
|
extern struct netif gnetif;
|
||||||
extern ip4_addr_t ipaddr;
|
extern ip4_addr_t ipaddr;
|
||||||
|
@ -270,7 +275,7 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
|
||||||
memcpy(ble1_uart6.rx_data, ble1_uart6.rx_data_temp, Size);
|
memcpy(ble1_uart6.rx_data, ble1_uart6.rx_data_temp, Size);
|
||||||
if (tcp_echo_flags_ble1 == 1)
|
if (tcp_echo_flags_ble1 == 1)
|
||||||
{
|
{
|
||||||
uart_forwarding_flags_ble1 = 1;
|
uart_echo_flags_ble1 = 1;
|
||||||
// user_send_data_ble1(ble1_uart6.rx_data, Size);
|
// user_send_data_ble1(ble1_uart6.rx_data, Size);
|
||||||
}
|
}
|
||||||
HAL_UARTEx_ReceiveToIdle_DMA(&huart6, ble1_uart6.rx_data_temp, ARRAY_LEN(ble1_uart6.rx_data_temp));
|
HAL_UARTEx_ReceiveToIdle_DMA(&huart6, ble1_uart6.rx_data_temp, ARRAY_LEN(ble1_uart6.rx_data_temp));
|
||||||
|
@ -284,7 +289,7 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
|
||||||
memcpy(ble2_uart3.rx_data, ble2_uart3.rx_data_temp, Size);
|
memcpy(ble2_uart3.rx_data, ble2_uart3.rx_data_temp, Size);
|
||||||
if (tcp_echo_flags_ble2 == 1)
|
if (tcp_echo_flags_ble2 == 1)
|
||||||
{
|
{
|
||||||
uart_forwarding_flags_ble2 = 1;
|
uart_echo_flags_ble2 = 1;
|
||||||
// user_send_data_ble2(ble2_uart3.rx_data, Size);
|
// user_send_data_ble2(ble2_uart3.rx_data, Size);
|
||||||
}
|
}
|
||||||
HAL_UARTEx_ReceiveToIdle_DMA(&huart3, ble2_uart3.rx_data_temp, ARRAY_LEN(ble2_uart3.rx_data_temp));
|
HAL_UARTEx_ReceiveToIdle_DMA(&huart3, ble2_uart3.rx_data_temp, ARRAY_LEN(ble2_uart3.rx_data_temp));
|
||||||
|
@ -297,7 +302,7 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
|
||||||
memcpy(hart1_uart5.rx_data, hart1_uart5.rx_data_temp, Size);
|
memcpy(hart1_uart5.rx_data, hart1_uart5.rx_data_temp, Size);
|
||||||
if (tcp_echo_flags_hart1 == 1)
|
if (tcp_echo_flags_hart1 == 1)
|
||||||
{
|
{
|
||||||
uart_forwarding_flags_hart1 = 1;
|
uart_echo_flags_hart1 = 1;
|
||||||
// user_send_data_hart1(hart1_uart5.rx_data, Size);
|
// user_send_data_hart1(hart1_uart5.rx_data, Size);
|
||||||
}
|
}
|
||||||
HAL_UARTEx_ReceiveToIdle_DMA(&huart5, hart1_uart5.rx_data_temp, ARRAY_LEN(hart1_uart5.rx_data_temp));
|
HAL_UARTEx_ReceiveToIdle_DMA(&huart5, hart1_uart5.rx_data_temp, ARRAY_LEN(hart1_uart5.rx_data_temp));
|
||||||
|
@ -311,7 +316,7 @@ void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
|
||||||
memcpy(hart2_uart2.rx_data, hart2_uart2.rx_data_temp, Size);
|
memcpy(hart2_uart2.rx_data, hart2_uart2.rx_data_temp, Size);
|
||||||
if (tcp_echo_flags_hart2 == 1)
|
if (tcp_echo_flags_hart2 == 1)
|
||||||
{
|
{
|
||||||
uart_forwarding_flags_hart2 = 1;
|
uart_echo_flags_hart2 = 1;
|
||||||
// user_send_data_hart2(hart2_uart2.rx_data, Size);
|
// user_send_data_hart2(hart2_uart2.rx_data, Size);
|
||||||
}
|
}
|
||||||
HAL_UARTEx_ReceiveToIdle_DMA(&huart2, hart2_uart2.rx_data_temp, ARRAY_LEN(hart2_uart2.rx_data_temp));
|
HAL_UARTEx_ReceiveToIdle_DMA(&huart2, hart2_uart2.rx_data_temp, ARRAY_LEN(hart2_uart2.rx_data_temp));
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
#include "lwip.h"
|
#include "lwip.h"
|
||||||
#include "lwip/init.h"
|
#include "lwip/init.h"
|
||||||
#include "lwip/netif.h"
|
#include "lwip/netif.h"
|
||||||
#if defined ( __CC_ARM ) /* MDK ARM Compiler */
|
#if defined(__CC_ARM) /* MDK ARM Compiler */
|
||||||
#include "lwip/sio.h"
|
#include "lwip/sio.h"
|
||||||
#endif /* MDK ARM Compiler */
|
#endif /* MDK ARM Compiler */
|
||||||
#include "ethernetif.h"
|
#include "ethernetif.h"
|
||||||
|
@ -71,7 +71,7 @@ void MX_LWIP_Init(void)
|
||||||
GATEWAY_ADDRESS[2] = 1;
|
GATEWAY_ADDRESS[2] = 1;
|
||||||
GATEWAY_ADDRESS[3] = 29;
|
GATEWAY_ADDRESS[3] = 29;
|
||||||
|
|
||||||
/* USER CODE BEGIN IP_ADDRESSES */
|
/* USER CODE BEGIN IP_ADDRESSES */
|
||||||
uint8_t ip_address_flash[4] = {0,0,0,0};
|
uint8_t ip_address_flash[4] = {0,0,0,0};
|
||||||
flash_read_data(FLASH_USER_START_ADDR, ip_address_flash, 4);
|
flash_read_data(FLASH_USER_START_ADDR, ip_address_flash, 4);
|
||||||
if (ip_address_flash[0] == 192)
|
if (ip_address_flash[0] == 192)
|
||||||
|
@ -81,14 +81,14 @@ void MX_LWIP_Init(void)
|
||||||
IP_ADDRESS[2] = ip_address_flash[2];
|
IP_ADDRESS[2] = ip_address_flash[2];
|
||||||
IP_ADDRESS[3] = ip_address_flash[3];
|
IP_ADDRESS[3] = ip_address_flash[3];
|
||||||
}
|
}
|
||||||
/* USER CODE END IP_ADDRESSES */
|
/* USER CODE END IP_ADDRESSES */
|
||||||
|
|
||||||
/* Initilialize the LwIP stack with RTOS */
|
/* Initilialize the LwIP stack with RTOS */
|
||||||
tcpip_init( NULL, NULL );
|
tcpip_init(NULL, NULL);
|
||||||
|
|
||||||
/* IP addresses initialization without DHCP (IPv4) */
|
/* IP addresses initialization without DHCP (IPv4) */
|
||||||
IP4_ADDR(&ipaddr, IP_ADDRESS[0], IP_ADDRESS[1], IP_ADDRESS[2], IP_ADDRESS[3]);
|
IP4_ADDR(&ipaddr, IP_ADDRESS[0], IP_ADDRESS[1], IP_ADDRESS[2], IP_ADDRESS[3]);
|
||||||
IP4_ADDR(&netmask, NETMASK_ADDRESS[0], NETMASK_ADDRESS[1] , NETMASK_ADDRESS[2], NETMASK_ADDRESS[3]);
|
IP4_ADDR(&netmask, NETMASK_ADDRESS[0], NETMASK_ADDRESS[1], NETMASK_ADDRESS[2], NETMASK_ADDRESS[3]);
|
||||||
IP4_ADDR(&gw, GATEWAY_ADDRESS[0], GATEWAY_ADDRESS[1], GATEWAY_ADDRESS[2], GATEWAY_ADDRESS[3]);
|
IP4_ADDR(&gw, GATEWAY_ADDRESS[0], GATEWAY_ADDRESS[1], GATEWAY_ADDRESS[2], GATEWAY_ADDRESS[3]);
|
||||||
|
|
||||||
/* add the network interface (IPv4/IPv6) with RTOS */
|
/* add the network interface (IPv4/IPv6) with RTOS */
|
||||||
|
@ -112,14 +112,14 @@ void MX_LWIP_Init(void)
|
||||||
netif_set_link_callback(&gnetif, ethernet_link_status_updated);
|
netif_set_link_callback(&gnetif, ethernet_link_status_updated);
|
||||||
|
|
||||||
/* Create the Ethernet link handler thread */
|
/* Create the Ethernet link handler thread */
|
||||||
/* USER CODE BEGIN H7_OS_THREAD_DEF_CREATE_CMSIS_RTOS_V1 */
|
/* USER CODE BEGIN H7_OS_THREAD_DEF_CREATE_CMSIS_RTOS_V1 */
|
||||||
osThreadDef(EthLink, ethernet_link_thread, osPriorityBelowNormal, 0, configMINIMAL_STACK_SIZE * 2);
|
osThreadDef(EthLink, ethernet_link_thread, osPriorityBelowNormal, 0, configMINIMAL_STACK_SIZE * 2);
|
||||||
osThreadCreate(osThread(EthLink), &gnetif);
|
osThreadCreate(osThread(EthLink), &gnetif);
|
||||||
/* USER CODE END H7_OS_THREAD_DEF_CREATE_CMSIS_RTOS_V1 */
|
/* USER CODE END H7_OS_THREAD_DEF_CREATE_CMSIS_RTOS_V1 */
|
||||||
|
|
||||||
/* USER CODE BEGIN 3 */
|
/* USER CODE BEGIN 3 */
|
||||||
|
|
||||||
/* USER CODE END 3 */
|
/* USER CODE END 3 */
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_OBSOLETE_USER_CODE_SECTION_4
|
#ifdef USE_OBSOLETE_USER_CODE_SECTION_4
|
||||||
|
@ -138,17 +138,17 @@ static void ethernet_link_status_updated(struct netif *netif)
|
||||||
{
|
{
|
||||||
if (netif_is_up(netif))
|
if (netif_is_up(netif))
|
||||||
{
|
{
|
||||||
/* USER CODE BEGIN 5 */
|
/* USER CODE BEGIN 5 */
|
||||||
/* USER CODE END 5 */
|
/* USER CODE END 5 */
|
||||||
}
|
}
|
||||||
else /* netif is down */
|
else /* netif is down */
|
||||||
{
|
{
|
||||||
/* USER CODE BEGIN 6 */
|
/* USER CODE BEGIN 6 */
|
||||||
/* USER CODE END 6 */
|
/* USER CODE END 6 */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined ( __CC_ARM ) /* MDK ARM Compiler */
|
#if defined(__CC_ARM) /* MDK ARM Compiler */
|
||||||
/**
|
/**
|
||||||
* Opens a serial device for communication.
|
* Opens a serial device for communication.
|
||||||
*
|
*
|
||||||
|
@ -159,9 +159,9 @@ sio_fd_t sio_open(u8_t devnum)
|
||||||
{
|
{
|
||||||
sio_fd_t sd;
|
sio_fd_t sd;
|
||||||
|
|
||||||
/* USER CODE BEGIN 7 */
|
/* USER CODE BEGIN 7 */
|
||||||
sd = 0; // dummy code
|
sd = 0; // dummy code
|
||||||
/* USER CODE END 7 */
|
/* USER CODE END 7 */
|
||||||
|
|
||||||
return sd;
|
return sd;
|
||||||
}
|
}
|
||||||
|
@ -176,8 +176,8 @@ sio_fd_t sio_open(u8_t devnum)
|
||||||
*/
|
*/
|
||||||
void sio_send(u8_t c, sio_fd_t fd)
|
void sio_send(u8_t c, sio_fd_t fd)
|
||||||
{
|
{
|
||||||
/* USER CODE BEGIN 8 */
|
/* USER CODE BEGIN 8 */
|
||||||
/* USER CODE END 8 */
|
/* USER CODE END 8 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -195,9 +195,9 @@ u32_t sio_read(sio_fd_t fd, u8_t *data, u32_t len)
|
||||||
{
|
{
|
||||||
u32_t recved_bytes;
|
u32_t recved_bytes;
|
||||||
|
|
||||||
/* USER CODE BEGIN 9 */
|
/* USER CODE BEGIN 9 */
|
||||||
recved_bytes = 0; // dummy code
|
recved_bytes = 0; // dummy code
|
||||||
/* USER CODE END 9 */
|
/* USER CODE END 9 */
|
||||||
return recved_bytes;
|
return recved_bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,10 +214,9 @@ u32_t sio_tryread(sio_fd_t fd, u8_t *data, u32_t len)
|
||||||
{
|
{
|
||||||
u32_t recved_bytes;
|
u32_t recved_bytes;
|
||||||
|
|
||||||
/* USER CODE BEGIN 10 */
|
/* USER CODE BEGIN 10 */
|
||||||
recved_bytes = 0; // dummy code
|
recved_bytes = 0; // dummy code
|
||||||
/* USER CODE END 10 */
|
/* USER CODE END 10 */
|
||||||
return recved_bytes;
|
return recved_bytes;
|
||||||
}
|
}
|
||||||
#endif /* MDK ARM Compiler */
|
#endif /* MDK ARM Compiler */
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
|
|
||||||
/* Private define ------------------------------------------------------------*/
|
/* Private define ------------------------------------------------------------*/
|
||||||
/* The time to block waiting for input. */
|
/* The time to block waiting for input. */
|
||||||
#define TIME_WAITING_FOR_INPUT ( portMAX_DELAY )
|
#define TIME_WAITING_FOR_INPUT (portMAX_DELAY)
|
||||||
/* USER CODE BEGIN OS_THREAD_STACK_SIZE_WITH_RTOS */
|
/* USER CODE BEGIN OS_THREAD_STACK_SIZE_WITH_RTOS */
|
||||||
/* Stack size of the interface thread */
|
/* Stack size of the interface thread */
|
||||||
#define INTERFACE_THREAD_STACK_SIZE (350)
|
#define INTERFACE_THREAD_STACK_SIZE (350)
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
#define IFNAME1 't'
|
#define IFNAME1 't'
|
||||||
|
|
||||||
/* ETH Setting */
|
/* ETH Setting */
|
||||||
#define ETH_DMA_TRANSMIT_TIMEOUT ( 20U )
|
#define ETH_DMA_TRANSMIT_TIMEOUT (20U)
|
||||||
#define ETH_TX_BUFFER_MAX ((ETH_TX_DESC_CNT) * 2U)
|
#define ETH_TX_BUFFER_MAX ((ETH_TX_DESC_CNT) * 2U)
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
/* USER CODE BEGIN 1 */
|
||||||
|
@ -113,9 +113,9 @@ ETH_HandleTypeDef heth;
|
||||||
ETH_TxPacketConfig TxConfig;
|
ETH_TxPacketConfig TxConfig;
|
||||||
|
|
||||||
/* Private function prototypes -----------------------------------------------*/
|
/* Private function prototypes -----------------------------------------------*/
|
||||||
static void ethernetif_input(void const * argument);
|
static void ethernetif_input(void const *argument);
|
||||||
int32_t ETH_PHY_IO_Init(void);
|
int32_t ETH_PHY_IO_Init(void);
|
||||||
int32_t ETH_PHY_IO_DeInit (void);
|
int32_t ETH_PHY_IO_DeInit(void);
|
||||||
int32_t ETH_PHY_IO_ReadReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t *pRegVal);
|
int32_t ETH_PHY_IO_ReadReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t *pRegVal);
|
||||||
int32_t ETH_PHY_IO_WriteReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t RegVal);
|
int32_t ETH_PHY_IO_WriteReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t RegVal);
|
||||||
int32_t ETH_PHY_IO_GetTick(void);
|
int32_t ETH_PHY_IO_GetTick(void);
|
||||||
|
@ -159,7 +159,7 @@ void HAL_ETH_TxCpltCallback(ETH_HandleTypeDef *handlerEth)
|
||||||
*/
|
*/
|
||||||
void HAL_ETH_ErrorCallback(ETH_HandleTypeDef *handlerEth)
|
void HAL_ETH_ErrorCallback(ETH_HandleTypeDef *handlerEth)
|
||||||
{
|
{
|
||||||
if((HAL_ETH_GetDMAError(handlerEth) & ETH_DMASR_RBUS) == ETH_DMASR_RBUS)
|
if ((HAL_ETH_GetDMAError(handlerEth) & ETH_DMASR_RBUS) == ETH_DMASR_RBUS)
|
||||||
{
|
{
|
||||||
osSemaphoreRelease(RxPktSemaphore);
|
osSemaphoreRelease(RxPktSemaphore);
|
||||||
}
|
}
|
||||||
|
@ -187,7 +187,7 @@ static void low_level_init(struct netif *netif)
|
||||||
ETH_MACConfigTypeDef MACConf = {0};
|
ETH_MACConfigTypeDef MACConf = {0};
|
||||||
/* Start ETH HAL Init */
|
/* Start ETH HAL Init */
|
||||||
|
|
||||||
uint8_t MACAddr[6] ;
|
uint8_t MACAddr[6];
|
||||||
heth.Instance = ETH;
|
heth.Instance = ETH;
|
||||||
MACAddr[0] = 0x00;
|
MACAddr[0] = 0x00;
|
||||||
MACAddr[1] = 0x80;
|
MACAddr[1] = 0x80;
|
||||||
|
@ -210,7 +210,7 @@ static void low_level_init(struct netif *netif)
|
||||||
|
|
||||||
hal_eth_init_status = HAL_ETH_Init(&heth);
|
hal_eth_init_status = HAL_ETH_Init(&heth);
|
||||||
|
|
||||||
memset(&TxConfig, 0 , sizeof(ETH_TxPacketConfig));
|
memset(&TxConfig, 0, sizeof(ETH_TxPacketConfig));
|
||||||
TxConfig.Attributes = ETH_TX_PACKETS_FEATURES_CSUM | ETH_TX_PACKETS_FEATURES_CRCPAD;
|
TxConfig.Attributes = ETH_TX_PACKETS_FEATURES_CSUM | ETH_TX_PACKETS_FEATURES_CRCPAD;
|
||||||
TxConfig.ChecksumCtrl = ETH_CHECKSUM_IPHDR_PAYLOAD_INSERT_PHDR_CALC;
|
TxConfig.ChecksumCtrl = ETH_CHECKSUM_IPHDR_PAYLOAD_INSERT_PHDR_CALC;
|
||||||
TxConfig.CRCPadCtrl = ETH_CRC_PAD_INSERT;
|
TxConfig.CRCPadCtrl = ETH_CRC_PAD_INSERT;
|
||||||
|
@ -236,13 +236,13 @@ static void low_level_init(struct netif *netif)
|
||||||
/* maximum transfer unit */
|
/* maximum transfer unit */
|
||||||
netif->mtu = ETH_MAX_PAYLOAD;
|
netif->mtu = ETH_MAX_PAYLOAD;
|
||||||
|
|
||||||
/* Accept broadcast address and ARP traffic */
|
/* Accept broadcast address and ARP traffic */
|
||||||
/* don't set NETIF_FLAG_ETHARP if this device is not an ethernet one */
|
/* don't set NETIF_FLAG_ETHARP if this device is not an ethernet one */
|
||||||
#if LWIP_ARP
|
#if LWIP_ARP
|
||||||
netif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;
|
netif->flags |= NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;
|
||||||
#else
|
#else
|
||||||
netif->flags |= NETIF_FLAG_BROADCAST;
|
netif->flags |= NETIF_FLAG_BROADCAST;
|
||||||
#endif /* LWIP_ARP */
|
#endif /* LWIP_ARP */
|
||||||
|
|
||||||
/* create a binary semaphore used for informing ethernetif of frame reception */
|
/* create a binary semaphore used for informing ethernetif of frame reception */
|
||||||
RxPktSemaphore = xSemaphoreCreateBinary();
|
RxPktSemaphore = xSemaphoreCreateBinary();
|
||||||
|
@ -251,14 +251,14 @@ static void low_level_init(struct netif *netif)
|
||||||
TxPktSemaphore = xSemaphoreCreateBinary();
|
TxPktSemaphore = xSemaphoreCreateBinary();
|
||||||
|
|
||||||
/* create the task that handles the ETH_MAC */
|
/* create the task that handles the ETH_MAC */
|
||||||
/* USER CODE BEGIN OS_THREAD_DEF_CREATE_CMSIS_RTOS_V1 */
|
/* USER CODE BEGIN OS_THREAD_DEF_CREATE_CMSIS_RTOS_V1 */
|
||||||
osThreadDef(EthIf, ethernetif_input, osPriorityRealtime, 0, INTERFACE_THREAD_STACK_SIZE);
|
osThreadDef(EthIf, ethernetif_input, osPriorityRealtime, 0, INTERFACE_THREAD_STACK_SIZE);
|
||||||
osThreadCreate(osThread(EthIf), netif);
|
osThreadCreate(osThread(EthIf), netif);
|
||||||
/* USER CODE END OS_THREAD_DEF_CREATE_CMSIS_RTOS_V1 */
|
/* USER CODE END OS_THREAD_DEF_CREATE_CMSIS_RTOS_V1 */
|
||||||
|
|
||||||
/* USER CODE BEGIN PHY_PRE_CONFIG */
|
/* USER CODE BEGIN PHY_PRE_CONFIG */
|
||||||
|
|
||||||
/* USER CODE END PHY_PRE_CONFIG */
|
/* USER CODE END PHY_PRE_CONFIG */
|
||||||
/* Set PHY IO functions */
|
/* Set PHY IO functions */
|
||||||
LAN8742_RegisterBusIO(&LAN8742, &LAN8742_IOCtx);
|
LAN8742_RegisterBusIO(&LAN8742, &LAN8742_IOCtx);
|
||||||
|
|
||||||
|
@ -270,7 +270,7 @@ static void low_level_init(struct netif *netif)
|
||||||
PHYLinkState = LAN8742_GetLinkState(&LAN8742);
|
PHYLinkState = LAN8742_GetLinkState(&LAN8742);
|
||||||
|
|
||||||
/* Get link state */
|
/* Get link state */
|
||||||
if(PHYLinkState <= LAN8742_STATUS_LINK_DOWN)
|
if (PHYLinkState <= LAN8742_STATUS_LINK_DOWN)
|
||||||
{
|
{
|
||||||
netif_set_link_down(netif);
|
netif_set_link_down(netif);
|
||||||
netif_set_down(netif);
|
netif_set_down(netif);
|
||||||
|
@ -311,11 +311,10 @@ static void low_level_init(struct netif *netif)
|
||||||
netif_set_up(netif);
|
netif_set_up(netif);
|
||||||
netif_set_link_up(netif);
|
netif_set_link_up(netif);
|
||||||
|
|
||||||
/* USER CODE BEGIN PHY_POST_CONFIG */
|
/* USER CODE BEGIN PHY_POST_CONFIG */
|
||||||
|
|
||||||
/* USER CODE END PHY_POST_CONFIG */
|
/* USER CODE END PHY_POST_CONFIG */
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -323,9 +322,9 @@ static void low_level_init(struct netif *netif)
|
||||||
}
|
}
|
||||||
#endif /* LWIP_ARP || LWIP_ETHERNET */
|
#endif /* LWIP_ARP || LWIP_ETHERNET */
|
||||||
|
|
||||||
/* USER CODE BEGIN LOW_LEVEL_INIT */
|
/* USER CODE BEGIN LOW_LEVEL_INIT */
|
||||||
|
|
||||||
/* USER CODE END LOW_LEVEL_INIT */
|
/* USER CODE END LOW_LEVEL_INIT */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -351,22 +350,22 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p)
|
||||||
err_t errval = ERR_OK;
|
err_t errval = ERR_OK;
|
||||||
ETH_BufferTypeDef Txbuffer[ETH_TX_DESC_CNT] = {0};
|
ETH_BufferTypeDef Txbuffer[ETH_TX_DESC_CNT] = {0};
|
||||||
|
|
||||||
memset(Txbuffer, 0 , ETH_TX_DESC_CNT*sizeof(ETH_BufferTypeDef));
|
memset(Txbuffer, 0, ETH_TX_DESC_CNT * sizeof(ETH_BufferTypeDef));
|
||||||
|
|
||||||
for(q = p; q != NULL; q = q->next)
|
for (q = p; q != NULL; q = q->next)
|
||||||
{
|
{
|
||||||
if(i >= ETH_TX_DESC_CNT)
|
if (i >= ETH_TX_DESC_CNT)
|
||||||
return ERR_IF;
|
return ERR_IF;
|
||||||
|
|
||||||
Txbuffer[i].buffer = q->payload;
|
Txbuffer[i].buffer = q->payload;
|
||||||
Txbuffer[i].len = q->len;
|
Txbuffer[i].len = q->len;
|
||||||
|
|
||||||
if(i>0)
|
if (i > 0)
|
||||||
{
|
{
|
||||||
Txbuffer[i-1].next = &Txbuffer[i];
|
Txbuffer[i - 1].next = &Txbuffer[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
if(q->next == NULL)
|
if (q->next == NULL)
|
||||||
{
|
{
|
||||||
Txbuffer[i].next = NULL;
|
Txbuffer[i].next = NULL;
|
||||||
}
|
}
|
||||||
|
@ -381,7 +380,7 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p)
|
||||||
pbuf_ref(p);
|
pbuf_ref(p);
|
||||||
|
|
||||||
HAL_ETH_Transmit_IT(&heth, &TxConfig);
|
HAL_ETH_Transmit_IT(&heth, &TxConfig);
|
||||||
while(osSemaphoreWait(TxPktSemaphore, TIME_WAITING_FOR_INPUT)!=osOK)
|
while (osSemaphoreWait(TxPktSemaphore, TIME_WAITING_FOR_INPUT) != osOK)
|
||||||
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -399,11 +398,11 @@ static err_t low_level_output(struct netif *netif, struct pbuf *p)
|
||||||
* @return a pbuf filled with the received packet (including MAC header)
|
* @return a pbuf filled with the received packet (including MAC header)
|
||||||
* NULL on memory error
|
* NULL on memory error
|
||||||
*/
|
*/
|
||||||
static struct pbuf * low_level_input(struct netif *netif)
|
static struct pbuf *low_level_input(struct netif *netif)
|
||||||
{
|
{
|
||||||
struct pbuf *p = NULL;
|
struct pbuf *p = NULL;
|
||||||
|
|
||||||
if(RxAllocStatus == RX_ALLOC_OK)
|
if (RxAllocStatus == RX_ALLOC_OK)
|
||||||
{
|
{
|
||||||
HAL_ETH_ReadData(&heth, (void **)&p);
|
HAL_ETH_ReadData(&heth, (void **)&p);
|
||||||
}
|
}
|
||||||
|
@ -420,26 +419,26 @@ static struct pbuf * low_level_input(struct netif *netif)
|
||||||
*
|
*
|
||||||
* @param netif the lwip network interface structure for this ethernetif
|
* @param netif the lwip network interface structure for this ethernetif
|
||||||
*/
|
*/
|
||||||
static void ethernetif_input(void const * argument)
|
static void ethernetif_input(void const *argument)
|
||||||
{
|
{
|
||||||
struct pbuf *p = NULL;
|
struct pbuf *p = NULL;
|
||||||
struct netif *netif = (struct netif *) argument;
|
struct netif *netif = (struct netif *)argument;
|
||||||
|
|
||||||
for( ;; )
|
for (;;)
|
||||||
{
|
{
|
||||||
if (osSemaphoreWait(RxPktSemaphore, TIME_WAITING_FOR_INPUT) == osOK)
|
if (osSemaphoreWait(RxPktSemaphore, TIME_WAITING_FOR_INPUT) == osOK)
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
p = low_level_input( netif );
|
p = low_level_input(netif);
|
||||||
if (p != NULL)
|
if (p != NULL)
|
||||||
{
|
{
|
||||||
if (netif->input( p, netif) != ERR_OK )
|
if (netif->input(p, netif) != ERR_OK)
|
||||||
{
|
{
|
||||||
pbuf_free(p);
|
pbuf_free(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} while(p!=NULL);
|
} while (p != NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -456,12 +455,11 @@ static err_t low_level_output_arp_off(struct netif *netif, struct pbuf *q, const
|
||||||
err_t errval;
|
err_t errval;
|
||||||
errval = ERR_OK;
|
errval = ERR_OK;
|
||||||
|
|
||||||
/* USER CODE BEGIN 5 */
|
/* USER CODE BEGIN 5 */
|
||||||
|
|
||||||
/* USER CODE END 5 */
|
/* USER CODE END 5 */
|
||||||
|
|
||||||
return errval;
|
return errval;
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif /* LWIP_ARP */
|
#endif /* LWIP_ARP */
|
||||||
|
|
||||||
|
@ -530,7 +528,7 @@ err_t ethernetif_init(struct netif *netif)
|
||||||
*/
|
*/
|
||||||
void pbuf_free_custom(struct pbuf *p)
|
void pbuf_free_custom(struct pbuf *p)
|
||||||
{
|
{
|
||||||
struct pbuf_custom* custom_pbuf = (struct pbuf_custom*)p;
|
struct pbuf_custom *custom_pbuf = (struct pbuf_custom *)p;
|
||||||
LWIP_MEMPOOL_FREE(RX_POOL, custom_pbuf);
|
LWIP_MEMPOOL_FREE(RX_POOL, custom_pbuf);
|
||||||
|
|
||||||
/* If the Rx Buffer Pool was exhausted, signal the ethernetif_input task to
|
/* If the Rx Buffer Pool was exhausted, signal the ethernetif_input task to
|
||||||
|
@ -564,10 +562,10 @@ u32_t sys_now(void)
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void HAL_ETH_MspInit(ETH_HandleTypeDef* ethHandle)
|
void HAL_ETH_MspInit(ETH_HandleTypeDef *ethHandle)
|
||||||
{
|
{
|
||||||
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||||||
if(ethHandle->Instance==ETH)
|
if (ethHandle->Instance == ETH)
|
||||||
{
|
{
|
||||||
/* USER CODE BEGIN ETH_MspInit 0 */
|
/* USER CODE BEGIN ETH_MspInit 0 */
|
||||||
|
|
||||||
|
@ -589,21 +587,21 @@ void HAL_ETH_MspInit(ETH_HandleTypeDef* ethHandle)
|
||||||
PB12 ------> ETH_TXD0
|
PB12 ------> ETH_TXD0
|
||||||
PB13 ------> ETH_TXD1
|
PB13 ------> ETH_TXD1
|
||||||
*/
|
*/
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5;
|
GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||||
GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
|
GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
|
||||||
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
||||||
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7;
|
GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_7;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||||
GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
|
GPIO_InitStruct.Alternate = GPIO_AF11_ETH;
|
||||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13;
|
GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||||
|
@ -619,9 +617,9 @@ void HAL_ETH_MspInit(ETH_HandleTypeDef* ethHandle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HAL_ETH_MspDeInit(ETH_HandleTypeDef* ethHandle)
|
void HAL_ETH_MspDeInit(ETH_HandleTypeDef *ethHandle)
|
||||||
{
|
{
|
||||||
if(ethHandle->Instance==ETH)
|
if (ethHandle->Instance == ETH)
|
||||||
{
|
{
|
||||||
/* USER CODE BEGIN ETH_MspDeInit 0 */
|
/* USER CODE BEGIN ETH_MspDeInit 0 */
|
||||||
|
|
||||||
|
@ -640,11 +638,11 @@ void HAL_ETH_MspDeInit(ETH_HandleTypeDef* ethHandle)
|
||||||
PB12 ------> ETH_TXD0
|
PB12 ------> ETH_TXD0
|
||||||
PB13 ------> ETH_TXD1
|
PB13 ------> ETH_TXD1
|
||||||
*/
|
*/
|
||||||
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5);
|
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5);
|
||||||
|
|
||||||
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7);
|
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_7);
|
||||||
|
|
||||||
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13);
|
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13);
|
||||||
|
|
||||||
/* Peripheral interrupt Deinit*/
|
/* Peripheral interrupt Deinit*/
|
||||||
HAL_NVIC_DisableIRQ(ETH_IRQn);
|
HAL_NVIC_DisableIRQ(ETH_IRQn);
|
||||||
|
@ -680,7 +678,7 @@ int32_t ETH_PHY_IO_Init(void)
|
||||||
* @param None
|
* @param None
|
||||||
* @retval 0 if OK, -1 if ERROR
|
* @retval 0 if OK, -1 if ERROR
|
||||||
*/
|
*/
|
||||||
int32_t ETH_PHY_IO_DeInit (void)
|
int32_t ETH_PHY_IO_DeInit(void)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -694,7 +692,7 @@ int32_t ETH_PHY_IO_DeInit (void)
|
||||||
*/
|
*/
|
||||||
int32_t ETH_PHY_IO_ReadReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t *pRegVal)
|
int32_t ETH_PHY_IO_ReadReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t *pRegVal)
|
||||||
{
|
{
|
||||||
if(HAL_ETH_ReadPHYRegister(&heth, DevAddr, RegAddr, pRegVal) != HAL_OK)
|
if (HAL_ETH_ReadPHYRegister(&heth, DevAddr, RegAddr, pRegVal) != HAL_OK)
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -711,7 +709,7 @@ int32_t ETH_PHY_IO_ReadReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t *pRegVal
|
||||||
*/
|
*/
|
||||||
int32_t ETH_PHY_IO_WriteReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t RegVal)
|
int32_t ETH_PHY_IO_WriteReg(uint32_t DevAddr, uint32_t RegAddr, uint32_t RegVal)
|
||||||
{
|
{
|
||||||
if(HAL_ETH_WritePHYRegister(&heth, DevAddr, RegAddr, RegVal) != HAL_OK)
|
if (HAL_ETH_WritePHYRegister(&heth, DevAddr, RegAddr, RegVal) != HAL_OK)
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -733,28 +731,28 @@ int32_t ETH_PHY_IO_GetTick(void)
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void ethernet_link_thread(void const * argument)
|
void ethernet_link_thread(void const *argument)
|
||||||
{
|
{
|
||||||
ETH_MACConfigTypeDef MACConf = {0};
|
ETH_MACConfigTypeDef MACConf = {0};
|
||||||
int32_t PHYLinkState = 0;
|
int32_t PHYLinkState = 0;
|
||||||
uint32_t linkchanged = 0U, speed = 0U, duplex = 0U;
|
uint32_t linkchanged = 0U, speed = 0U, duplex = 0U;
|
||||||
|
|
||||||
struct netif *netif = (struct netif *) argument;
|
struct netif *netif = (struct netif *)argument;
|
||||||
/* USER CODE BEGIN ETH link init */
|
/* USER CODE BEGIN ETH link init */
|
||||||
|
|
||||||
/* USER CODE END ETH link init */
|
/* USER CODE END ETH link init */
|
||||||
|
|
||||||
for(;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
PHYLinkState = LAN8742_GetLinkState(&LAN8742);
|
PHYLinkState = LAN8742_GetLinkState(&LAN8742);
|
||||||
|
|
||||||
if(netif_is_link_up(netif) && (PHYLinkState <= LAN8742_STATUS_LINK_DOWN))
|
if (netif_is_link_up(netif) && (PHYLinkState <= LAN8742_STATUS_LINK_DOWN))
|
||||||
{
|
{
|
||||||
HAL_ETH_Stop_IT(&heth);
|
HAL_ETH_Stop_IT(&heth);
|
||||||
netif_set_down(netif);
|
netif_set_down(netif);
|
||||||
netif_set_link_down(netif);
|
netif_set_link_down(netif);
|
||||||
}
|
}
|
||||||
else if(!netif_is_link_up(netif) && (PHYLinkState > LAN8742_STATUS_LINK_DOWN))
|
else if (!netif_is_link_up(netif) && (PHYLinkState > LAN8742_STATUS_LINK_DOWN))
|
||||||
{
|
{
|
||||||
switch (PHYLinkState)
|
switch (PHYLinkState)
|
||||||
{
|
{
|
||||||
|
@ -782,7 +780,7 @@ void ethernet_link_thread(void const * argument)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(linkchanged)
|
if (linkchanged)
|
||||||
{
|
{
|
||||||
/* Get MAC Config MAC */
|
/* Get MAC Config MAC */
|
||||||
HAL_ETH_GetMACConfig(&heth, &MACConf);
|
HAL_ETH_GetMACConfig(&heth, &MACConf);
|
||||||
|
@ -795,9 +793,9 @@ void ethernet_link_thread(void const * argument)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN ETH link Thread core code for User BSP */
|
/* USER CODE BEGIN ETH link Thread core code for User BSP */
|
||||||
|
|
||||||
/* USER CODE END ETH link Thread core code for User BSP */
|
/* USER CODE END ETH link Thread core code for User BSP */
|
||||||
|
|
||||||
osDelay(100);
|
osDelay(100);
|
||||||
}
|
}
|
||||||
|
@ -805,7 +803,7 @@ void ethernet_link_thread(void const * argument)
|
||||||
|
|
||||||
void HAL_ETH_RxAllocateCallback(uint8_t **buff)
|
void HAL_ETH_RxAllocateCallback(uint8_t **buff)
|
||||||
{
|
{
|
||||||
/* USER CODE BEGIN HAL ETH RxAllocateCallback */
|
/* USER CODE BEGIN HAL ETH RxAllocateCallback */
|
||||||
struct pbuf_custom *p = LWIP_MEMPOOL_ALLOC(RX_POOL);
|
struct pbuf_custom *p = LWIP_MEMPOOL_ALLOC(RX_POOL);
|
||||||
if (p)
|
if (p)
|
||||||
{
|
{
|
||||||
|
@ -822,12 +820,12 @@ void HAL_ETH_RxAllocateCallback(uint8_t **buff)
|
||||||
RxAllocStatus = RX_ALLOC_ERROR;
|
RxAllocStatus = RX_ALLOC_ERROR;
|
||||||
*buff = NULL;
|
*buff = NULL;
|
||||||
}
|
}
|
||||||
/* USER CODE END HAL ETH RxAllocateCallback */
|
/* USER CODE END HAL ETH RxAllocateCallback */
|
||||||
}
|
}
|
||||||
|
|
||||||
void HAL_ETH_RxLinkCallback(void **pStart, void **pEnd, uint8_t *buff, uint16_t Length)
|
void HAL_ETH_RxLinkCallback(void **pStart, void **pEnd, uint8_t *buff, uint16_t Length)
|
||||||
{
|
{
|
||||||
/* USER CODE BEGIN HAL ETH RxLinkCallback */
|
/* USER CODE BEGIN HAL ETH RxLinkCallback */
|
||||||
|
|
||||||
struct pbuf **ppStart = (struct pbuf **)pStart;
|
struct pbuf **ppStart = (struct pbuf **)pStart;
|
||||||
struct pbuf **ppEnd = (struct pbuf **)pEnd;
|
struct pbuf **ppEnd = (struct pbuf **)pEnd;
|
||||||
|
@ -859,19 +857,18 @@ void HAL_ETH_RxLinkCallback(void **pStart, void **pEnd, uint8_t *buff, uint16_t
|
||||||
p->tot_len += Length;
|
p->tot_len += Length;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE END HAL ETH RxLinkCallback */
|
/* USER CODE END HAL ETH RxLinkCallback */
|
||||||
}
|
}
|
||||||
|
|
||||||
void HAL_ETH_TxFreeCallback(uint32_t * buff)
|
void HAL_ETH_TxFreeCallback(uint32_t *buff)
|
||||||
{
|
{
|
||||||
/* USER CODE BEGIN HAL ETH TxFreeCallback */
|
/* USER CODE BEGIN HAL ETH TxFreeCallback */
|
||||||
|
|
||||||
pbuf_free((struct pbuf *)buff);
|
pbuf_free((struct pbuf *)buff);
|
||||||
|
|
||||||
/* USER CODE END HAL ETH TxFreeCallback */
|
/* USER CODE END HAL ETH TxFreeCallback */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN 8 */
|
/* USER CODE BEGIN 8 */
|
||||||
|
|
||||||
/* USER CODE END 8 */
|
/* USER CODE END 8 */
|
||||||
|
|
||||||
|
|
|
@ -145,7 +145,7 @@
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>ST-LINKIII-KEIL_SWO</Key>
|
<Key>ST-LINKIII-KEIL_SWO</Key>
|
||||||
<Name>-U090F00028316303030303032 -O2254 -SF500 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407VGTx$CMSIS\Flash\STM32F4xx_1024.FLM) -WA0 -WE0 -WVCE4 -WS2710 -WM0 -WP2</Name>
|
<Name>-U420014000D0000504A51544E -O2254 -SF1800 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407VGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
</TargetDriverDllRegistry>
|
</TargetDriverDllRegistry>
|
||||||
<Breakpoint>
|
<Breakpoint>
|
||||||
|
@ -154,7 +154,7 @@
|
||||||
<Type>0</Type>
|
<Type>0</Type>
|
||||||
<LineNumber>2413</LineNumber>
|
<LineNumber>2413</LineNumber>
|
||||||
<EnabledFlag>1</EnabledFlag>
|
<EnabledFlag>1</EnabledFlag>
|
||||||
<Address>134234476</Address>
|
<Address>134234468</Address>
|
||||||
<ByteObject>0</ByteObject>
|
<ByteObject>0</ByteObject>
|
||||||
<HtxType>0</HtxType>
|
<HtxType>0</HtxType>
|
||||||
<ManyObjects>0</ManyObjects>
|
<ManyObjects>0</ManyObjects>
|
||||||
|
@ -165,54 +165,6 @@
|
||||||
<ExecCommand></ExecCommand>
|
<ExecCommand></ExecCommand>
|
||||||
<Expression>\\semi_finished_product_testing\../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c\2413</Expression>
|
<Expression>\\semi_finished_product_testing\../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c\2413</Expression>
|
||||||
</Bp>
|
</Bp>
|
||||||
<Bp>
|
|
||||||
<Number>1</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>77</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>134238496</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>1</BreakIfRCount>
|
|
||||||
<Filename>../LWIP/App/lwip.c</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression>\\semi_finished_product_testing\../LWIP/App/lwip.c\77</Expression>
|
|
||||||
</Bp>
|
|
||||||
<Bp>
|
|
||||||
<Number>2</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>224</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>0</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>0</BreakIfRCount>
|
|
||||||
<Filename>startup_stm32f407xx.s</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression></Expression>
|
|
||||||
</Bp>
|
|
||||||
<Bp>
|
|
||||||
<Number>3</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>226</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>0</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>0</BreakIfRCount>
|
|
||||||
<Filename>startup_stm32f407xx.s</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression></Expression>
|
|
||||||
</Bp>
|
|
||||||
</Breakpoint>
|
</Breakpoint>
|
||||||
<WatchWindow1>
|
<WatchWindow1>
|
||||||
<Ww>
|
<Ww>
|
||||||
|
@ -285,6 +237,11 @@
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>ip_address_flash,0x0A</ItemText>
|
<ItemText>ip_address_flash,0x0A</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>14</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>uart_echo_flags_hart1</ItemText>
|
||||||
|
</Ww>
|
||||||
</WatchWindow1>
|
</WatchWindow1>
|
||||||
<MemoryWindow1>
|
<MemoryWindow1>
|
||||||
<Mm>
|
<Mm>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,11 +1,3 @@
|
||||||
/*
|
|
||||||
* @Author: wangxujie 390834610@qq.com
|
|
||||||
* @Date: 2025-02-19 08:33:14
|
|
||||||
* @LastEditors: wangxujie 390834610@qq.com
|
|
||||||
* @LastEditTime: 2025-04-18 13:36:18
|
|
||||||
* @FilePath: \Semi-finished product testing\User\application\inc\tcpserverc.h
|
|
||||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
||||||
*/
|
|
||||||
#ifndef _TCPECHO_H_
|
#ifndef _TCPECHO_H_
|
||||||
#define _TCPECHO_H_
|
#define _TCPECHO_H_
|
||||||
|
|
||||||
|
|
|
@ -34,10 +34,11 @@ extern uint8_t tcp_echo_flags_ble2;
|
||||||
extern uint8_t tcp_echo_flags_control;
|
extern uint8_t tcp_echo_flags_control;
|
||||||
extern uint8_t send_data_flag_cmd;
|
extern uint8_t send_data_flag_cmd;
|
||||||
|
|
||||||
extern uint8_t uart_forwarding_flags_hart1;
|
extern uint8_t uart_echo_flags_hart1;
|
||||||
extern uint8_t uart_forwarding_flags_hart2;
|
extern uint8_t uart_echo_flags_hart2;
|
||||||
extern uint8_t uart_forwarding_flags_ble1;
|
extern uint8_t uart_echo_flags_ble1;
|
||||||
extern uint8_t uart_forwarding_flags_ble2;
|
extern uint8_t uart_echo_flags_ble2;
|
||||||
|
|
||||||
/*接收回调函数*/
|
/*接收回调函数*/
|
||||||
static err_t tcpecho_recv_hart1(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)
|
static err_t tcpecho_recv_hart1(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)
|
||||||
{ // 对应接收数据连接的控制块 接收到的数据
|
{ // 对应接收数据连接的控制块 接收到的数据
|
||||||
|
@ -369,32 +370,32 @@ void user_send_data_ble2(uint8_t *data, uint16_t len)
|
||||||
|
|
||||||
void user_send_data_control(uint8_t *data, uint16_t len)
|
void user_send_data_control(uint8_t *data, uint16_t len)
|
||||||
{
|
{
|
||||||
|
|
||||||
tcp_write(server_pcb_control, data, len, 1);
|
tcp_write(server_pcb_control, data, len, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void uart_forwarding_tcp(void)
|
void uart_forwarding_tcp(void)
|
||||||
{
|
{
|
||||||
if (uart_forwarding_flags_hart1 == 1)
|
if (uart_echo_flags_hart1 == 1)
|
||||||
{
|
{
|
||||||
|
uart_echo_flags_hart1 = 0;
|
||||||
user_send_data_hart1(hart1_uart5.rx_data, hart1_uart5.rx_num);
|
user_send_data_hart1(hart1_uart5.rx_data, hart1_uart5.rx_num);
|
||||||
uart_forwarding_flags_hart1 = 0;
|
|
||||||
}
|
}
|
||||||
if (uart_forwarding_flags_hart2 == 1)
|
if (uart_echo_flags_hart2 == 1)
|
||||||
{
|
{
|
||||||
|
uart_echo_flags_hart2 = 0;
|
||||||
user_send_data_hart2(hart2_uart2.rx_data, hart2_uart2.rx_num);
|
user_send_data_hart2(hart2_uart2.rx_data, hart2_uart2.rx_num);
|
||||||
uart_forwarding_flags_hart2 = 0;
|
|
||||||
}
|
}
|
||||||
#if (BLE2_USART6 == 1)
|
#if (BLE2_USART6 == 1)
|
||||||
if (uart_forwarding_flags_ble1 == 1)
|
if (uart_echo_flags_ble1 == 1)
|
||||||
{
|
{
|
||||||
|
uart_echo_flags_ble1 = 0;
|
||||||
user_send_data_ble1(ble1_uart6.rx_data, ble1_uart6.rx_num);
|
user_send_data_ble1(ble1_uart6.rx_data, ble1_uart6.rx_num);
|
||||||
uart_forwarding_flags_ble1 = 0;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (uart_forwarding_flags_ble2 == 1)
|
if (uart_echo_flags_ble2 == 1)
|
||||||
{
|
{
|
||||||
|
uart_echo_flags_ble2 = 0;
|
||||||
user_send_data_ble2(ble2_uart3.rx_data, ble2_uart3.rx_num);
|
user_send_data_ble2(ble2_uart3.rx_data, ble2_uart3.rx_num);
|
||||||
uart_forwarding_flags_ble2 = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,70 +0,0 @@
|
||||||
# 开发环境说明
|
|
||||||
|
|
||||||
## 1. 硬件平台
|
|
||||||
- 主控芯片:STM32F407xx系列(ARM Cortex-M4F内核)
|
|
||||||
- 外设芯片:
|
|
||||||
- ADC:AD7124-8(高精度模拟量输入)
|
|
||||||
- DAC:DAC161S997(高精度模拟量输出)
|
|
||||||
- 以太网:LAN8742(网络通信)
|
|
||||||
- LCD:串口显示屏
|
|
||||||
- 编码器接口
|
|
||||||
|
|
||||||
## 2. 开发工具
|
|
||||||
### 主要IDE
|
|
||||||
- Keil MDK-ARM (MDK-ARM目录存在)
|
|
||||||
- 项目文件:semi-finished_product_testing.uvprojx
|
|
||||||
- 编译配置:semi-finished_product_testing.uvoptx
|
|
||||||
- Visual Studio Code (存在.vscode配置目录)
|
|
||||||
- 用于代码编辑和查看
|
|
||||||
|
|
||||||
### 编译工具
|
|
||||||
- ARMCC编译器 (ARM编译工具链)
|
|
||||||
- 启动文件:startup_stm32f407xx.s
|
|
||||||
|
|
||||||
## 3. 软件框架
|
|
||||||
### 操作系统
|
|
||||||
- FreeRTOS实时操作系统
|
|
||||||
- 版本:位于Middlewares/Third_Party/FreeRTOS/Source/
|
|
||||||
- 配置文件:FreeRTOSConfig.h
|
|
||||||
|
|
||||||
### 驱动库
|
|
||||||
- STM32 HAL库 (Hardware Abstraction Layer)
|
|
||||||
- 位置:Drivers/STM32F4xx_HAL_Driver/
|
|
||||||
- 包含各种外设驱动
|
|
||||||
|
|
||||||
### 网络协议栈
|
|
||||||
- LwIP (Lightweight IP)
|
|
||||||
- 位置:Middlewares/Third_Party/LwIP/
|
|
||||||
- 支持TCP/IP协议
|
|
||||||
- MQTT支持
|
|
||||||
|
|
||||||
### BSP支持
|
|
||||||
- LAN8742网络驱动
|
|
||||||
- 位置:Drivers/BSP/Components/lan8742/
|
|
||||||
|
|
||||||
## 4. 项目结构
|
|
||||||
```
|
|
||||||
项目主要目录:
|
|
||||||
├── Core/ # 核心应用代码
|
|
||||||
├── Drivers/ # 驱动程序
|
|
||||||
├── LWIP/ # 网络协议栈
|
|
||||||
├── MDK-ARM/ # Keil工程文件
|
|
||||||
└── Middlewares/ # 中间件(FreeRTOS/LwIP)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 5. 开发规范
|
|
||||||
- 基于HAL库的驱动开发
|
|
||||||
- FreeRTOS多任务架构
|
|
||||||
- 模块化的设计结构
|
|
||||||
- 标准C语言开发规范
|
|
||||||
|
|
||||||
## 6. 调试方式
|
|
||||||
- ST-Link/J-Link调试器支持
|
|
||||||
- 串口调试
|
|
||||||
- 以太网远程调试
|
|
||||||
|
|
||||||
## 7. 项目文档
|
|
||||||
位于Documents/目录:
|
|
||||||
- 数据手册 (datasheet/)
|
|
||||||
- 项目文档 (project documents/)
|
|
||||||
- 原理图 (schematic diagram/)
|
|
|
@ -117,7 +117,7 @@ ETH.IPParameters=MediaInterface
|
||||||
ETH.MediaInterface=HAL_ETH_RMII_MODE
|
ETH.MediaInterface=HAL_ETH_RMII_MODE
|
||||||
FREERTOS.FootprintOK=true
|
FREERTOS.FootprintOK=true
|
||||||
FREERTOS.IPParameters=Tasks01,configMAX_TASK_NAME_LEN,configENABLE_FPU,configMAX_PRIORITIES,FootprintOK
|
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,0,512,start_dac_task,Default,NULL,Dynamic,NULL,NULL;adc_task,-1,128,start_adc_task,Default,NULL,Dynamic,NULL,NULL;gpio_di_do_task,0,128,start_gpio_di_do_task,Default,NULL,Dynamic,NULL,NULL;ec11_task,0,512,start_ec11_task,Default,NULL,Dynamic,NULL,NULL;uart_forwarding,3,512,start_uart_forwarding,Default,NULL,Dynamic,NULL,NULL
|
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,0,512,start_dac_task,Default,NULL,Dynamic,NULL,NULL;adc_task,-1,128,start_adc_task,Default,NULL,Dynamic,NULL,NULL;gpio_di_do_task,0,128,start_gpio_di_do_task,Default,NULL,Dynamic,NULL,NULL;ec11_task,0,512,start_ec11_task,Default,NULL,Dynamic,NULL,NULL
|
||||||
FREERTOS.configENABLE_FPU=1
|
FREERTOS.configENABLE_FPU=1
|
||||||
FREERTOS.configMAX_PRIORITIES=32
|
FREERTOS.configMAX_PRIORITIES=32
|
||||||
FREERTOS.configMAX_TASK_NAME_LEN=24
|
FREERTOS.configMAX_TASK_NAME_LEN=24
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
```mermaid
|
|
||||||
graph TB
|
|
||||||
%% 主要流程
|
|
||||||
Start[系统启动] --> Init[系统初始化]
|
|
||||||
Init --> Tasks[任务创建]
|
|
||||||
|
|
||||||
%% 主要任务分支
|
|
||||||
Tasks --> Network[网络通信]
|
|
||||||
Tasks --> DataAcq[数据采集]
|
|
||||||
Tasks --> DataOut[数据输出]
|
|
||||||
Tasks --> UserInterface[人机交互]
|
|
||||||
|
|
||||||
%% 网络通信详细
|
|
||||||
Network --> |TCP/IP|RemoteControl[远程控制]
|
|
||||||
RemoteControl --> |命令|CommandProcess[命令处理]
|
|
||||||
RemoteControl --> |数据|DataUpload[数据上传]
|
|
||||||
|
|
||||||
%% 数据采集详细
|
|
||||||
DataAcq --> |ADC|AnalogIn[模拟量输入]
|
|
||||||
DataAcq --> |GPIO|DigitalIn[数字量输入]
|
|
||||||
AnalogIn --> DataProcess[数据处理]
|
|
||||||
DigitalIn --> DataProcess
|
|
||||||
|
|
||||||
%% 数据输出详细
|
|
||||||
DataOut --> |DAC|AnalogOut[模拟量输出]
|
|
||||||
DataOut --> |GPIO|DigitalOut[数字量输出]
|
|
||||||
CommandProcess --> DataOut
|
|
||||||
|
|
||||||
%% 人机交互详细
|
|
||||||
UserInterface --> |LCD|Display[状态显示]
|
|
||||||
UserInterface --> |编码器|LocalControl[本地控制]
|
|
||||||
LocalControl --> DataOut
|
|
||||||
DataProcess --> Display
|
|
||||||
|
|
||||||
%% 通信协议
|
|
||||||
subgraph 通信协议
|
|
||||||
HART[HART协议]
|
|
||||||
BLE[蓝牙通信]
|
|
||||||
TCP[TCP/IP]
|
|
||||||
end
|
|
||||||
|
|
||||||
%% 硬件接口
|
|
||||||
subgraph 硬件接口
|
|
||||||
ADC[AD7124]
|
|
||||||
DAC[DAC161S997]
|
|
||||||
DIO[数字IO]
|
|
||||||
LCD[串口LCD]
|
|
||||||
ETH[以太网]
|
|
||||||
Encoder[编码器]
|
|
||||||
end
|
|
||||||
|
|
||||||
%% 数据流向
|
|
||||||
DataProcess --> |测量数据|DataUpload
|
|
||||||
CommandProcess --> |控制命令|DataOut
|
|
||||||
```
|
|
Loading…
Reference in New Issue