/********************************** (C) COPYRIGHT ******************************* * File Name : main.c * Author : WCH * Version : V1.0.0 * Date : 2024/05/05 * Description : Main program body. ********************************************************************************* * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. * Attention: This software (modified or not) and binary are used for * microcontroller manufactured by Nanjing Qinheng Microelectronics. *******************************************************************************/ #include "includes.h" #include #include uint32_t test_tick = 0; uint8_t test_buff[10] = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A}; /********************************************************************* * @fn main * * @brief Main program. * * @return none */ int main(void) { SystemCoreClockUpdate(); Systick_Init(); UARTx_Init(UART_0,512000); UARTx_Init(UART_1,512000); UARTx_Init(UART_2,512000); UARTx_Init(UART_3,512000); SYS_LED_Init(); SPI_SRAM_Init(); SPI_FLASH_Init(); WCHNET_LIB_Init(); Dbg_Println(DBG_BIT_SYS_STATUS_bit,"MCU Start!! 2025-11-03-10:42\r\n"); Dbg_Println(DBG_BIT_SYS_STATUS_bit,"SystemClk:%d\r\n", SystemCoreClock); while (1) { SYS_LED_Task(); UART0_RECEIVE(); UART1_RECEIVE(); UART2_RECEIVE(); UART3_RECEIVE(); if(SysTick_1ms - test_tick >= 10000){ test_tick = SysTick_1ms; Dbg_Println(DBG_BIT_SYS_STATUS_bit,"RUN PYH:%x...\r\n",ETH_ReadPHYRegister(PHY_ADDRESS, PHY_BSR)); } NetWork_Task(); WCHNET_MainTask(); if(WCHNET_QueryGlobalInt()) { WCHNET_HandleGlobalInt(); } } } void NMI_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); void HardFault_Handler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); /********************************************************************* * @fn NMI_Handler * * @brief This function handles NMI exception. * * @return none */ void NMI_Handler(void) { while (1) { } } /********************************************************************* * @fn HardFault_Handler * * @brief This function handles Hard Fault exception. * * @return none */ void HardFault_Handler(void) { /* MRS_关于HardFault问题查找思路 : https://www.cnblogs.com/wchmcu/p/17545931.html */ uint32_t v_mepc,v_mcause,v_mtval; Dbg_Println(DBG_BIT_SYS_STATUS_bit,"hardfault\n"); v_mepc=__get_MEPC(); v_mcause=__get_MCAUSE(); v_mtval=__get_MTVAL(); Dbg_Println(DBG_BIT_SYS_STATUS_bit,"mepc:%x\n",v_mepc); Dbg_Println(DBG_BIT_SYS_STATUS_bit,"mcause:%x\n",v_mcause); Dbg_Println(DBG_BIT_SYS_STATUS_bit,"mtval:%x\n",v_mtval); while(1); }