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.

[参考译文] CCS/EK-TM4C129EXL:TM4C129EXL Launch Pad

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/968867/ccs-ek-tm4c129exl-tm4c129exl-launch-pad

器件型号:EK-TM4C129EXL

工具/软件:Code Composer Studio

尊敬的先生:

我在调试过程中遇到问题。 在步骤执行期间,当执行 GPIOPinConfigure ( GPIO_PA0_U0RX)这一行时出现问题,在执行之后,会跳转到启动程序中的无限循环。

我在下面给出了...

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

//
//输入无限循环。
//
while (1)


我的代码是--


#include
#include
#include
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
//#include "driverlib/SysTick .h"
#include "driverlib/rom.h"
#include "driverlib/rom_map.h"
#include "driverlib/uart.h"
#include "driverlib/interrupt.h"
#include "utils/uartstdio.h"

void SetupUart0 (void);
字符 Uart0_receiver (void);
void UART5_Transmitter (无符号字符数据);


void SetupUart0 (void)

#if defined (target_IS_TM4C129_RA0)||\
已定义(TARGET_IS_TM4C129_RA1)||\
已定义(TARGET_IS_TM4C129_RA2)
uint32_t ui32SysClockFreqHz;
#endif
uint32_t SysClockFreqHz;
SysClockFreqHz = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);

//
//启用用于 UART0引脚的 GPIO 端口 A。
// TODO:将其更改为您正在使用的 GPIO 端口。
SysCtlPeripheralEnable (GPIO_Porta_base);

//
//启用 UART0以便我们可以配置时钟。
//

GPIOPinConfigure (GPIO_PA0_U0RX);
GPIOPinConfigure (GPIO_PA1_U0TX);

SysCtlPeripheralEnable (SYSCTL_Periph_UART0);
while (SysCtlPeripheralReady (SYSCTL_Periph_UART0)!= true)

//
//为端口 A0和 A1上的 UART0功能配置引脚复用。
//如果您的器件不支持引脚复用、则无需执行此步骤。
// TODO:更改此选项以选择您正在使用的端口/引脚。
//
//GPIOPinConfigure (GPIO_PA0_U0RX);
//GPIOPinConfigure (GPIO_PA1_U0TX);

//GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);

//设置 UART 的配置

UARTConfigSetExpClk (UART0_BASE、SysClockFreqHz、115200、(UART_CONFIG_PAR_NONE | UART_CONFIG_STOP_ONE | UART_CONFIG_WLEN_8));

//将 UART 设置为在 Tx FIFO 几乎为空或接收到任何字符时中断
UARTFIFOEnable (UART0_BASE);
//UARTFIFOLevelSet (UART0_BASE、UART_FIFO_TX1_8、UART_FIFO_RX1_8);

//启用 UART
UARTEnable (UART0_BASE);

// IntEnable (INT_UART0);
// UARTIntEnable (UART0_BASE、UART_INT_RX | UART_INT_RT | UART_INT_TX);
UARTStdioConfig (0、115200、40000000);


/*void Uart0InterruptHandler (void)

uint32_t InterruptFlags;

InterruptFlags = UARTIntStatus (UART0_BASE、false);
UARTIntClear (UART0_BASE、InterruptFlags);

IF (InterruptFlags & UART_INT_TX)

// Tx FIFO 中的空间
while (UARTSpaceAvail (UART0_BASE))

// UARTCharPutNonBlocking (UART0_BASE、BufGet (&Tx));

IF (InterruptFlags &(UART_INT_RX | UART_INT_RT))

// Rx FIFO 中的数据
while (UARTCharsAvail (UART0_BASE))

// BufPut (&Rx、UARTCharGetNonBlocking (UART0_BASE));


}*/
// char 接收函数

字符 Uart0_receiver (void)

字符数据;
while (UARTCharsAvail (UART0_BASE)!=错误)

DATA=UARTCharGet (UART0_BASE);

返回(unsigned char)数据;


空 UART5_Transmitter (无符号字符数据)

// unsigned char peta;
while (UARTSpaceAvail (UART0_BASE)!=错误)

UARTCharPut (UART0_BASE、DATA);


/**
* main.c
*
int main (空)

SetupUart0();
UARTprintf ("test");

//返回0;

请帮帮我。 我如何解决这个问题? 实际上,我正在测试板上发送的字符(A)(如中断),它将处于 LED 状态。  当我发送 B 时、它将关闭 LED。

Imtiaj Hossain

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我怀疑您的问题是、在启用端口 GPIOA 后、您立即执行了"GPIOPinConfigure (GPIO_PA0_U0RX);"、并且没有为端口准备好提供足够的时间。 您可以添加 while 循环以等待 GPIOA 准备就绪。

    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
    while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOA))
    {
    }
    GPIOPinConfigure (GPIO_PA0_U0RX);
    GPIOPinConfigure (GPIO_PA1_U0TX);
    

    或者、您只需更改代码的顺序、以便在启用端口和访问端口之间留出时间。

    //
    //启用 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);
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob 先生:

    很抱歉, 在设置 Uart0中,我执行了()。 但问题没有解决。 请注意、此部件是否正确?


    void SetupUart0 (void)

    #if defined (target_IS_TM4C129_RA0)||\
    已定义(TARGET_IS_TM4C129_RA1)||\
    已定义(TARGET_IS_TM4C129_RA2)
    uint32_t ui32SysClockFreqHz;
    #endif
    uint32_t SysClockFreqHz;
    SysClockFreqHz = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);

    //
    //启用用于 UART0引脚的 GPIO 端口 A。
    // TODO:将其更改为您正在使用的 GPIO 端口。
    SysCtlPeripheralEnable (GPIO_Porta_base);

    //
    //启用 UART0以便我们可以配置时钟。
    //

    SysCtlPeripheralEnable (SYSCTL_Periph_UART0);
    while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOA))

    //
    //为端口 A0和 A1上的 UART0功能配置引脚复用。
    //如果您的器件不支持引脚复用、则无需执行此步骤。
    // TODO:更改此选项以选择您正在使用的端口/引脚。
    //
    GPIOPinConfigure (GPIO_PA0_U0RX);
    GPIOPinConfigure (GPIO_PA1_U0TX);

    //GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);

    //设置 UART 的配置

    UARTConfigSetExpClk (UART0_BASE、SysClockFreqHz、115200、(UART_CONFIG_PAR_NONE | UART_CONFIG_STOP_ONE | UART_CONFIG_WLEN_8));

    //将 UART 设置为在 Tx FIFO 几乎为空或接收到任何字符时中断
    UARTFIFOEnable (UART0_BASE);
    //UARTFIFOLevelSet (UART0_BASE、UART_FIFO_TX1_8、UART_FIFO_RX1_8);

    //启用 UART
    UARTEnable (UART0_BASE);

    // IntEnable (INT_UART0);
    // UARTIntEnable (UART0_BASE、UART_INT_RX | UART_INT_RT | UART_INT_TX);
    UARTStdioConfig (0、115200、40000000);

    不会从中产生  

    (while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOA)))

    })这个循环。

    我有一些类似的东西

    Cortex_M4_0:GEL 输出:
    内存映射初始化完成
    Cortex_M4_0:读取长度为0x4的第0页上0x4000c000处的存储器块时出现问题:发生调试端口错误。
    Cortex_M4_0:读取长度为0x4的第0页上0x4000c004处的存储器块时遇到问题:发生调试端口错误。
    Cortex_M4_0:读取长度为0x4的第0页上0x4000c004处的存储器块时遇到问题:发生调试端口错误。
    Cortex_M4_0:读取长度为0x4的第0页上0x4000c018处的内存块时出现问题:发生调试端口错误。
    Cortex_M4_0:读取长度为0x4的第0页上0x4000c020处的存储器块时出现问题:发生调试端口错误。

    如何解决此问题。

    谨随信

    Imtiaj

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    实际上、您的代码有几个问题。 您好像采用了一个工作示例并进行了更改。 如果不起作用、您进行了更多更改。  

    第一个错误是在启用到 GPIOA 的时钟时使用了错误的参数。 它应该是:

    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
    

    不是:

    SysCtlPeripheralEnable (GPIO_Porta_base); 

    您有几个不必要的 UART 调用,但使用 错误的频率值调用 UARTStdioConfig()。

    我建议您返回到 TivaWare 中的这个示例、从那里开始。

    C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c129exl\hello