- 打卡等级:初来乍到
- 打卡总天数:2
- 最近打卡:2024-01-10 20:43:38
高级会员
- 积分
- 917
|
我跟着冲哥的视频开始学STC32,因为用了某宝的其他家开发板,程序没有和冲哥的完全一样。
但是delay_ms延时的时间不准,500ms大约有7.5秒。实在想不通。
请高手帮忙看下。
我感觉这几处是重要的。看了几遍,找不出问题。
#define MAINFOSC 24000000UL
void delay_ms (uint16_t ms)
{
uint16_t i;
i = (uint16_t)(MAINFOSC / 6000UL);
do
{
while (--i)
{
;
}
}
while (--ms);
}
调用
delay_ms(500);
整个程序如下。
#include "stc.h"
#include "usb.h"
#define MAINFOSC 24000000UL
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
volatile int a = 0;
void delay_ms (uint16_t ms)
{
uint16_t i;
i = (uint16_t)(MAINFOSC / 6000UL);
do
{
while (--i)
{
;
}
}
while (--ms);
}
void main()
{
WTST = 0;
EAXFR = 1;
CKCON = 0;
P0M1 = 0xFC;
P0M0 = 0x00;
P3M1 = 0x03;
P3M0 = 0x00;
IRC48MCR = 0x80;
while (!(IRC48MCR & 0x01));
USBCLK = 0x00;//CDC
USBCON = 0x90;
usb_init();
EA = 1;
while (1)
{
// for(a = 0;a < 30000;a++)
// {
// ;
// }
if (DeviceState != DEVSTATE_CONFIGURED)
{
continue;
}
if (bUsbOutReady)
{
usb_OUT_done();
a++;
//printf_hid ("a=%d,%.3f\r\n",a,(0.0-(float)a));
}
// printf_hid ("a=%d\r\n",a);
delay_ms(500);
P00 ^= 1;
P01 ^= 1;
}
}
|
|