| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | #include "at32f403a_407.h"#include "usb_clock.h"//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;        }    }}
 |