206 lines
7.5 KiB
C
206 lines
7.5 KiB
C
#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);
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|