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.
工具与软件:
尊敬的团队:
我有 TMS320F28335、想要在 GPIO12、GPIO13和 GPIO16上配置外部中断 。
GPIO12和 GPIO13正常工作、但 GPIO16不工作。
下面是我的配置、请告诉我缺少什么配置。
此致、
Dipak
/** * @brief: External GPIO Interrupt ISR * @param[in] * @param[out] */ __interrupt void vGpioIntr1ISR(void) { if(++u16Int1counter>2000) { GpioDataRegs.GPBTOGGLE.bit.GPIO36 = 1; u16Int1counter= 0; } PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; } /** * @brief: External GPIO Interrupt ISR * @param[in] * @param[out] */ __interrupt void vGpioIntr2ISR(void) { if(++u16Int2counter>2000) { GpioDataRegs.GPBTOGGLE.bit.GPIO36 = 1; u16Int2counter= 0; } PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; } /** * @brief: External GPIO Interrupt ISR * @param[in] * @param[out] */ __interrupt void vGpioIntr3ISR(void) { if(++u16Int3counter>100) { GpioDataRegs.GPBTOGGLE.bit.GPIO50 = 1; u16Int3counter= 0; } PieCtrlRegs.PIEACK.all = PIEACK_GROUP12; } void vInitXInterruptConfig(void) { //============================================= External Interrupt ============================================================================================== // External Interuupt //dsp_pwm_rx1 : GPIO12 //dsp_pwm_rx2: GPIO13 //dsp_pwm_rx3: GPIO16 EALLOW; PieVectTable.XINT1 = &vGpioIntr1ISR;// register ISR in interrupt vector table PieVectTable.XINT2 = &vGpioIntr2ISR; PieVectTable.XINT3 = &vGpioIntr3ISR; EDIS; PieCtrlRegs.PIECTRL.bit.ENPIE = 1;// Enable PIE block PieCtrlRegs.PIEIER1.bit.INTx4 = 1;// Enable PIE Group 1 INT4 PieCtrlRegs.PIEIER1.bit.INTx5 = 1;// Enable PIE Group 1 INT5 PieCtrlRegs.PIEIER1.bit.INTx6 = 1;// Enable PIE Group 1 INT6 IER |= M_INT1; // Enable CPU interrupt 1 EINT; // Enable Global Interrupt // // GPIO12, GPIO13 and GPIO16 are inputs // EALLOW; GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 0; GpioCtrlRegs.GPADIR.bit.GPIO12 = 0; GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 0; //Xint1 Synch to SYSCLKOUT only GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 0; GpioCtrlRegs.GPADIR.bit.GPIO13 = 0; GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 0; GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 0; GpioCtrlRegs.GPADIR.bit.GPIO16 = 0; GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 0; // // Each sampling window is 510*SYSCLKOUT // GpioCtrlRegs.GPACTRL.bit.QUALPRD0 = QUAL_PERIOD_CONFIG;//Each Sample window is 510*SYSCLKOUT EDIS; EALLOW; GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL = 12; //tag XINT1 interrupt with GPIO12 GpioIntRegs.GPIOXINT2SEL.bit.GPIOSEL = 13; //tag XINT2 interrupt with GPIO13 GpioIntRegs.GPIOXINT3SEL.bit.GPIOSEL = 16; //tag XINT3 interrupt with GPIO16 EDIS; XIntruptRegs.XINT1CR.bit.POLARITY = 1;//Detect interrupt on rising edge of GPIO12 XIntruptRegs.XINT2CR.bit.POLARITY = 1;//Detect interrupt on rising edge of GPIO13 XIntruptRegs.XINT3CR.bit.POLARITY = 1;//Detect interrupt on rising edge of GPIO16 XIntruptRegs.XINT1CR.bit.ENABLE = 1; //Enable XINT1 XIntruptRegs.XINT2CR.bit.ENABLE = 1; //Enable XINT2 XIntruptRegs.XINT3CR.bit.ENABLE = 1; //Enable XINT3 }
尊敬的 Dipak:
配置看起来还可以、除了:QUALPRD0只用于 GPIO0-7、而使用的是 GPIO12、13和16。
您能用 GPIO12或 GPIO13尝试使用 XINT 吗?看看这是否适合您。
然后、你还可以分配 GPIO16 XINT1、看看这是否对你有用
谢谢
Prarthan、您好!
好的,谢谢你的答复!
-Dipak
GPIO 32到63可以配置为外部中断3到7、正确吗?
这就是 MCU 的设计方式
[报价 userid="512045" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1433424/tms320f28335-gpio16_external-interrupt-is-not-working/5613828 #5613828"]我使用 GPIO 16作为外部中断。您可以仅将 GPIO16与 XINT1-2实例配合使用
谢谢