完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
需要实现的功能:ADUCM360外接时钟,时钟定时中断引脚连接CPU的外部中断6,CPU不工作时进入睡眠模式,当时钟定时到达5分钟时,外部中断将CPU从睡眠模式唤醒,并执行一些测量运算,完成后继续进入睡眠模式,周而复始。
代码都是利用EVLES提供的库函数代码。 进入睡眠模式的代码如下: PwrCfg(PWRMOD_MOD_TOTALHALT); 外部中断设置如下: EiCfg(EXtiNT6,INT_EN,INT_RISE);//外部中断6,P1.6使能,上升沿触发 NVIC_EnableIRQ(EINT6_IRQn); //开启外部中断6使能 但是发现定时到达时间后,外部中断并未唤醒CPU执行其他操作。 问题是: 1.设置的代码是否有错误或者遗漏的地方? 2.外部中断是否上升沿或下降沿触发都可以? |
|
相关推荐
1个回答
|
|
ADUCM360的外部中断可以被配置为唤醒处理器从睡眠模式中。以下是将CPU从睡眠模式唤醒的步骤:
1. 配置外部中断引脚:将外部中断引脚连接到CPU的外部中断6引脚。使用EiCfg函数来配置外部中断6引脚为使能状态,并设置上升沿触发。 ```csharp EiCfg(EXTINT6,INT_EN,INT_RISE); // 外部中断6,P1.6使能,上升沿触发 ``` 2. 启用外部中断:使用NVIC_EnableIRQ函数来启用外部中断6。 ```csharp NVIC_EnableIRQ(EINT6_IRQn); // 开启外部中断6使能 ``` 3. 配置睡眠模式:使用PwrCfg函数来配置睡眠模式为总体停机模式(PWRMOD_MOD_TOTALHALT)。 ```csharp PwrCfg(PWRMOD_MOD_TOTALHALT); ``` 4. 进入睡眠模式:使用PwrCfg函数将CPU进入睡眠模式。 ```csharp PwrCfg(PWRMOD_MOD_TOTALHALT); ``` 5. 处理中断:在外部中断处理函数EINT6_IRQHandler中,进行测量运算。 ```csharp void EINT6_IRQHandler(void) { // 进行测量运算 // 清除中断标志位 EiClr(INTCLR_IRQ6); // 唤醒处理器继续工作 PwrCfg(PWRMOD_MOD_RUN); } ``` 6. 周而复始:在完成测量运算后,将处理器重新设置为睡眠模式。 ```csharp void main(void) { while(1) { // 进入睡眠模式 PwrCfg(PWRMOD_MOD_TOTALHALT); } } ``` 通过以上步骤,可以实现ADUCM360在睡眠模式下,通过外部中断6唤醒CPU并进行测量运算的功能,并在完成后继续进入睡眠模式,周而复始的运行。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12013 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 08:10 , Processed in 0.631681 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号