本帖最后由 kkkazaf 于 2014-3-31 16:17 编辑
现在似乎弄好了section 的问题,但下载代码到开发板运行后 计算机没有提示找到硬件,用串口调试助手也找不到开发板(我用usb hid例程却没有问题啊)。
其实我进入除错模式看到它卡在PowerOn()的函数,可我用step进入这个函数,直到跑完都没事,就只有step over 才有卡住。 (抱歉有这么多问题) Main调用USB_Init(),再调用 pProperty->Init() ,跳到CustomHID_init()
请问有大神知道代码哪有问题,导致计算机检测不了?
----------以下是main 的代码----------
void MainTask(void) {
/* Initialization */
RCC_Configuration();
NVIC_Configuration();
Set_System();
RCC->APB2ENR |= (1 << 5); // enable clock for GPIOD
GPIOD->CRL &= ~0x00000F00; // clear port PD2
GPIOD->CRL |= 0x00000700; // PD2 General purpose output open-drain, max speed 50 MHz
GPIOD->BRR = 0x0004; // reset PD2 (set to low)
USB_Interrupts_Config();
Set_USBClock();
USB_Init();
USB_Receive标志寄存器 = FALSE;
/* Task */
while(1){
if (TimeCount && USB_Receive标志寄存器 == TRUE) //收到后上位机的数据后,将1S发送一次数据给PC
{
USB_SendString("Hi,PC! I'm STM32-ARM");
TimeCount = 0x00;
}
}
}
-------其他部份------------
void CustomHID_init(void) { /* Update theserial number string descriptor with the data from the unique ID*/ Get_SerialNum(); pInformation->Current_Configuration = 0; /* Connectthe device */ PowerOn(); /* USBinterrupts initialization */ _SetISTR(0); /*clear pending interrupts */ wInterrupt_Mask = IMR_MSK; _SetCNTR(wInterrupt_Mask); /* set interrupts mask */
bDeviceState = UNCONNECTED; }
RESULT PowerOn(void) { u16wRegVal;
/*** cableplugged-in ? ***/ USB_Cable_Config(ENABLE);
/***CNTR_PWDN = 0 ***/ //USB 彶楷啭窒统桽苌揤 wRegVal =CNTR_FRES; _SetCNTR(wRegVal);
/***CNTR_FRES = 0 ***/ wInterrupt_Mask = 0; _SetCNTR(wInterrupt_Mask); /*** Clearpending interrupts ***/ _SetISTR(0); /*** Setinterrupt mask ***/ wInterrupt_Mask = CNTR_RESETM | CNTR_SUSPM | CNTR_WKUPM; _SetCNTR(wInterrupt_Mask);
returnUSB_SUCCESS; }
|