USB cdc示例+ PWM导致硬件故障

时间:2018-11-03 19:00:55

标签: usb keil rtos

我跑步   USB虚拟com端口  例子 NXP LPC1768  在Keil环境中成功。

默认情况下,代码处于特权模式。

例如,我添加了一行用于访问PWM外设,这导致 HardFault 错误。

我也尝试过

__SVC

解决方案,但也会导致HardFault。

这是Keil pack安装程序的示例,我只添加了有关PWM的标题和一行:

#include "cmsis_os.h"
#include "rl_usb.h"

#include "Board_GLCD.h"
#include "GLCD_Config.h"
#include "LPC17xx.h"                    // Device header

extern    GLCD_FONT GLCD_Font_6x8;
extern    GLCD_FONT GLCD_Font_16x24;


int main (void) {

  GLCD_Initialize         ();
  GLCD_SetBackgroundColor (GLCD_COLOR_BLUE);
  GLCD_SetForegroundColor (GLCD_COLOR_WHITE);
  GLCD_ClearScreen        ();
  GLCD_SetFont            (&GLCD_Font_16x24);
  GLCD_DrawString         (0U, 0U*24U, "    USB Device      ");
  GLCD_DrawString         (0U, 1U*24U, "   CDC ACM Class    ");
  GLCD_DrawString         (0U, 2U*24U, " VirtualCOM Example ");
  GLCD_DrawString         (0U, 4U*24U, "   USB <-> UART1    ");
  GLCD_DrawString         (0U, 8U*24U, "  Keil Tools by ARM ");
  GLCD_DrawString         (0U, 9U*24U, "    www.keil.com    ");

  USBD_Initialize         (0U);         // USB Device 0 Initialization
  USBD_Connect            (0U);         // USB Device 0 Connect

    LPC_PWM1->PR = 24;   //PWM causes **hardFault** 

  while (1) {
    osSignalWait (0U, osWaitForever);
  }  
}

2 个答案:

答案 0 :(得分:1)

LPC_PWM1可能未在LPC_SC->PCONP寄存器中启用。请参阅UM10360.pdf(参考手册)中的4.8.9章。

尝试访问禁用的外围设备将导致故障。

答案 1 :(得分:0)

这是由PC USB识别问题引起的。

应该通过尝试关闭设备1或2秒钟,然后再次将其插入来解决问题。