查看: 6067|回复: 0

[分享] LPC824 gpio中断配置指南

[复制链接]
  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    3946

    主题

    7567

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    40293
    最后登录
    2025-9-12
    发表于 2020-6-2 10:05:09 | 显示全部楼层 |阅读模式
    LPC824 gpio中断配置指南


    今天给大家分享一下LPC824 gpio中断是如何配置的,大家可作参考

    1. gpio4 做为PIN_INT0_IRQn
    中断初始化:
    1. //gpio4 作为eint0

    2.   NVIC_ClearPendingIRQ(PIN_INT0_IRQn);
    3.     NVIC_EnableIRQ(PIN_INT0_IRQn);  
    4.     //NVIC_EnableIRQ(PIN_INT4_IRQn);  
    5.     LPC_SYSCON->PDRUNCFG  &= ~WDT_OSC_PD;                               /* 运行WDT                      */
    6.     /*PIO4 低功耗初始化*/
    7.     LPC_SYSCON->PINTSEL0 = 4;      
    8.     // 中断0 对应的边缘触发
    9.     LPC_PIN_INT->ISEL   &= ~0x1;                                         /* 边沿触发                     */
    10.       LPC_PIN_INT->IENF   |=  0x1;                     // enable 中断0
    11.     LPC_PIN_INT->IST =0xff;                    //清所有中断状态reg

    12. 中断服务进程如下:

    13. void PIN_INT0_IRQHandler (void)
    14. {
    15.     LPC_PIN_INT->IST |=  (1<<0);                                          
    16. }
    复制代码
    2.  gpio28做为PIN_INT4_IRQn配置如下:
    1. #if 1 //add liuxd 20190327 reload vbus wakeup system
    2.     NVIC_ClearPendingIRQ(PIN_INT4_IRQn);  
    3.     axp173_irq_init();  
    4.     LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 6);  
    5.     LPC_GPIO_PORT->DIR0 &= ~(1<<28);         // io28 input  
    6.     NVIC_EnableIRQ(PIN_INT4_IRQn);
    7.     LPC_SYSCON->PINTSEL4 = 28;
    8.     LPC_PIN_INT->ISEL   &= ~0x10;         /* 边沿触发                     */
    9.     LPC_PIN_INT->IENF   |=  0x10;            //使用中断4
    10.     LPC_PIN_INT->IST = 0xff;                 //clear INT status
    11. #endif

    12. void PIN_INT4_IRQHandler (void)
    13. {
    14.     LPC_PIN_INT->IST |=  (1<<4);     
    15. }
    复制代码
    中断发生后一定要清中断,要不中断被占用后将不再发生中断!
    本案中用的pmu为axp173,可它的IRQ一直没有发生,原来不是中断被占用后将不再发生中断的原因,将中断全部清一下后ok

    清中断如下:
    1. static void axp173_irq_init(void)
    2. {
    3.       char buff[2] = {0};
    4.       buff[0] = 8;
    5.       i2c2_write_nbytes(0x34,0x40,buff,1); // INT Enable
    6.       buff[0] = 8;
    7.       i2c2_write_nbytes(0x34,0x41,buff,1); // INT Enable
    8.       buff[0] = 0;
    9.       i2c2_write_nbytes(0x34,0x42,buff,1); // INT Enable
    10.       buff[0] = 0;
    11.       i2c2_write_nbytes(0x34,0x43,buff,1); // INT Enable
    12.       
    13.       buff[0] = 0xff;
    14.       i2c2_write_nbytes(0x34,0x44,buff,1); //clear INT status
    15.       buff[0] = 0xff;
    16.       i2c2_write_nbytes(0x34,0x45,buff,1); //clear INT status
    17.       buff[0] = 0xff;
    18.       i2c2_write_nbytes(0x34,0x46,buff,1); //clear INT status
    19.       buff[0] = 0xff;
    20.       i2c2_write_nbytes(0x34,0x47,buff,1); //clear INT status
    21. }
    复制代码




    qiandao qiandao
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-12 12:01 , Processed in 0.083475 second(s), 19 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表