#include "at32f403a_407.h" #include "at32f403a_407_board.h" #include "at32f403a_407_clock.h" #include "common_config.h" //#include "at32_emac.h" #include "FreeRTOS.h" #include "task.h" #include "queue.h" #include "semphr.h" #include "usb_eth.h" #include "mux.h" #include #include #include void init_task(void *argument); void usb_clock48m_select(usb_clk48_s clk_s); // int main(void) { nvic_priority_group_config(NVIC_PRIORITY_GROUP_4); system_clock_config(); at32_board_init(); usb_clock48m_select(USB_CLK_HEXT); crm_periph_clock_enable(CRM_USB_PERIPH_CLOCK, TRUE); uart_print_init(115200); printf("\n\n\n\nModule universal IO [FW %s] loading....\r\n\n", VERSION); // //usb_init(); #if 1 taskENTER_CRITICAL(); xTaskCreate(init_task, "init_task", 2*configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL); taskEXIT_CRITICAL(); vTaskStartScheduler(); #endif while (1) {} } void init_task(void *argument) { //static uint32_t cnt = 0; // //usb_eth_init(); mux_gpio_init(); for (;;) { //printf("%u\r\n", cnt++); mux_test(); } // ----------------------------------------------------------------------------- vTaskDelete(NULL); taskYIELD(); } // void usb_clock48m_select(usb_clk48_s clk_s) { if(clk_s == USB_CLK_HICK) { crm_usb_clock_source_select(CRM_USB_CLOCK_SOURCE_HICK); /* enable the acc calibration ready interrupt */ crm_periph_clock_enable(CRM_ACC_PERIPH_CLOCK, TRUE); /* update the c1\c2\c3 value */ acc_write_c1(7980); acc_write_c2(8000); acc_write_c3(8020); /* open acc calibration */ acc_calibration_mode_enable(ACC_CAL_HICKTRIM, TRUE); } else { switch(system_core_clock) { /* 48MHz */ case 48000000: crm_usb_clock_div_set(CRM_USB_DIV_1); break; /* 72MHz */ case 72000000: crm_usb_clock_div_set(CRM_USB_DIV_1_5); break; /* 96MHz */ case 96000000: crm_usb_clock_div_set(CRM_USB_DIV_2); break; /* 120MHz */ case 120000000: crm_usb_clock_div_set(CRM_USB_DIV_2_5); break; /* 144MHz */ case 144000000: crm_usb_clock_div_set(CRM_USB_DIV_3); break; /* 168MHz */ case 168000000: crm_usb_clock_div_set(CRM_USB_DIV_3_5); break; /* 192MHz */ case 192000000: crm_usb_clock_div_set(CRM_USB_DIV_4); break; default: break; } } }