代码如下 开启后调试无法进入中断函数 但在阻塞接收下测试接收没问题
/**
* main.c
*/
#include "device.h"
#include "driverlib.h"
#include <stdint.h>
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
//
// Globals
//
//
// Send data for SCI-A
//
uint16_t TX_Buf[2]={0xAA,0xBB};
//
// Received data for SCI-A
//
uint16_t RX_Buf[2]={0xFF,0xFF};
//
// Function Prototypes
//
__interrupt void sciaRXISR(void);
void initSCIA(void);
void error(void);
//
// error - Function to halt debugger on error
//
void error(void)
{
asm(" ESTOP0"); // Test failed!! Stop!
for (;;);
}
void Init_GPIO(void)
{
//
// GPIO28 is the SCI Rx pin.
//
GPIO_setPinConfig(DEVICE_GPIO_CFG_SCIRXDA);
GPIO_setDirectionMode(DEVICE_GPIO_PIN_SCIRXDA, GPIO_DIR_MODE_IN);
GPIO_setPadConfig(DEVICE_GPIO_PIN_SCIRXDA, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(DEVICE_GPIO_PIN_SCIRXDA, GPIO_QUAL_ASYNC);
//
// GPIO29 is the SCI Tx pin.
//
GPIO_setPinConfig(DEVICE_GPIO_CFG_SCITXDA);
GPIO_setDirectionMode(DEVICE_GPIO_PIN_SCITXDA, GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(DEVICE_GPIO_PIN_SCITXDA, GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode(DEVICE_GPIO_PIN_SCITXDA, GPIO_QUAL_ASYNC);
}
void initSCIA()
{
//
// 8 char bits, 1 stop bit, no parity. Baud rate is 9600.
//
SCI_setConfig(SCIA_BASE, DEVICE_LSPCLK_FREQ, 115200, (SCI_CONFIG_WLEN_8 |
SCI_CONFIG_STOP_ONE |
SCI_CONFIG_PAR_NONE));
SCI_enableModule(SCIA_BASE);
SCI_enableTxModule(SCIA_BASE);
SCI_enableRxModule(SCIA_BASE);
SCI_resetChannels(SCIA_BASE);
//
// RX Interrupts Enabled
//
SCI_enableInterrupt(SCIA_BASE, (SCI_INT_RXRDY_BRKDT));
// SCI_disableInterrupt(SCIA_BASE, SCI_INT_RXERR);
SCI_performSoftwareReset(SCIA_BASE);
}
void Init_SCI(void)
{
//
// Interrupts that are used in this example are re-mapped to
// ISR functions found within this file.
//
Interrupt_register(INT_SCIA_RX, sciaRXISR);
//
// Initialize the Device Peripherals:
//
initSCIA();
Interrupt_enable(INT_SCIA_RX);
Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP9);
SCI_readCharNonBlocking(SCIA_BASE);
}
void delay_ms(uint32_t ms)
{
while(ms--)
{
DEVICE_DELAY_US(1000);
}
}
int main(void)
{
//
// Initializes system control, device clock, and peripherals
//
Device_init();
Device_initGPIO();
Init_GPIO();
Init_SCI();
//
// Initializes PIE and clear PIE registers. Disables CPU interrupts.
// and clear all CPU interrupt flags.
//
Interrupt_initModule();
//
// Initialize the PIE vector table with pointers to the shell interrupt
// Service Routines (ISR).
//
Interrupt_initVectorTable();
//
// Enable Global Interrupt (INTM) and realtime interrupt (DBGM)
//
EINT;
ERTM;
delay_ms(10);
SCI_writeCharArray(SCIA_BASE, TX_Buf, 2);
while (1)
{
delay_ms(500);
SCI_writeCharArray(SCIA_BASE, RX_Buf, 1);
}
}
__interrupt void sciaRXISR(void)
{
SCI_readCharArray(SCIA_BASE, RX_Buf, 1);
// SCI_clearOverflowStatus(SCIA_BASE);
//
// SCI_clearInterruptStatus(SCIA_BASE, SCI_INT_RXRDY_BRKDT);
// //
// // Issue PIE ack
// //
// Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP9);
}