Files
base/boards/e3_176_ref/app_demo/eth-xip/20240907-参数调试完成/main.c
2025-11-07 09:57:14 +08:00

206 lines
7.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <types.h>
#include "board.h"
#include "debug.h"
#include "regs_base.h"
#include "irq_num.h"
#include "clock_cfg.h"
#include "reset_cfg.h"
#include "pinmux_cfg.h"
#include "eth_cfg.h"
#include "lwip/err.h"
#include "lwip/inet.h"
#include "lwip/tcp.h"
#include "lwip/timeouts.h"
#include <string.h>
#include "sdrv_eth.h"
#include "lwip/udp.h"
#include "flexcan_cfg.h"
#include "interface_config.h"
//app包含
#include "app/app_config.h"
#define IP_ADDR0 10
#define IP_ADDR1 18
#define IP_ADDR2 252
#define IP_ADDR3 34
extern int btm_init(void);
extern struct tcp_pcb *netdemo_connect_server(char *ip, int port);
extern bool netdemo_tcp_connected(void);
extern bool netdemo_tcp_send_done(void);
extern void netdemo_clear_tcp_send_done(void);
static bool g_eth1_rx_pkt;
static void eth_dma_rx_int_cb(struct net_driver_s *dev)
{
if (dev == &g_eth1_dev)
g_eth1_rx_pkt = true;
}
uint8_t mainCnt = 0;
uint8_t mainCntarr[8] = {0x56,0x88,0x98,0x79,0x23};
uint8_t desIp[4] = {192,168,17,3};
uint8_t test_app[26] = {0};
//uint8_t key_state = 0;
int main(void)
{
bool eth_pool_rx = false;
// ip4_addr_t Desaddr;
// struct pbuf *DesPuff = NULL;
// char *g_lwip_demo_sendbuf = "ALIENTEK DATA\r\n";
uint8_t BOOT_Arr[2] = {0x01,0x02};
// struct udp_pcb *udpcb_2;
//------------------------------------------------------------------------------
// 释放MCU各模块reset信号
board_reset_init();
// 配置时钟
int ret = sdrv_ckgen_init(&g_clock_config);
ASSERT(ret == 0);
// VIC初始化
irq_initialize(VIC1_BASE, IRQ_MAX_INTR_NUM);
// 配置pinmux
sdrv_pinctrl_init(NUM_OF_CONFIGURED_PINS, g_pin_init_config);
feedWatchdog();//喂狗
// Timer初始化用于提供LWIP sys_now接口获取当前时间
btm_init();
// 使能打印
board_debug_console_init();
//遥控串口初始化
// uart_Initialize();
//初始化所有can
initialization_All_Flexcan();
// ETH初始化
board_eth_init();
feedWatchdog();//喂狗
if (!eth_pool_rx) {
// 使能DMA Rx中断。Tx未使用中断因为ETH速率很高
// Tx中断处理耗时反而可能拖慢发送速度。
dwc_eth_enable_dma_rx_int(&g_eth1_dev, eth_dma_rx_int_cb);
}
// UDP_Echo_Init();//读取
//以太网端口初始化
UDP_Echo_Init(UDPCB_1, udp_Callback_1, COMMUNICATION_PORT);
UDP_Echo_Init(UDPCB_2, udp_Callback_2, UPPER_PORT);
UDP_Echo_Init(UDPCB_3, udp_Callback_3, PARAM_PORT);
// IP4_ADDR(&Desaddr,IP_ADDR0,IP_ADDR1,IP_ADDR2,IP_ADDR3);
// wdt_init(WDT_OUTms);
//读取标志
g_systemDataRecord.canBootloaderUpgrade = rdbyte_24c02(0x00);
CAN_Send_Msg(&can_handle_6,OTA_CANTxID, FLEXCAN_STANDARD_FRAME, FLEXCAN_FrameTypeData, BOOT_Arr,2, TX_MB_INDEX);//app 帧
ssdk_printf(SSDK_NOTICE, "SSDK E3 V1.68\r\n");
// brakeAppInit();
// 初始化框架
initFramework();
testAppInit();
paramAppInit();
ethernetAppInit();
for (;;)
{
// 处理信号
processMessages();
// 接收ETH帧并传递给LWIP协议栈
// 如果使能接收中断因为ISR里会disable接收中断因此这里对于
// 中断接收标志(g_eth1_rx_pkt)的处理过程中不会有
// 新的接收中断被响应,所以,这里不存在原子性问题。
if ((!eth_pool_rx && g_eth1_rx_pkt) || eth_pool_rx)
{
g_eth1_rx_pkt = false;
dwc_eth_rx(&g_eth1_dev, eth_pool_rx);
}
// LWIP协议栈接口用于做LWIP超时检测
sys_check_timeouts();
if(1 == Btm10ms)//10ms到
{
Btm10ms = 0;
bootmian();//boot和喂狗处理
mainCnt ++;
if(mainCnt>=10)
{
mainCnt = 0;
// CAN_Send_Msg(&can_handle_0, 0x400, FLEXCAN_STANDARD_FRAME, FLEXCAN_FrameTypeData, mainCntarr, 8, 15);
// CAN_Send_Msg(&can_handle_1, 0x401, FLEXCAN_STANDARD_FRAME, FLEXCAN_FrameTypeData, mainCntarr, 8, 15);
// CAN_Send_Msg(&can_handle_2, 0x402, FLEXCAN_STANDARD_FRAME, FLEXCAN_FrameTypeData, mainCntarr, 8, 15);
// CAN_Send_Msg(&can_handle_3, 0x403, FLEXCAN_STANDARD_FRAME, FLEXCAN_FrameTypeData, mainCntarr, 8, 15);
// CAN_Send_Msg(&can_handle_4, 0x404, FLEXCAN_STANDARD_FRAME, FLEXCAN_FrameTypeData, mainCntarr, 8, 15);
// CAN_Send_Msg(&can_handle_5, 0x405, FLEXCAN_STANDARD_FRAME, FLEXCAN_FrameTypeData, mainCntarr, 8, 15);
CAN_Send_Msg(&can_handle_6, 0x453, FLEXCAN_STANDARD_FRAME, FLEXCAN_FrameTypeData, &un_temp_module_input.ArrData.arr[0][0], 8, 15);
// CAN_Send_Msg(&can_handle_6, 0x454, FLEXCAN_STANDARD_FRAME, FLEXCAN_FrameTypeData, &un_temp_module_input.ArrData.arr[1][0], 8, 16);
CAN_Send_Msg(&can_handle_6, 0x455, FLEXCAN_STANDARD_FRAME, FLEXCAN_FrameTypeData, &un_temp_module_input.ArrData.arr[1][0], 8, 17);
CAN_Send_Msg(&can_handle_6, 0x456, FLEXCAN_STANDARD_FRAME, FLEXCAN_FrameTypeData, &un_bms_input.ArrData.arr[0][0] , 8, 18);
CAN_Send_Msg(&can_handle_6, 0x457, FLEXCAN_STANDARD_FRAME, FLEXCAN_FrameTypeData, &un_bms_input.ArrData.arr[1][0] , 8, 19);
CAN_Send_Msg(&can_handle_6, 0x458, FLEXCAN_STANDARD_FRAME, FLEXCAN_FrameTypeData, &un_motor_input2.ArrData.arr[0][0], 8, 20);
CAN_Send_Msg(&can_handle_6, 0x459, FLEXCAN_STANDARD_FRAME, FLEXCAN_FrameTypeData, &un_motor_input1.ArrData.arr[0][0], 8, 14);
mainCntarr[0] = can_fault_info.navigator_state;//状态发送出去
mainCntarr[1] = can_fault_info.motor1_state;
mainCntarr[2] = can_fault_info.motor2_state;
mainCntarr[3] = can_fault_info.bms_state;
mainCntarr[4] = can_fault_info.temperature_state;
mainCntarr[5] = can_fault_info.remote_state;
CAN_Send_Msg(&can_handle_6, 0x461, FLEXCAN_STANDARD_FRAME, FLEXCAN_FrameTypeData, mainCntarr, 8, 15);
gpioTimerProcess(mainCntarr);
CAN_Send_Msg(&can_handle_6, 0x12000023, FLEXCAN_EXTEND_FRAME, FLEXCAN_FrameTypeData, &un_remote_control_input.ArrData.arr[0][0], 8, 16);
CAN_Send_Msg(&can_handle_6, 0x462, FLEXCAN_STANDARD_FRAME, FLEXCAN_FrameTypeData, &un_sw_sample.ArrData.arr[0][0], 6, 15);
powerOn();
ethernetTimerProcess();
canTimerProcess();
flexcan_Busoff_Recovery();
// ssdk_printf(SSDK_NOTICE, "SSDK E3 run!\r\n");
// UdpSendToData(UDPCB_1,test_app, 25, desIp, 8011);
// UdpSendToData(UDPCB_2,(uint8_t *)g_lwip_demo_sendbuf, 12, desIp, 8011);
}
}
}
}