赛元单片机提供多个外部中断口 INT0~INT2,当外部中断口有中断条件发生时,外部 中断就发生了。其中 INT0 和 INT1 会产生中断标志为 IE0/IE1,正常情况下用户不需要处 理,硬件会自动清除。外部中断使用时,用户可以根据需要设成上升沿、下降沿或者双沿中 断,可通过设置 SFR(INTxF 和 INTxR)来实现。外部中断 INT0~2 还可以唤醒单片机的 STOP。
本文档主要是包含外部中断在使用过程中的相关注意事项以及常见问题,主要包含以下 几个内容:
1、外部中断注意事项;
2、同时使用同组的多个外部中断口时,应该如何判断外部中断的中断触发源;
3、使用外部中断后出现死机或复位的现象是什么原因;
4、使用外部中断唤醒低功耗时,出现无法唤醒的现象是什么原因;
5、使用触摸按键唤醒低功耗的库时,同时使用外部中断唤醒,触摸按键出现无响应的情况 是什么原因。
以下为具体内容:
1、外部中断注意事项
1) 在使用外部中断功能时,请将对应的 IO 口设置为输入模式;
2) IO 口模式需要先设置,再进行相应的外部中断配置,反过来操作有可能会误产生一 次边沿中断;
3) 同组外部中断共用一个中断向量,如果同时使用了同一组外部中断的多个中断口,用 户需要在中断服务函数内读取 IO 口电平,判断中断的来源,再执行对应的操作;
4) 当用户程序在初始化完外部中断 0/1 后(除 SC92F732X 和 SC92F725X 外),若后 续程序中有操作到 TCON 的 TR1、TR0、TF1、TF0 位的场合,需要在外部中断 0/1 的中断服务函数内手动清除外部中断标志,否则可能会导致外部中断标志位无法硬件 清除;
5) 使用 SC92F732X 和 SC92F725X 时,当用户程序在初始化完外部中断 0/1 后,若后 续程序中有操作到 TCON 的 TR1、TR0、TF1、TF0 位的场合,外部中断 0/1 只能使 用其中一个,同时外部中断服务函数内需要手动清除两个外部中断标志,否则会导致 外部中断标志位无法硬件清除。(若后续程序不需要操作到 TCON 寄存器的则可以同 时使用外部中断 0 和 1,不需要软件清除标志)。
2、同时使用同组的多个外部中断口时,应该如何判断外部中断的中断触发源
同组外部中断共用一个中断向量,如果同时使用了同一组外部中断的多个中断口,用户 可以在中断服务函数内读取 IO 口电平,判断中断的来源,再执行对应的操作。
3、使用外部中断后出现死机或复位的现象是什么原因
检查用户程序在初始化完外部中断 0/1 后,后续程序中是否有操作到 TCON 的 TR1、 TR0、TF1、TF0 位的场合,如果有的话,需要在外部中断服务函数内手动清除外部中 断标志,否则可能会导致外部中断标志无法硬件清除,导致频繁进入外部中断,从而表 现为死机或看门狗溢出复位的现象。
4、使用外部中断唤醒低功耗时,出现无法唤醒的现象是什么原因
使用外部中断无法唤醒低功耗时,可以从以下方面排查:
1) 检查外部中断是否产生,可以在外部中断服务函数里面加入 IO 口的翻转,通过测 试 IO 翻转确认是否有外部中断产生,如果没有外部中断产生就查看外部中断初始 化是否正确,总中断是否打开,外部中断口上是否有触发外部中断的波形;
2) 测试芯片功耗,查看有外部中断产生时芯片功耗是否有上升,看是否为芯片实际已 经从低功耗唤醒,只是没有唤醒的现象,例如:亮灯等;
3) 检查程序中是否唤醒又立马进入了低功耗模式,导致唤醒的时间太短,从而看不到 被唤醒的过程;
4) 检查用户在初始化完外部中断 0/1 后,后续的程序中是否有操作到 TCON 寄存器的 TR1、TR0、TF0、TF1,如果有的话,有可能会出现外部中断标志无法硬件清除, 导致频繁进入外部中断,从而表现为无法唤醒,需要在外部中断服务函数中手动清 除外部中断标志。
5、使用触摸按键唤醒低功耗的库时,同时使用外部中断唤醒,触摸按键出现无响应的情况是什么原因
使用触摸按键唤醒低功耗的库,同时使用外部中断唤醒,当使用外部中断唤醒时,触摸 按键会无响应,建议检查以下两个方面
1) 检查外部中断唤醒后,是否调用了 TouchKey_QuitLowPowerMode 函数;
2) 检查所使用的库文件是否为最新版本。 作者:赛元MCU平台 https://www.bilibili.com/read/cv23031194/ 出处:bilibili
|