This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] EK-TM4C123GXL:读取 USB 键盘时出现问题

Guru**** 2350610 points
Other Parts Discussed in Thread: EK-TM4C123GXL
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/616061/ek-tm4c123gxl-problem-about-usb-keyboard-read

器件型号:EK-TM4C123GXL
主题中讨论的其它部件:DK-TM4C123GTM4C123

您好!

我从 DK-tm4c123g 复制了 USB_host_keyboard 代码并为 EK-TM4C123GXL 进行自定义。 但不感应键盘。 什么是问题。  我的代码如下所示。 然后我将函数添加到启动文件中。  extern void SysTickIntHandler (void);extern void USB0OTGModeIntHandler (void);

注意:我们直接为 Vbus 提供5V 电压。

//
//
//// usb_host_keyboard.c -主机键盘示例的主应用程序代码。
//
//版权所有(c) 2012-2017 Texas Instruments Incorporated。 保留所有权利。
//软件许可协议
//
//德州仪器(TI)提供此软件仅供
和//仅供 TI 的微控制器产品使用。 软件归
// TI 和/或其供应商所有,并受适用的版权
//法律保护。 您不能将此软件与"病毒"开源
//软件组合在一起以形成更大的程序。
//
//此软件按“原样”提供,且存在所有故障。
//对于

本软件,不作任何明示、暗示或法定的保证,包括但不限于对适销性和适用性的暗示保证//特定用途。 在任何
//情况下、TI 不对任何
原因造成的特殊、意外或必然//损害负责。
//
//这是 DK-TM4C123G 固件包的修订版本2.1.4.178的一部分。
////
*****************

#include 
#include 
include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/pin_map.h"
#include "driverlib/susb.usb/include
"usb.usb.usb/include "driverlib.h"






#usb.usb.usb/usb.usb/include "usb.usb.usb.usb.usb/include "usb.usb/usb.usb.usb.us"#include "usb/usb.usb.usb.usb.usb.usb.us.us"#include "usb.usb.usb.us.us.usb.us.us.us"#include "#include "usb.usb.us.us.usb.us.us.us



//
//! \addtogroup example_list
//! 

USB HID 键盘主机(USB_host_keyboard)

//! //! 此示例应用演示了如何支持 USB 键盘 //! 连接到评估套件板。 显示屏将显示键盘是否 //! 当前已连接、 并且//!上的 Caps Lock 键的当前状态 连接在屏幕底部状态区域的键盘。 //! 按键盘上的任何键都将导致它们打印在 //! 并以115200波特的波特率发送 UART、无奇偶校验、8位 //! 和1个停止位。 任何支持 USB HID BIOS 协议 //!的键盘 应该适用于此演示应用。 //// ***************** // // //退格字符的 ASCII 代码。 //// ***************** #define ASCII_****0x08 //******************* // //主机控制器内存池的大小(以字节为单位)。 //// ***************** #define HCD_MEMORY_SIZE 128 //************* // //提供给主机控制器驱动程序的内存池。 //// ***************** uint8_t g_pui8HCPool [hcd_memory_size]; //********* // //键盘设备接口内存池的大小(以字节为单位)。 //// ***************** #define keyboard_memory_size 128 //********* // //提供给键盘设备的内存池。 //// ***************** uint8_t g_pui8Buffer[keyboard_memory_size]; //********* // //声明 USB 事件驱动程序接口。 //// ***************** Declate_event_driver (g_sUSBEventDriver、0、0、USBHCEDents); //*************** // //包含应用程序中使用的所有主机驱动程序的全局变量。 //在这种情况下,仅加载键盘类。 //// ***************** 静态 tUSBHostClassDriver const * const g_ppHostClassDriver[]= { &g_sUSBHIDClassDriver、 &g_sUSBEventDriver }; //********* // //此全局变量保存 g_ppHostClassDrivers //列表中的类驱动程序数。 //// ***************** 静态常量 uint32_t g_ui32NumHostClassDrivers = sizeof (g_ppHostClassDrivers)/ sizeof (tUSBHostClassDriver *); //********* // //每秒的 SysTick 节拍数。 //// ***************** #define TICKS_PER_second 100 #define MS_PER_SysTick (1000 / TICKS_PER_second) //********* // //我们运行的系统节拍计数器和一个全局变量,用于确定 自上次调用 GetTickms()以来经过的时间//。 //// ***************** uint32_t g_ui32SysTickCount; uint32_t g_ui32LastTick; //********* // //用于存储键盘实例值的全局值。 //// ***************** 静态 tUSBHKeyboard *g_psKeyboardInstance; //********* // //此枚举类型用于保存键盘的状态。 //// ***************** 枚举 { // //不存在设备。 // State_no_device、 // //已检测到键盘,需要在主程序中初始化键盘 //循环。 // State_keyboard_init、 // //键盘已连接并正在等待事件。 // State_keyboard_Connected、 // //键盘已收到需要更新键盘的按键 //进行。 // State_keyboard_update、 // //连接了不受支持的设备。 // State_unknown_device、 // //发生电源故障。 // State_POWER_FAULT } g_eUSBState; extern const tHIDKeyboardUsageTable g_sUSKeyboardMap; //********* // //当前 USB 操作模式-主机、设备或未知。 //// ***************** tUSBMode g_eCurrentUSBMode; //********* // //这些定义用于定义应用程序的屏幕限制。 //// ***************** #define display_Banner_height 10 #define display_Banner_BG ClrDarkBlue #define DISPLAY_TEXT_Border 2 #define DISPLAY_TEXT_FG ClrWhite #define DISPLAY_TEXT_BG ClrBlack //********* // //此变量保存修饰符键的当前状态。 //// ***************** uint32_t g_ui32Modifiers = 0; //********* // //这是文本区域中一行中的字符数。 //// ***************** uint32_t g_ui32CharsPerLine; //********* // //这是文本区域中的行数。 //// ***************** uint32_t g_ui32LinesPerScreen; //********* // //这是当前在文本区域打印的行。 //// ***************** uint32_t g_ui32Line = 0; //********* // //这是文本区域中打印的当前列。 //// ***************** uint32_t g_ui32Column = 0; //********* // //如果驱动程序库遇到错误,则调用的错误例程。 //// ***************** #ifdef debug void __error__(char *dpcFilename、uint32_t ui32Line) { #endif //********* // //这是该 SysTick 中断的处理程序。 //// ***************** void SysTickIntHandler (void) { // //更新我们的 tick 计数器。 // G_ui32SysTickCount++; } //********* // //此函数将字符从 UART 打印出来,并打印到 //屏幕的文本区域。 // //\param cChar 是要打印的字符。 // //此函数处理将字符打印到 // UART 和评估板屏幕文本区域的所有细节。 只要文本超出 文本区域的结尾//,屏幕的文本//区域就会被清除。 // //\返回无。 //// ***************** // // //此函数更新屏幕的状态区域。 它使用 应用程序的当前//状态来打印状态栏。 //// ***************** void UpdateStatus (void) { // //更新屏幕上的状态。 // if (g_eUSBState = State_no_device) { // //键盘当前已断开连接。 // UARTprintf ("无设备\n"); } 否则、如果(g_eUSBState = State_unknown_device) { // //当前已连接未知设备。 // UARTprintf ("未知设备\n"); } 否则、如果(g_eUSBState = State_Power_FAULT) { // //导致电源故障。 // UARTprintf ("电源故障\n"); } 否则、如果((g_eUSBState = State_keyboard_connected)|| (G_eUSBState = State_keyboard_update)) { // //键盘已连接。 // UARTprintf ("connected"); // //更新 CAPS Lock 状态。 // if (g_ui32修饰符和 HID_KEYB_CAPS_LOCK) { UARTprintf ("C\n"); } } //********* // //这是来自主机堆栈的通用回调。 // //// pvData 实际上是 tEventInfo 结构的指针。 // //将调用此函数,以便在与 键盘设备相关的 USB 事件之外发生//时通知应用程序。 此时 //此选项用于检测插入和删除的不受支持的设备。 //它还用于在发生电源故障时通知应用程序。 // 将 g_USBGenericEventDriver 包含在//主机控制器驱动程序数组中时,需要此函 数,该数将传递到// USBHCDRegisterDrivers()函数。 //// ***************** void USBHCEDEvents (void *pvData) { tEventInfo *pEventInfo; // //将此指针投射到其实际类型。 // pEventInfo =(tEventInfo *) pvData; switch (pEventInfo->ui32Event) { // //检测到新键盘。 // 案例 USB_EVENT_Connected: { // //查看这是否是 HID 键盘。 // if (((USBHCDDevClass (pEventInfo->ui32Instance、0)= USB_class_HID)&& (USBHCDDevProtocol (pEventInfo->ui32Instance、0)= USB_HID_PROTOCOL_KEYB)) { // //指示已检测到键盘。 // UARTprintf ("键盘已连接\n"); // //继续到 State_keyboard_init 状态,以便主函数 //循环可以完成鼠标初始化,因为 //无法从回调中调用 USBHKeyboardInit()。 // G_eUSBState = State_keyboard_init; } 中断; } // //检测到不支持的设备。 // 案例 USB_EVENT_UNKNOWN_Connected: { UARTprintf ("不支持的设备类(0x%02x)已连接。\n"、 pEventInfo->ui32Instance); // //检测到未知设备。 // G_eUSBState = State_unknown_device; UpdateStatus(); 中断; } // //设备已拔下。 // 案例 USB_EVENT_DISCONNECTED: { // //表示设备已断开连接。 // UARTprintf ("设备已断开连接\n"); // //更改状态以便主循环知道器件 //不再存在。 // G_eUSBState = State_no_device; // //更新屏幕。 // UpdateStatus(); 中断; } // //发生电源故障。 // 案例 USB_EVENT_POWER_FAULT: { UARTprintf ("电源故障\n"); // //不能通电表示没有设备。 // G_eUSBState = State_Power_FAULT; UpdateStatus(); 中断; } 默认值: { 中断; } } //********* // // USB 模式回调 // //\param ui32Index 是 USB 控制器的基于零的索引,组成 // 回调。 //\param eMode 表示新的操作模式。 // //每当 OTG 模式发生更改 时,USB 库就会调用此函数//如果已建立连接,则会通知我们 是要//作为主机还是设备运行。 // //\返回无。 //// ***************** void modeCallback (uint32_t ui32Index、tUSBMode eMode) { // //保存新模式。 // G_eCurrentUSBMode = eMode; 开关(eMode) { 案例 eUSBModeHost: { UARTprintf ("\n 主机模式。\n"); 中断; } 案例 eUSBModeDevice: { UARTprintf ("\n 设备模式。\n"); 中断; } 案例 eUSBModeNone: { UARTprintf ("\n 空闲模式。\n"); 中断; } 默认值: { UARTprintf ("错误:错误模式!\n"); 中断; } } //********* // //这是来自 USB HID 键盘处理程序的回调。 // //\param psKbInstance 被此函数忽略。 //\param ui32Event 是键盘设备的有效事件之一。 //\param ui32MsgParam 由发生的事件定义。 //\param pvMsgData 是指向由 //发生的事件定义的数据的指针。 // //将调用此函数,以便在插入或 删除键盘以及按下或释放键时通知应用程序。 // //\返回无。 //// ***************** void KeyboardCallback (tUSBHKeyboard * psKbInstance、uint32_t ui32事件、 uint32_t ui32MsgParam、void *pvMsgData) { char cChar; switch (ui32event) { // //检测到新按键。 // 案例 USBH_EVENT_HID_KB_PRESS: { // //如果这是 Caps Lock 键,则更新 Caps Lock 状态。 // if (ui32MsgParam = HID_KEYB_USAGE_CapsLock) { // //主循环需要更新键盘的 Caps Lock //状态。 // G_eUSBState = State_keyboard_update; // //切换当前的 Caps Lock 状态。 // G_ui32修饰符^= HID_KEYB_CAPS_LOCK; // //根据大写锁定状态更新屏幕。 // UpdateStatus(); } 否则、if (ui32MsgParam =HID_KEYB_USAGE_SCROLLOCK) { // //主循环需要更新键盘的滚动锁定 //状态。 // G_eUSBState = State_keyboard_update; // //切换当前的滚动锁定状态。 // G_ui32Modifiers ^= HID_KEYB_SCROL_LOCK; } 否则、if (ui32MsgParam =HID_KEYB_USAGE_NumLock) { // //主循环需要更新键盘的滚动锁定 //状态。 // G_eUSBState = State_keyboard_update; // //切换当前的 Num Lock 状态。 // G_ui32Modifiers ^= HID_KEYB_NUM_LOCK; } 其他 { // //这是退格键吗? // if ((uint8_t) ui32MsgParam = HID_KEYB_USAGE_Backspace) { // //是-为退格键设置 ASCII 代码。 这是 //由于仅此原因,USBHKeyboardUsageToChar 未返回 //返回可打印字符。 // cChar = ASCII_Backspace; } 其他 { // //这不是退格,因此尝试将使用代码映射到 //可打印的 ASCII 字符。 // cChar =(char) USBHKeyboardUsageToChar (g_psKeyboardInstance、 g_sUSKeyboardMap (&G)、 (uint8_t) ui32MsgParam); } // //值为零表示没有文本映射 //使用代码。 // if (cChar!= 0) { UARTprintf ((cChar)); } } 中断; } 案例 USBH_EVENT_HID_KB_MOD: { // //此应用程序忽略移位或控制的状态 //和其他特殊键。 // 中断; } 案例 USBH_EVENT_HID_KB_REL: { // //此应用程序也会忽略密钥的释放。 // 中断; } } //********* // //此函数返回自上次 调用此函数以来的节拍数//。 //// ***************** uint32_t GetTickms (void) { uint32_t ui32RetVal; uint32_t ui32Saved; ui32RetVal = g_ui32SysTickCount; ui32Saved = ui32RetVal; if (ui32Saved > g_ui32LastTick) { ui32RetVal = ui32Saved - g_ui32LastTick; } 其他 { ui32RetVal = g_ui32LastTick - ui32Saved; } // //这可能会错过几毫秒,但这里的计时是在 A 上 //比例大得多。 // G_ui32LastTick = ui32Saved; // //返回自上次调用此函数以来的毫秒数。 // return (ui32RetVal * MS_PER_SysTick); } //********* // //配置 UART 及其引脚。 这必须在 UARTprintf()之前调用。 //// ***************** void ConfigureUART (void) { // //启用 UART 使用的 GPIO 外设。 // ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA); // //启用 UART0 // ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART0); // //为 UART 模式配置 GPIO 引脚。 // ROM_GPIOPinConfigure (GPIO_PA0_U0RX); ROM_GPIOPinConfigure (GPIO_PA1_U0TX); ROM_GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1); // //使用内部16MHz 振荡器作为 UART 时钟源。 // UARTClockSourceSet (UART0_BASE、UART_CLOCK_PIOSC); // //初始化控制台 I/O 的 UART // UARTStdioConfig (0、115200、16000000); } //********* // //这是运行应用程序的主循环。 //// ***************** int main (void) { tUSBMode eLastMode; char *pcString; // //为中断处理程序启用怠惰堆栈。 这允许使用浮点 //在中断处理程序中使用的指令,但代价是 //额外的堆栈用法。 // ROM_FPULazyStackingEnable(); // //将系统时钟设置为从 PLL 以50MHz 运行。 // ROM_SysCtlClockSet (SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz); // //最初等待设备连接。 // G_eUSBState = State_no_device; eLastMode = eUSBModeOTG; G_eCurrentUSBMode = eUSBModeOTG; // //启用对 USB 控制器的计时。 // ROM_SysCtlPeripheralEnable (SYSCTL_Periph_USB0); // //配置 USB 操作所需的引脚。 // ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB); ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD); ROM_GPIOPinTypeUSBAnalog (GPIO_PORTD_BASE、GPIO_PIN_4 | GPIO_PIN_5); ///ROM_GPIOPinTypeUSBAnalog (GPIO_PORTB_BASE、GPIO_PIN_0 | GPIO_PIN_1); // //为100Hz 中断配置 SysTick。 // ROM_SysTickPeriodSet (ROM_SysCtlClockGet ()/ ticks_per_sond); ROM_SysTickEnable(); ROM_SysTickIntEnable(); // //启用中断 // ROM_IntMasterEnable(); // //为调试输出配置 UART0。 // ConfigureUART(); // //初始化 USB 堆栈模式并传入模式回调。 // USBStackModeSet (0、eUSBModeOTG、ModeCallback); // //注册主机类驱动程序。 // USBHCDRegisterDrivers (0、g_ppHostClassDrivers、g_ui32NumHostClassDrivers); // //打开键盘驱动程序的实例。 键盘不需要 //现在要在场,只需为它保存一个位置并允许它 //键盘出现时要通知的应用程序。 // G_psKeyboardInstance = USBHKeyboardOpen (KeyboardCallback、g_pui8缓冲器、 keyboard_memory_size); // //初始化电源配置。 这将设置电源使能信号 //为高电平有效且不使能电源故障。 // //USBHCDPowerConfigInit (0、USBHCD_VBUS_AUTO_HIGH | USBHCD_VBUS_FILTER); // //使用2ms 轮询初始化 USB 控制器以进行 OTG 操作 //速率。 // USBOTGModeInit (0、2000、g_pui8HCPool、HCD_MEMORY_SIZE); // //打开键盘类驱动程序和实例。 // UARTprintf ("主机键盘应用程序\n"); // //屏幕的初始更新。 // UpdateStatus(); // //应用程序的主循环。 // while (1) { // //告诉 OTG 库代码经过了多少时间 //自上次调用以来的毫秒数。 // USBOTGMain (GetTickms()); // //自上次检查以来 USB 模式是否发生了变化? // if (g_eCurrentUSBMode!= eLastMode) { // //记住新模式。 // eLastMode = g_eCurrentUSBMode; 开关(eLastMode) { 案例 eUSBModeHost: pcString ="主机"; 中断; 案例 eUSBModeDevice: pcString ="设备"; 中断; 案例 eUSBModeNone: pcString ="无"; 中断; 默认值: pcString ="未知"; 中断; } UARTprintf ("USB 模式更改为%s\n"、pcString); } 开关(g_eUSB 状态) { // //首次检测到键盘时会进入此状态。 // 案例 State_keyboard_init: { // //初始化新连接的键盘。 // USBHKeyboardInit(g_psKeyboardInstance); // //继续进入键盘连接状态。 // G_eUSBState = State_keyboard_connected; // //现在键盘已安装,更新屏幕 //已初始化。 // UpdateStatus(); USBHKeyboardModifierSet (g_psKeyboardInstance、g_ui32 Modifiers); 中断; } 案例 State_keyboard_update: { // //如果应用程序检测到需要的更改 //要发送到键盘以更改修饰符的更新 //状态然后调用它并返回到连接状态。 // G_eUSBState = State_keyboard_connected; USBHKeyboardModifierSet (g_psKeyboardInstance、g_ui32 Modifiers); 中断; } 案例 State_keyboard_connected: { // //键盘时,主循环中当前没有执行任何操作 //已连接。 // 中断; } 案例 State_UNKNOWN_DEVICE: { // //没有什么可做的,因为设备未知。 // 中断; } 案例 State_no_device: { // //键盘时,主循环中当前没有执行任何操作 //未连接。 // 中断; } 默认值: { 中断; } } }

//
//
//与 TI 的 Code Composer Studio 配合使用的启动代码。
//
//版权所有(c) 2011-2014 Texas Instruments Incorporated。 保留所有权利。
//软件许可协议
//
软件许可协议
//
////德州仪器(TI)提供此软件,仅用于
TI 的微控制器产品和//仅用于此软件。 软件归
// TI 和/或其供应商所有,并受适用的版权
//法律保护。 您不能将此软件与"病毒"开源
//软件组合在一起以形成更大的程序。
//
//此软件按“原样”提供,且存在所有故障。
//对于

本软件,不作任何明示、暗示或法定的保证,包括但不限于对适销性和适用性的暗示保证//特定用途。 在任何
//情况下、TI 不对任何
原因造成的特殊、意外或必然//损害负责。
////
*****************

#include 

//
//
//转发默认故障处理程序的声明。
////
*****************
void ResetISR (void);
static void NmiSR (void);
static void FaultISR (void);
static void IntDefaultHandler (void);

//*********
//
//
启动//处理器时要调用的复位处理程序的外部声明
//
*********
extern void _c_int00 (void);

//*********
//
//标记栈顶的链接器变量。
////
*****************
extern uint32_t __stack_top;

//*********
//
//应用程序使用的中断处理程序的外部声明。
////
*****************
//由用户

extern void SysTickIntHandler (void);
extern void USB0OTGModeIntHandler (void)添加;

//*********
//
//矢量表。 请注意、必须在这个上放置适当的结构、
以//确保它在物理地址0x0000.0000处结束、或者
在//程序的开头(如果位于0以外的起始地址)结束。
////
*****************
#pragma DATA_SECTION (g_pfnVectors、".intvecs")
void (* const g_pfnVectors [])(void)=
{
(void (*)(void)((uint32_t)&_stack_top)、
//初始堆栈指针
ResetISR、 //重置处理程序
NmiSR、 // NMI 处理程序
FaultISR、 //硬故障处理程序
IntDefaultHandler、 // MPU 故障处理程序
IntDefaultHandler、 //总线故障处理程序
IntDefaultHandler、 //用法故障处理程序
0、 //保留
0、 //保留
0、 //保留
0、 //保留
IntDefaultHandler、 // SVCall 处理程序
IntDefaultHandler、 //调试监视器处理程序
0、 //保留
IntDefaultHandler、 // PendSV 处理程序
SysTickIntHandler、 // SysTick 处理程序
IntDefaultHandler、 // GPIO 端口 A
IntDefaultHandler、 // GPIO 端口 B
IntDefaultHandler、 // GPIO 端口 C
IntDefaultHandler、 // GPIO 端口 D
IntDefaultHandler、 // GPIO 端口 E
IntDefaultHandler、 // UART0 Rx 和 Tx
IntDefaultHandler、 // UART1 Rx 和 Tx
IntDefaultHandler、 // SSI0 Rx 和 Tx
IntDefaultHandler、 // I2C0主机和从机
IntDefaultHandler、 // PWM 故障
IntDefaultHandler、 // PWM 发生器0
IntDefaultHandler、 // PWM 发生器1
IntDefaultHandler、 // PWM 发生器2.
IntDefaultHandler、 //正交编码器0
IntDefaultHandler、 // ADC 序列0
IntDefaultHandler、 // ADC 序列1
IntDefaultHandler、 // ADC 序列2.
IntDefaultHandler、 // ADC 序列3.
IntDefaultHandler、 //看门狗计时器
IntDefaultHandler、 // Timer 0子计时器 A
IntDefaultHandler、 // Timer 0子计时器 B
IntDefaultHandler、 //计时器1子计时器 A
IntDefaultHandler、 //计时器1子计时器 B
IntDefaultHandler、 //计时器2子计时器 A
IntDefaultHandler、 //计时器2子计时器 B
IntDefaultHandler、 //模拟比较器0
IntDefaultHandler、 //模拟比较器1
IntDefaultHandler、 //模拟比较器2.
IntDefaultHandler、 //系统控制(PLL、OSC、BO)
IntDefaultHandler、 //闪存控制
IntDefaultHandler、 // GPIO 端口 F
IntDefaultHandler、 // GPIO 端口 G
IntDefaultHandler、 // GPIO 端口 H
IntDefaultHandler、 // UART2 Rx 和 Tx
IntDefaultHandler、 // SSI1 Rx 和 Tx
IntDefaultHandler、 //计时器3子计时器 A
IntDefaultHandler、 //计时器3子计时器 B
IntDefaultHandler、 // I2C1主设备和从设备
IntDefaultHandler、 //正交编码器1
IntDefaultHandler、 // CAN0
IntDefaultHandler、 // CAN1
0、 //保留
0、 //保留
IntDefaultHandler、 // Hibernate
USB0OTGModeIntHandler, // USB0
IntDefaultHandler、 // PWM 发生器3.
IntDefaultHandler、 // uDMA 软件传输
IntDefaultHandler、 // uDMA 错误
IntDefaultHandler、 // ADC1序列0
IntDefaultHandler、 // ADC1序列1
IntDefaultHandler、 // ADC1序列2.
IntDefaultHandler、 // ADC1序列3.
0、 //保留
0、 //保留
IntDefaultHandler、 // GPIO 端口 J
IntDefaultHandler、 // GPIO 端口 K
IntDefaultHandler、 // GPIO 端口 L
IntDefaultHandler、 // SSI2 Rx 和 Tx
IntDefaultHandler、 // SSI3 Rx 和 Tx
IntDefaultHandler、 // UART3 Rx 和 Tx
IntDefaultHandler、 // UART4 Rx 和 Tx
IntDefaultHandler、 // UART5 Rx 和 Tx
IntDefaultHandler、 // UART6 Rx 和 Tx
IntDefaultHandler、 // UART7 Rx 和 Tx
0、 //保留
0、 //保留
0、 //保留
0、 //保留
IntDefaultHandler、 // I2C2主设备和从设备
IntDefaultHandler、 // I2C3主设备和从设备
IntDefaultHandler、 //计时器4子计时器 A
IntDefaultHandler、 //计时器4子计时器 B
0、 //保留
0、 //保留
0、 //保留
0、 //保留
0、 //保留
0、 //保留
0、 //保留
0、 //保留
0、 //保留
0、 //保留
0、 //保留
0、 //保留
0、 //保留
0、 //保留
0、 //保留
0、 //保留
0、 //保留
0、 //保留
0、 //保留
0、 //保留
IntDefaultHandler、 //计时器5子计时器 A
IntDefaultHandler、 //计时器5子计时器 B
IntDefaultHandler、 //宽定时器0子定时器 A
IntDefaultHandler、 //宽定时器0子定时器 B
IntDefaultHandler、 //宽定时器1子定时器 A
IntDefaultHandler、 //宽定时器1子定时器 B
IntDefaultHandler、 //宽定时器2子定时器 A
IntDefaultHandler、 //宽定时器2子定时器 B
IntDefaultHandler、 //宽定时器3子定时器 A
IntDefaultHandler、 //宽定时器3子定时器 B
IntDefaultHandler、 //宽定时器4子定时器 A
IntDefaultHandler、 //宽定时器4子定时器 B
IntDefaultHandler、 //宽定时器5子定时器 A
IntDefaultHandler、 //宽定时器5子定时器 B
IntDefaultHandler、 // FPU
0、 //保留
0、 //保留
IntDefaultHandler、 // I2C4主设备和从设备
IntDefaultHandler、 // I2C5主设备和从设备
IntDefaultHandler、 // GPIO 端口 M
IntDefaultHandler、 // GPIO 端口 N
IntDefaultHandler、 //正交编码器2
0、 //保留
0、 //保留
IntDefaultHandler、 // GPIO 端口 P (摘要或 P0)
IntDefaultHandler、 // GPIO 端口 P1
IntDefaultHandler、 // GPIO 端口 P2
IntDefaultHandler、 // GPIO 端口 P3
IntDefaultHandler、 // GPIO 端口 P4
IntDefaultHandler、 // GPIO 端口 P5
IntDefaultHandler、 // GPIO 端口 P6
IntDefaultHandler、 // GPIO 端口 P7
IntDefaultHandler、 // GPIO 端口 Q (摘要或 Q0)
IntDefaultHandler、 // GPIO 端口 Q1
IntDefaultHandler、 // GPIO 端口 Q2
IntDefaultHandler、 // GPIO 端口 Q3
IntDefaultHandler、 // GPIO 端口 Q4
IntDefaultHandler、 // GPIO 端口 Q5
IntDefaultHandler、 // GPIO 端口 Q6
IntDefaultHandler、 // GPIO 端口 Q7
IntDefaultHandler、 // GPIO 端口 R
IntDefaultHandler、 // GPIO 端口 S
IntDefaultHandler、 // PWM 1发生器0
IntDefaultHandler、 // PWM 1发生器1
IntDefaultHandler、 // PWM 1发生器2
IntDefaultHandler、 // PWM 1发生器3
IntDefaultHandler // PWM 1故障
};

//*********
//
//这是在处理器首次开始执行
时调用的代码//在复位事件之后。 只执行绝对必要的设置,
//之后调用应用程序提供的 entry()例程。 任何花式
//操作(例如根据复位原因寄存

器做出决策、和//复位该寄存器中的位)都只能由//应用程序控制。
////
*****************
void
ResetISR (void)
{
//
//跳转到 CCS C 初始化例程。 这将启用
//浮点单元,因此不需要在此处执行此操作。
//
_asm (".global _c_int00\n"
" _c_int00");
}

//*********
//
//这是当处理器接收到 NMI 时被调用的代码。 这个
//只需进入一个无限循环,保留系统状态供
调试器检查//。
////
*****************
静态空
NmiSR (void)
{
//
//输入无限循环。
//
while (1)
{
}
}

//*********
//
//这是处理器收到故障
//中断时调用的代码。 这只是进入一个无限循环、保持系统状态
//供调试器检查。
////
*****************
静态空
FaultISR (空)
{
//
//输入无限循环。
//
while (1)
{
}
}

//*********
//
//这是当处理器收到意外
的//中断时调用的代码。 这只是进入一个无限循环、保持系统状态
//供调试器检查。
////
*****************
静态空
IntDefaultHandler (void)
{
//
//进入无限循环。
//
while (1)
{
}
}