- 打卡等级:常住居民III
- 打卡总天数:112
- 最近打卡:2026-07-04 17:55:09
高级会员
- 积分
- 953
|
1. 在官方的例程<< Ai8051U-32Bit\27-通过定时器周期性调度任务综合例程,简单实用的任务调度系统,推荐 >>
config.h 中 有时钟相关代码如下:
//#define MAIN_Fosc 22118400L //¶¨ÒåÖ÷ʱÖÓ
//#define MAIN_Fosc 12000000L //¶¨ÒåÖ÷ʱÖÓ
//#define MAIN_Fosc 11059200L //¶¨ÒåÖ÷ʱÖÓ
//#define MAIN_Fosc 5529600L //¶¨ÒåÖ÷ʱÖÓ
#define MAIN_Fosc 24000000L //¶¨ÒåÖ÷ʱÖÓ
//========================================================================
// ¶¨Ê±Æ÷¶¨Òå
//========================================================================
#define Timer0_Reload (MAIN_Fosc / 1000) //Timer 0 ÖÐ¶ÏÆµÂÊ, 1000´Î/Ãë
//========================================================================
// ´®¿Ú¶¨Òå
//========================================================================
#define PrintUart 2 //1:printf ʹÓà UART1; 2:printf ʹÓà UART2
#define Baudrate 115200L
#define TM (65536 - (((MAIN_Fosc) / (Baudrate) + 2) / 4)) // 原来的代码没有 +2 ,这里我改了一下, 没什么影响。
----------------------------------
新增代码
void usb_init()
{
P3M0 &= ~0x03;
P3M1 |= 0x03;
IRC48MCR = 0x80;
while (!(IRC48MCR & 0x01));
USBCLK = 0x00;
USBCON = 0x90;
usb_write_reg(FADDR, 0x00);
usb_write_reg(POWER, 0x81);
usb_write_reg(INTRIN1E, 0x3f);
usb_write_reg(INTROUT1E, 0x3f);
usb_write_reg(INTRUSBE, 0x07);
usb_write_reg(POWER, 0x01);
DeviceState = DEVSTATE_DEFAULT;
Ep0State.bState = EPSTATE_IDLE;
InEpState = 0x00;
OutEpState = 0x00;
Ep4InBusy = 0;
Ep5InBusy = 0;
Ep4OutBusy = 0;
Ep5OutBusy = 0;
EUSB = 1;
}
---------------------------------------------------------------------------------------------
在 UartInit(); 前调用一下 usb_init(); 就时钟就只能设置成24mhz, 设置成 22118400hz 会乱码。
---------------------------------------------------------------------------------------------
为什么调用一下usb_init 就只能设置24mhz了呢?
|
|