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.

cc3200的uart问题



TI工程师们:

   有点简单问题想请教你们下,我在uart接收中断中打印一个字符并中断中加入MAP_UARTIntClear后,程序只能进入一次中断就再也进不去了,不加MAP_UARTIntClear吧, 中断进个不停。这是还需要其他设置什么吗??  谢谢

  • 能否把你的整个代码段贴出来,这样比较好分析。

  • 你好:

    程序代码如下:

    void
    PinMuxConfig(void)
    {
        //
        // Configure PIN_55 for UART0 UART0_TX
        //
        MAP_PinTypeUART(PIN_55, PIN_MODE_3);

        //
        // Configure PIN_57 for UART0 UART0_RX
        //
        MAP_PinTypeUART(PIN_57, PIN_MODE_3);

    }


    static void UARTIntHandler()
    {
        unsigned long uflag;
        static int count = 0;
        uflag=MAP_UARTIntStatus(UARTA0_BASE, 1);
        Report("\n\ruart interrupt test: %d\n\r", count++);
        MAP_UARTIntClear(UARTA0_BASE, uflag);
    }


    void main()
    {
        //
        // Initailizing the board
        //
        BoardInit();

        MAP_PRCMPeripheralClkEnable(PRCM_UARTA0,PRCM_RUN_MODE_CLK);
        MAP_PRCMPeripheralReset(PRCM_UARTA0);

        PinMuxConfig();

        //
        // Register interrupt handler for UART
        //
        MAP_UARTIntRegister(UARTA0_BASE,UARTIntHandler);

        //
        // Enable DMA done interrupts for uart
        //
        MAP_UARTIntEnable(UARTA0_BASE,UART_INT_RX);

        //
        // Initialising the Terminal.
        //
        MAP_UARTConfigSetExpClk(CONSOLE,MAP_PRCMPeripheralClockGet(CONSOLE_PERIPH),
                                UART_BAUD_RATE,
                                (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
                                UART_CONFIG_PAR_NONE));
        
        UARTFIFOLevelSet(UARTA0_BASE,UART_FIFO_TX1_8,UART_FIFO_RX1_8);
        //
        // Clear terminal
        //
        ClearTerm();
        
        DisplayBanner("UartIntTest");

        Message("input char:");

        while(1);

    }}

  • 你本身用的就是UART0, 但是在中断处理函数里面你调用了Report("\n\ruart interrupt test: %d\n\r", count++);, 事实上Report也是用UART0打印。你这样是有问题的。

  • 去掉中断中的Report问题依旧哦

  • 请问 这个问题解决了没?

     MAP_UARTIntRegister(UARTA0_BASE,UARTIntHandler); 这个回调函数 是不是串口只要来数据,就会自动跳转到UARTIntHandler函数去啊, 我实验一直不执行UARTIntHandler这个函数,不回调。

  • 在中断中接收一下数据就不会

    UARTCharGet(UARTA0_BASE);

  • 我也有这个问题,从来不进入uartInthandler 回调函数,

    我设置了UART_INT_RX和UART_INT_OE 都不管用

    1.想问一下

    UART_INT_RX 理论上是不是只要接收到数据就中断

    UART_INT_OE 是在超过FIFO设置的level中断

    2.有什么原因可能导致从来不进UARTIntHandler

    我的代码跟楼主的基本相同