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.
//############################################################################# // // FILE: UART_ex1_echoback.c // // TITLE: UART echoback example. // //! \addtogroup driver_example_cm_list //! <h1>UART Echoback</h1> //! //! This test receives and echo-backs data through the UART0 port. //! //! A terminal such as 'putty' can be used to view the data from //! the CM-UART and to send information to the CM-UART. Characters //! received by the CM-UART port are sent back to the host. //! //! \b Running \b the \b Application //! Open a COM port with the following settings using a terminal: //! - Find correct COM port //! - Bits per second = 115200 //! - Data Bits = 8 //! - Parity = None //! - Stop Bits = 1 //! - Hardware Control = None //! //! The program will print out a greeting and then ask you to //! enter a character which it will echo back to the terminal. //! //! \b Watch \b Variables \n //! - None //! //! \b External \b Connections \n //! Connect the UART0 port to a PC via a transceiver and cable. //! - GPIO85 is UART0RX/CMUARTRXA(Connect to Pin3, PC-TX, of serial DB9 cable) //! - GPIO84 is UART0TX/CMUARTTXA(Connect to Pin2, PC-RX, of serial DB9 cable) //! //! \note The pin muxing for the UART0 port needs to be done by the master //! CPU1. The common configuration example provided in the C28x folder can be //! used for making GPIO85 as the UART Rx pin and GPIO84 as the UART Tx pin. // //############################################################################# // $TI Release: F2838x Support Library v3.03.00.00 $ // $Release Date: Sun Oct 4 16:00:36 IST 2020 $ // $Copyright: // Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com/ // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the // distribution. // // Neither the name of Texas Instruments Incorporated nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // $ //############################################################################# // // Included Files // #include <stdint.h> #include <stdbool.h> #include "cm.h" // // Defines // #define NUM_UART_DATA 4 uint16_t count,i,Data[100]; __interrupt void UART_RX_IntHandler(void); // // Main // void main(void) { // // disable WD, enable peripheral clocks. // CM_init(); // // Configure UART0 for echoback.Set up to transfer data at 115200 baud. // UART_setConfig(UART0_BASE,UART_CLK_FREQ , 115200,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE)); // // Put a character to show start of example. This will display on the // terminal. // UART_writeChar(UART0_BASE, '!'); // // Enable the UART0 interrupt on the processor (NVIC). // UART_registerInterrupt(INT_UART0,UART_RX_IntHandler); // // FIFO enable // UART_enableFIFO(UART0_BASE); // // FIFO interrupt levels are set to generate an interrupt // when the TX FIFO is less than or equal to 7/8 empty and the // RX FIFO is greater than or equal to 1/8 full. // UART_setFIFOLevel(UART0_BASE, UART_FIFO_TX1_8, UART_FIFO_RX1_8); // // FIFO receive interrupt configuration // UART_clearInterruptStatus(UART0_BASE,UART_INT_RX | UART_INT_RT); UART_enableInterrupt(UART0_BASE,UART_INT_RX); UART_enableLoopback(UART0_BASE); // // Loop forever echoing data through the UART. for(i=0;i<9;i++) { UART_writeChar(UART0_BASE, i); } while(1) { } } __interrupt void UART_RX_IntHandler(void) { uint32_t ui32Status; // // Get the interrupt status. // ui32Status = UART_getInterruptStatus(UART0_BASE, UART_RAW_INT); // // Clear the asserted interrupts. // UART_clearInterruptStatus(UART0_BASE, ui32Status); // // Loop while there are characters in the receive FIFO. // while(UART_isDataAvailable(UART0_BASE)) { // // // Read the next character from the UART and write it back to the UART. // // // UART_writeCharNonBlocking(UART0_BASE, // UART_readCharNonBlocking(UART0_BASE)); Data[count] = UART_readChar(UART0_BASE); } count++; } // // End of File //
//############################################################################# // // FILE: UART_ex1_echoback.c // // TITLE: UART echoback example. // //! \addtogroup driver_example_cm_list //! <h1>UART Echoback</h1> //! //! This test receives and echo-backs data through the UART0 port. //! //! A terminal such as 'putty' can be used to view the data from //! the CM-UART and to send information to the CM-UART. Characters //! received by the CM-UART port are sent back to the host. //! //! \b Running \b the \b Application //! Open a COM port with the following settings using a terminal: //! - Find correct COM port //! - Bits per second = 115200 //! - Data Bits = 8 //! - Parity = None //! - Stop Bits = 1 //! - Hardware Control = None //! //! The program will print out a greeting and then ask you to //! enter a character which it will echo back to the terminal. //! //! \b Watch \b Variables \n //! - None //! //! \b External \b Connections \n //! Connect the UART0 port to a PC via a transceiver and cable. //! - GPIO85 is UART0RX/CMUARTRXA(Connect to Pin3, PC-TX, of serial DB9 cable) //! - GPIO84 is UART0TX/CMUARTTXA(Connect to Pin2, PC-RX, of serial DB9 cable) //! //! \note The pin muxing for the UART0 port needs to be done by the master //! CPU1. The common configuration example provided in the C28x folder can be //! used for making GPIO85 as the UART Rx pin and GPIO84 as the UART Tx pin. // //############################################################################# // $TI Release: F2838x Support Library v3.03.00.00 $ // $Release Date: Sun Oct 4 16:00:36 IST 2020 $ // $Copyright: // Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com/ // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // // Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the // distribution. // // Neither the name of Texas Instruments Incorporated nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // $ //############################################################################# // // Included Files // #include <stdint.h> #include <stdbool.h> #include "cm.h" // // Defines // #define NUM_UART_DATA 4 uint16_t count,i,Data[100]; __interrupt void UART_RX_IntHandler(void); // // Main // void main(void) { // // disable WD, enable peripheral clocks. // CM_init(); // // Configure UART0 for echoback.Set up to transfer data at 115200 baud. // UART_setConfig(UART0_BASE,UART_CLK_FREQ , 115200,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE)); // // Put a character to show start of example. This will display on the // terminal. // // UART_writeChar(UART0_BASE, '!'); // // Enable the UART0 interrupt on the processor (NVIC). // UART_registerInterrupt(INT_UART0,UART_RX_IntHandler); // // FIFO enable // UART_enableFIFO(UART0_BASE); // // FIFO interrupt levels are set to generate an interrupt // when the TX FIFO is less than or equal to 7/8 empty and the // RX FIFO is greater than or equal to 1/8 full. // UART_setFIFOLevel(UART0_BASE, UART_FIFO_TX1_8, UART_FIFO_RX1_8); // // FIFO receive interrupt configuration // UART_clearInterruptStatus(UART0_BASE,UART_INT_RX | UART_INT_RT); UART_enableInterrupt(UART0_BASE,UART_INT_RX); UART_enableLoopback(UART0_BASE); // // Loop forever echoing data through the UART. for(i=0;i<9;i++) { UART_writeChar(UART0_BASE, i); } while(1) { } } __interrupt void UART_RX_IntHandler(void) { uint32_t ui32Status; // // Get the interrupt status. // ui32Status = UART_getInterruptStatus(UART0_BASE, UART_RAW_INT); // // Clear the asserted interrupts. // UART_clearInterruptStatus(UART0_BASE, ui32Status); // // Loop while there are characters in the receive FIFO. // // while(UART_isDataAvailable(UART0_BASE)) // { // // // Read the next character from the UART and write it back to the UART. // // // UART_writeCharNonBlocking(UART0_BASE, // UART_readCharNonBlocking(UART0_BASE)); Data[count] = UART_readChar(UART0_BASE); // } count++; } // // End of File //
取消 while(UART_isDataAvailable(UART0_BASE))后变奇数但最后一次发送为什么不触发中断?实际测试过程也是少接收一个字节数据
取消 while(UART_isDataAvailable(UART0_BASE))后变奇数但最后一次发送为什么不触发中断?
您现在使用的是controlcard?直接测试例程是测试成功了?
对于controlcard,可以将 GPIO 84 连接到 GPIO 29,将 GPIO 85 连接到 GPIO 28,以便您可以使用控制卡的内部 ftdi 转换器并尝试运行串行终端。请注意,您可以运行相同的引脚复用器配置(84,85)和示例,因为 GPIO 28、29 硬连线到内部 ftdi。
您也可以在CCS Debug Session -> View -> Terminal -> Connect Serial Terminal 中打开串口终端(设置波特率参数,点击确定)。
这是一个字符回显的例程。不太理解您所说的偶次是什么意思