完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
测试情况:测试IC: M0516LDN, NUC029.
(1)单独使用GPIO P2P3P4中断可以正常唤醒; (2)使用EXINT0和Exint1外部中断可以正常唤醒; (3)GPIO P2P3P4中断和两个外部中断同时使用,只有外部中断能够唤醒; 问题: 需要GPIO P2P3P4和外部中断都可以唤醒。 |
|
相关推荐
1个回答
|
|
您可以尝试以下步骤来实现GPIO P2P3P4和外部中断都可以唤醒:
1. 配置GPIO P2P3P4为中断模式,使其能够产生中断。 2. 配置两个外部中断(EXINT0和Exint1)。 3. 在外部中断和GPIO中断的中断服务程序中都使用PWRON函数使芯片进入待机模式; 4. 在主函数中使芯片进入待机模式前,先使能外部中断和GPIO中断,如下代码: ```c NVIC_EnableIRQ(GPIO_P2_IRQn); NVIC_EnableIRQ(GPIO_P3_IRQn); NVIC_EnableIRQ(GPIO_P4_IRQn); NVIC_EnableIRQ(EINT0_IRQn); NVIC_EnableIRQ(EINT1_IRQn); ``` 5. 进入待机模式: ```c CLK_PowerDown(); ``` 如果需要在唤醒后进行GPIO和外部中断的区分可以进行如下操作: 在唤醒时,在主函数中读取唤醒原因的标志位(PWRCU_GetFlagStatus()),判断是GPIO中断唤醒还是外部中断唤醒; 在唤醒后先清除中断标志位,在中断服务程序中进行响应。 ```c //GPIO中断服务程序 void GPIO_P2_IRQHandler(void) { //清除中断标志位 GPIO_ClearIntFlag(P2, BIT3); //执行相应操作 //... //使芯片进入待机模式 PWRON(); } //外部中断服务程序 void EINT0_IRQHandler(void) { //清除中断标志位 EXTI_ClearIntFlag(EXTI_EINT0); //执行相应操作 //... //使芯片进入待机模式 PWRON(); } ``` 希望这些提示能够帮助到您实现GPIO P2P3P4和外部中断都可以唤醒。 |
|
|
|
只有小组成员才能发言,加入小组>>
3124 浏览 9 评论
2820 浏览 16 评论
3333 浏览 1 评论
8704 浏览 16 评论
3922 浏览 18 评论
9541浏览 3评论
875浏览 3评论
445浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
448浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2172浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-16 07:56 , Processed in 0.896873 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号