stm32 usb usb_init HardFault

时间:2015-07-05 15:47:17

标签: usb stm32 cdc

我正在尝试从STM32_USB-FS-Device_Lib_V4.0.0运行Virtual_COM_Port。我正在使用IAR 7.3。一切都好,但没有运行usb。我开始使用调试器。在函数

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还是某些设置?

1 个答案:

答案 0 :(得分:0)

你正在访问memmory你不应该。默认情况下,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);

在此之后你的硬错误可能会变成MemManage_fault。不多,但它可以让你更好地了解你正在处理什么。

另请参阅此link以了解在iar上调试硬故障。

我无法确定没有看到你设置Device_Property变量的位置,但仔细检查是否可以将其内存地址提供给其他内容。