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.
代码如下 开启后调试无法进入中断函数 但在阻塞接收下测试接收没问题
/** * 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); }
您好,
我们正在调查
您能解释更多您看到的内容吗? 您是否设置了断点并且未看到代码进入断点? 您在 ISR 中注释掉了中断确认、这是有意为之吗? 如果您希望接收下一个 ISR、则需要进行确认。 通过添加 ISR 计数器(每次运行 ISR 函数时递增)、有助于验证 ISR 是否正在运行
您能解释更多您看到的内容吗? 您是否设置了断点并且未看到代码进入断点? 您在 ISR 中注释掉了中断确认、这是有意为之吗? 如果您希望接收下一个 ISR、则需要进行确认。 通过添加 ISR 计数器(每次运行 ISR 函数时递增)、有助于验证 ISR 是否正在运行