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.

[参考译文] CCS/AM3358:GPIO0中断未触发

Guru**** 2589280 points
Other Parts Discussed in Thread: SEGGER

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/640866/ccs-am3358-gpio0-interrupt-not-firing

器件型号:AM3358
主题中讨论的其他器件:SEGGER

工具/软件:Code Composer Studio

我是 BeagleBone Black Noob。 我必须修改一个现有的工作项目来响应 GPIO0.4上的外部中断

基本项目运行良好-我使用的是 CCS 7、3、0.00019以及使用 Segger J-link 进行编程和调试

我已经修改了工作例程"ioinit()",方法是添加您看到的与"//stife"窒息的行。

此外、这些其他子例程调用 位于程序的正文中

intAINTCInit();//called before the ioinit()

IntMasterIRQEnable();//之后调用

如果有人能找到我出错的地方、我将不胜感激。

我没有遇到编译错误、只是没有中断!

谢谢

Steve Robinson

这是修改后的"ioinit()"......

void ioinit (void)

//为 GPIO1实例启用时钟
GPIO1ModuleClkConfig();
GPIO0ModuleClkConfig();//Steve

//启用 GPIO1模块
GPIOModuleEnable (SOC_GPIO_1_regs);
GPIOModuleEnable (SOC_GPIO_0_regs);//Steve

//将 LED1配置为 GPIO (GPIO1_21/GPMC_A5)
HWREG (SOC_CONTRAL_REGS + CONTRAL_CONF_GPMC_A (5))= CONTRAL_CONF_MUXMODE (7);
//将 LED2配置为 GPIO (GPIO1_22/GPMC_A6)
HWREG (SOC_CONTRAL_REGS + CONTRAL_CONF_GPMC_A (6))= CONTRAL_CONF_MUXMODE (7);
//将 LED3配置为 GPIO (GPIO1_23/GPMC_A7)
HWREG (SOC_CONTRAL_REGS + CONTRAL_CONF_GPMC_A (7))= CONTRAL_CONF_MUXMODE (7);
//将 LED4配置为 GPIO (GPIO1_24/GPMC_A8)
HWREG (SOC_CONTRAL_REGS + CONTRAL_CONF_GPMC_A (8))= CONTRAL_CONF_MUXMODE (7);




HWREG (SOC_CONTRAL_REGS + GPIO_0_4)= CONTRAL_CONF_MUXMODE (7);//Steve

//Steve 将其配置为输入
GPIODirModeSet (SOC_GPIO_0_regs、4、GPIO_DIR_INPUT);//Steve
GPIOPinIntEnable (SOC_GPIO_0_regs、GPIO_INT_LINE_1、4);//Steve

GPIOIntTypeSet (SOC_GPIO_0_regs、4、GPIO_INT_TYPLE_FALL_EDGE);//Steve
IntSystemEnable (SYS_INT_GPIOINT0A);//Steve
IntPrioritySet (SYS_INT_GPIOINT0A、3、AINTC_HOSTINT_route _IRQ);//Steve
IntRegister (SYS_INT_GPIOINT0A、gpio0Isr);//Steve


//将 LED1配置为输出
GPIODirModeSet (SOC_GPIO_1_regs、21、GPIO_DIR_OUTPUT);
//将 LED2配置为输出
GPIODirModeSet (SOC_GPIO_1_regs、22、GPIO_DIR_OUTPUT);
//将 LED3配置为输出
GPIODirModeSet (SOC_GPIO_1_regs、23、GPIO_DIR_OUTPUT);
//将 LED4配置为输出
GPIODirModeSet (SOC_GPIO_1_regs、24、GPIO_DIR_OUTPUT);

。 这是我的服务例程

静态空 gpio0Isr (空)

//清除中断
GPIOPinIntClear (SOC_GPIO_0_regs、0、4);
GPIOPinIntEnable (SOC_GPIO_0_regs、0、4);
GPIOPinIntWakeUpEnable (SOC_GPIO_0_regs、0、4);
GPIOPinWrite (SOC_GPIO_1_regs、23、GPIO_PIN_HIGH);//查看是否发生

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您的问题最好由 Sitara 论坛中的专家回答。 我将把这个线程移到这里。

    谢谢
    Ki
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ki

    我没有触发中断

    我换了这条线路。。。

       HWREG (SOC_CONTRAL_REGS + GPIO_0_4)= CONTRAL_CONF_MUXMODE (7);//Steve

    有了这个…

     
                  HWREG (SOC_CONTRAL_REGS +  CONTRAL_CONF_SPI0_D1)=
                  (CONTRAL_CONF_SPI0_D1_CONF_SPI0_D1_SLEWCTRL |  //转换率缓慢*/
                   CONTRAL_CONF_SPI0_D1_CONF_SPI0_D1_RXACTIVE |   //启用接收器*
                   (CONTRAL_CONF_SPI0_D1_CONF_SPI0_D1_PUDEN &(~CONTRAL_CONF_SPI0_D1_CONF_SPI0_D1_PUDEN))|//* PU_PD 启用*
                   (CONTRAL_CONF_SPI0_D1_CONF_SPI0_D1_PUTYPESEL &(~CONTRAL_CONF_SPI0_D1_CONF_SPI0_D1_PUTYPESEL))|// PD *
                   (CONTRAL_CONF_MUXMODE (7))  //选择模式7 */
                   );

    有很多值得学习的东西!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    抱歉-拼写错误... 本该读了… 我现在有了要触发的中断

    我换了这条线路。。。

    HWREG (SOC_CONTRAL_REGS + GPIO_0_4)= CONTRAL_CONF_MUXMODE (7);//Steve

    有了这个…


    HWREG (SOC_CONTRAL_REGS + CONTRAL_CONF_SPI0_D1)=
    (CONTRAL_CONF_SPI0_D1_CONF_SPI0_D1_SLEWCTRL |//转换率缓慢*/
    CONTRAL_CONF_SPI0_D1_CONF_SPI0_D1_RXACTIVE |//启用接收器*
    (CONTRAL_CONF_SPI0_D1_CONF_SPI0_D1_PUDEN &(~CONTRAL_CONF_SPI0_D1_CONF_SPI0_D1_PUDEN))|//* PU_PD 启用*
    (CONTRAL_CONF_SPI0_D1_CONF_SPI0_D1_PUTYPESEL &(~CONTRAL_CONF_SPI0_D1_CONF_SPI0_D1_PUTYPESEL))|// PD *
    (CONTRAL_CONF_MUXMODE (7))//选择模式7 */
    );

    有很多值得学习的东西!