打印
[STM8]

求救,关于stm8s外部中断的问题

[复制链接]
1442|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
coderdd|  楼主 | 2017-2-22 19:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 coderdd 于 2017-10-12 10:35 编辑

现在遇到一个问题,单片机平时是休眠状态,按键低电平触发stm8s外部中断唤醒,效果是没有问题的。但是唤醒后我不想让按键继续再进入外部中断了,所以把按键部分的IO口设置为无中断模式,然后每次进入休眠的时候再修改为有中断模式。测试的结果是不稳定,每次休眠都可以进入,但是有时候却唤不醒啊!!下面贴代码:void Off_Halt_IO()//退出低功耗设置
{
  GPIO_Init(GPIOE, GPIO_PIN_1, GPIO_MODE_IN_PU_NO_IT);
  GPIO_Init(GPIOE, GPIO_PIN_2, GPIO_MODE_IN_PU_NO_IT);
  GPIO_Init(GPIOE, GPIO_PIN_0, GPIO_MODE_IN_PU_NO_IT);
}
INTERRUPT_HANDLER(EXTI_PORTE_IRQHandler, 7)//E口外中断
{
  disableInterrupts();
  Off_Halt_IO();
  exit_interrpt_cout++;//Debug
  enableInterrupts();
}
void Halt_Setup()//进入低功耗前进行设置
{
  GPIO_Init(GPIOE, GPIO_PIN_1, GPIO_MODE_IN_PU_IT);//设置为可中断模式
  GPIO_Init(GPIOE, GPIO_PIN_2, GPIO_MODE_IN_PU_IT);
  GPIO_Init(GPIOE, GPIO_PIN_0, GPIO_MODE_IN_PU_IT);
}

大家看下有没有什么错误??

沙发
coderdd|  楼主 | 2017-2-22 19:20 | 只看该作者
如果不搞这些IO口的切换方式,貌似每次都可以唤醒,但是如何才能在非休眠模式下退出外部中断??

使用特权

评论回复
板凳
coderdd|  楼主 | 2017-2-23 07:57 | 只看该作者

使用特权

评论回复
地板
coderdd|  楼主 | 2017-2-23 09:20 | 只看该作者
好吧,找到头绪了,仿真的时候发现的,原来每次设置IO为可中断模式时,它居然就自动跳到外中断一次,不过IO电平肯定是稳定的,平时也不会乱跳,只有设置的时候不知道为啥会跳到外中断。现在设置IO前先关闭所有中断,设置好后再开中断暂时解决,但是不知道内部的原因是什么??

使用特权

评论回复
5
皈依| | 2017-2-23 17:10 | 只看该作者
coderdd 发表于 2017-2-23 09:20
好吧,找到头绪了,仿真的时候发现的,原来每次设置IO为可中断模式时,它居然就自动跳到外中断一次,不过IO ...

一般来说是要清除中断标志位的 但是stm8s是没有的 所以你的做法是对的

使用特权

评论回复
6
wahahaheihei| | 2017-2-23 21:46 | 只看该作者
楼主的做法是对的,就是这么个操作顺序。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

385

帖子

11

粉丝