USB中断掩码未加载STM32L151CC

时间:2014-08-06 23:42:30

标签: c embedded usb stm32l152

我目前遇到STM USB库的一个奇怪问题。我能够成功地将固件加载到STM32L152D-EVAL板(使用STM32L152ZD)上,但是,我无法修改相同的代码以使用我的外形板,后者使用上述STM32L151CC。

在使用调试器(ULINK2,使用KEIL uVision4 IDE)逐步执行代码后,我注意到在函数USB_SIL_Init()中设置中断掩码时代码会崩溃

uint32_t USB_SIL_Init(void)
{
  /* USB interrupts initialization */
  /* clear pending interrupts */
  _SetISTR(0);
  wInterrupt_Mask = IMR_MSK;
  /* set interrupts mask */
  _SetCNTR(wInterrupt_Mask);
  return 0;
}

更具体地说,_SetCNTR(wInterrupt_Mask);是给我错误的原因。我没有更改任何一块板之间IMR_MSK的值。它的值是

#define IMR_MSK (CNTR_CTRM | CNTR_WKUPM | CNTR_SUSPM | CNTR_ERRM | CNTR_SOFM \ | CNTR_ESOFM | CNTR_RESETM )

0xBF00

_SetCNTR定义如下

 #define _SetCNTR(wRegValue)  (*CNTR   = (uint16_t)wRegValue)

CNTR定义为

/* Control register */
#define CNTR    ((__IO unsigned *)(RegBase + 0x40))

RegBase

#define RegBase (0x40005C00L)  /* USB_IP Peripheral Registers base address */

我目前正在查看STM的文档,但我似乎无法找到与两个不同芯片的默认状态有关的任何内容。我猜它与基地址有关,但数据表显示这是正确的地址。

任何人都可以帮我解决这个问题吗?

谢谢!

0 个答案:

没有答案