пример usb cdc + PWM вызывает ошибку hardfault - PullRequest
0 голосов
/ 03 ноября 2018

я бегу виртуальный USB-порт пример на NXP LPC1768 успешно, в среде Keil.

по умолчанию код находится в привилегированном режиме.

например, я добавил одну строку для доступа к периферийному устройству ШИМ, и это вызывает HardFault Ошибка.

Также я попробовал

__SVC

решение, но оно также вызывает HardFault.

это пример установщика Keil Pack, и я добавил только заголовок и строку о ШИМ:

#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 голосов
/ 06 ноября 2018

Это вызвано ПК Проблема распознавания USB .

Это должно решить, пытаясь выключить устройство на 1 или 2 секунды, а затем снова подключить его.

0 голосов
/ 04 ноября 2018

LPC_PWM1 может быть не включен в регистре LPC_SC->PCONP. См. Главу 4.8.9 в UM10360.pdf (справочное руководство).

Попытка получить доступ к отключенному периферийному устройству приведет к ошибке.

...