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.
工具/软件:Code Composer Studio
大家好、
我的项目使用 TMS320F28377S、在这种情况下、我需要使用 UART 通信进行传输和接收。
我尝试了 C2000示例代码、传输正常、接收中断不工作。 使用示波器检查在接收引脚(43)处接收到的数据、但中断不会生成。
帮助我解决这个问题。
此致、
Yuvaraj
我的代码是
#include "driverlib.h"
#include "device.h"
#include "Macro.h"
#include "Xvar.h"
#include "com.h"
_interrupt void sciaTXFIFOISR (void);
_interrupt void sciaRXFIFOISR (void);
void initSCIAFIFO (void);
void 错误(void);
void data_to_port (unsigned char);
void sci_init();
unsigned char s_bytes;
void sci_init()
{
GPIO_setMasterCore (90、GPIO_CORE_CPU1);
GPIO_setPinConfig (GPIO_90_GPIO90);
GPIO_setDirectionMode (90、GPIO_DIR_MODE_OUT);
GPIO_setPadConfig (90、GPIO_PIN_TYPE_STD);
GPIO_setMasterCore (43、GPIO_CORE_CPU1);
GPIO_setDirectionMode (43、GPIO_DIR_MODE_IN);
GPIO_setPinConfig (GPIO_43_SCIRXDA);
GPIO_setPadConfig (43、GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode (43、GPIO_QUAL_异 步);
GPIO_setMasterCore (42、GPIO_CORE_CPU1);
GPIO_setPinConfig (GPIO_42_SCITXDA);
GPIO_setDirectionMode (42、GPIO_DIR_MODE_OUT);
GPIO_setPadConfig (42、GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode (42、GPIO_QUAL_异 步);
//此示例中使用的中断被重新映射到
//此文件中的 ISR 函数。
interrupt_register (INT_SCIA_RX、sciaRXFIFOISR);
interrupt_register (INT_SCIA_TX、sciaTXFIFOISR);
//初始化设备外设:
initSCIAFIFO();
rDataPointA = sDataA[0];
INTERRUPT_ENABLE (INT_SCIA_RX);
INTERRUPT_ENABLE (INT_SCIA_TX);
// Interrupt_disable (INT_SCIA_RX);
INTERRUPT_clearACKGROUP (INTERRUPT_ACK_group9);
}
// sciaTXFIFOISR - SCIA 发送 FIFO ISR
_interrupt void sciaTXFIFOISR (void)
{
SCI_writeCharArray (SCIA_BASE、sDataA、s_bytes);
SCI_clearInterruptStatus (SCIA_BASE、SCI_INT_TXFF);
//发出 PIE ACK
INTERRUPT_clearACKGROUP (INTERRUPT_ACK_group9);
对于(aa = 0;aa < 10000;aa++)
{
for (jj = 0;jj < 120;jjj++)
{
}
}
INTERRUPT_DISABLE (INT_SCIA_TX);
INTERRUPT_ENABLE (INT_SCIA_RX);
GPIO_writePin (41、0);
}
// sciaRXFIFOISR - SCIA 接收 FIFO ISR
_interrupt void sciaRXFIFOISR (void)
{
SCI_readCharArray (SCIA_BASE、rDataA、2);
SCI_clearOverflowStatus (SCIA_BASE);
SCI_clearInterruptStatus (SCIA_BASE、SCI_INT_RXFF);
//发出 PIE ACK
INTERRUPT_clearACKGROUP (INTERRUPT_ACK_group9);
}
// initSCIAFIFO -配置 SCIA FIFO
空 initSCIAFIFO()
{
// 8个字符位,1个停止位,无奇偶校验。 波特率为9600。
SCI_setConfig (SCIA_BASE、DEVICE_LSPCLK_FREQ、19200、(SCI_CONFIG_WLEN_8 | SCI_CONFIG_STOP_ONE |
SCI_CONFIG_PAR_NONE));
SCI_enableModule (SCIA_BASE);
// SCI_enableLoopback (SCIA_BASE);
SCI_resetChannels (SCIA_BASE);
SCI_enableFIFO (SCIA_BASE);
//启用 RX 和 TX FIFO 中断
SCI_enableInterrupt (SCIA_BASE、(SCI_INT_TXFF));
SCI_disableInterrupt (SCIA_BASE、SCI_INT_RXERR);
SCI_setFIFOInterruptLevel (SCIA_BASE、SCI_FIFO_TX2、SCI_FIFO_RX2);
SCI_performSoftwareReset (SCIA_BASE);
SCI_resetTxFIFO (SCIA_BASE);
// SCI_resetRxFIFO (SCIA_BASE);
}