USB cdc 示例 + PWM 导致硬故障错误
usb cdc example + PWM cause hardfault error
我运行
USB 虚拟串口
上的例子
恩智浦 LPC1768
成功,在Keil环境下。
默认情况下,代码处于特权模式。
例如,我添加了一行用于访问 PWM 外设,它导致
HardFault 错误。
另外,我试过了
__SVC
解决方案,但它也会导致 HardFault。
这是 Keil 包安装程序示例,我只添加了一个 header 和一行关于 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);
}
}
LPC_PWM1 可能未在 LPC_SC->PCONP
寄存器中启用。请参阅 UM10360.pdf(参考手册)中的第 4.8.9 章。
尝试访问禁用的外围设备将导致错误。
这是PC造成的USB识别问题。
尝试关机1、2秒,再插上应该可以解决。
我运行 USB 虚拟串口 上的例子 恩智浦 LPC1768 成功,在Keil环境下。
默认情况下,代码处于特权模式。
例如,我添加了一行用于访问 PWM 外设,它导致 HardFault 错误。
另外,我试过了
__SVC
解决方案,但它也会导致 HardFault。
这是 Keil 包安装程序示例,我只添加了一个 header 和一行关于 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);
}
}
LPC_PWM1 可能未在 LPC_SC->PCONP
寄存器中启用。请参阅 UM10360.pdf(参考手册)中的第 4.8.9 章。
尝试访问禁用的外围设备将导致错误。
这是PC造成的USB识别问题。
尝试关机1、2秒,再插上应该可以解决。