2015-07-05 111 views
0

我試圖從STM32_USB-FS-Device_Lib_V4.0.0運行Virtual_COM_Port。我正在使用IAR 7.3。一切正常,但不能運行USB。我開始使用調試器。在功能stm32 usb usb_init HardFault

void USB_Init(void) 
{ 
    pInformation = &Device_Info; 
    pInformation->ControlState = 2; 
    pProperty = &Device_Property; 
    pUser_Standard_Requests = &User_Standard_Requests; 
    /* Initialize devices one by one */ 
    pProperty->Init(); 
} 

上線pProperty = & Device_Property;調試器跳轉到異常處理程序HardFault_Handler。可能是什麼問題呢?問題與IAR或一些設置?

回答

0

你正在接受你不該做的記憶。默認情況下,Hardfault_handler捕獲所有異常,禁用可配置的故障異常。嘗試開啓MemManage_fault:

SCB->CHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; 

//Set the priority of the MemManage fault (using CMSIS): 

NVIC_SetPriority(MemoryManagement_IRQn, *priority*); 

//Default name for MemManage fault function is: 
void MemManage_Handler(void); 

在此之後,您的hardfault可能會變成MemManage_fault。沒有多少,但它讓你更清楚你在處理什麼。

另請參閱此link用於在iar上調試hardfaults。

我無法確定沒有看到設置Device_Property變量的位置,但仔細檢查確定可以將其內存地址賦予其他位置。