主题中讨论的其他器件:TM4C123GH6PM、 EK-TM4C123GXL、 TM4C123
工具/软件:Code Composer Studio
我已经阅读了所有可用材料、尝试将 REV EK-TM4C123GXL 开发板上的 TM4C123GH6PM 处理器置于 USB DFU 模式。 我正在使用下面的代码、并且能够使用 CCS 编译和加载软件。 但是、当我使用器件端口(并将 PWR 选择切换为"器件")插入评估板并启动 LM 闪存编程器(Build1613)时、未识别 USB DFU 器件。 我已经确认可以使用 LM 闪存强制电路板进入 USB DFU 模式来擦除闪存。 我尝试了两种不同的评估板。 我尝试将软件加载为.bin ... 无骰子。
更多信息:
器件不会在器件管理器中显示为"Stellaris 器件固件升级"、除非 LM 闪存编程器擦除闪存。
我遵循了为 TM4C129x 提供的示例代码、并阅读和尝试了其他论坛中的半打条目中似乎所有可能的解决方案。
我在属性>编译> ARM 编译器>预定义符号下的部分为:target_IS_TM4C123_RA3;在预定义名称字段中。 此外、在该字段中、我还有 PART_TM4C123GH6PM
我正在运行 CCS 版本:7.0.0.00043和 TivaWare_C_Series-2.1.4.178
提前感谢您的任何帮助。
代码:
#include // C99标准的变量定义。 #include // C99标准的布尔定义。 #include "inc/tm4c123ghp6.h"//中断和寄存器分配的定义。 #include "inc/hw_memmap.h"// Tiva C 系列器件的存储器映射定义。 #include "inc/hw_types.h"//常用类型和宏的定义。 #include "driverlib/rom.h" #include "driverlib/rom_map.h" #include "inc/hw_NVIC.h" #include "driverlib/usb.h" #include "usblib/usblib.h" #include "usblib/device/usbdevice.h" #include "usblib/usbrom/usblib/usbrom.trl" 用于控制系统的"usbrom.dlt 定义。 #include "driverlib/interrupt.h"//为 DriverLib 的 NVIC 控制器 API 定义和宏。 #include "driverlib/gpio.h"// DriverLib GPIO API 的定义和宏。 #include "driverlib/timer.h"//为 DriverLib 的计时器 API 定义和宏。 #include "driverlib/pin_map.h"//Mapping of peripherals to pins for all parts。 #include "driverlib/uart.h"// DriverLib UART API 的定义和宏。 #include "driverlib/adc.h"// DriverLib 的 ADC API 定义。 //#define TARGET_IS_TM4C123_RA3 uint32_t sys_clock; int main (void) { //将系统时钟配置为40MHz。 ROM_SysCtlClockSet (SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN); SYS_CLOCK = ROM_SysCtlClockGet (); USBDCDTerm (0); ROM_IntMasterDisable(); ROM_SysTickIntDisable(); ROM_SysTickDisable(); HWREG (NVIC_DIS0)= 0xffffffff; HWREG (NVIC_DIS1)= 0xffffffff; HWREG (NVIC_DIS2)= 0xffffffff; HWREG (NVIC_DIS3)= 0xffffffff; HWREG (NVIC_DIS4)= 0xffffffff; ROM_SysCtlPeripheralEnable (GPIO_PORTD_BASE); ROM_GPIOPinTypeUSBAnalog (GPIO_PORTD_BASE、GPIO_PIN_4); ROM_GPIOPinTypeUSBAnalog (GPIO_PORTD_BASE、GPIO_PIN_5); ROM_SysCtlPeripheralEnable (SYSCTL_Periph_USB0); ROM_SysCtlPeripheralReset (SYSCTL_Periph_USB0); // ROM_GPIOPinTypeUSBAnalog (GPIO_PORTD_base、GPIO_PIN_4); // ROM_GPIOPinTypeUSBAnalog (GPIO_PORTD_base、GPIO_PIN_5); ROM_SysCtlUSBPLLEnable(); ROM_SysCtlDelay (SYS_CLOCK /3); ROM_IntMasterEnable(); ROM_UpdateUSB (0); while (1){ } }