打印

求助

[复制链接]
2367|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
h0w1h2|  楼主 | 2010-4-18 10:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人采用stm8l,进入HALT低功耗状态,想用端口中断唤醒退出,其它端口中断没问题,唯独端口4  EXTI4 中断不行,不知为何?哪位大虾知道请指教
沙发
h0w1h2|  楼主 | 2010-4-18 10:18 | 只看该作者
补充一下,进入halt后,EXTI4就不能产生中断了,其它端口中断可以

使用特权

评论回复
板凳
huhu2009| | 2010-4-19 21:53 | 只看该作者
建议LZ先看看是不是硬件问题,会不会那根线虚焊了

使用特权

评论回复
地板
h0w1h2|  楼主 | 2010-4-20 08:56 | 只看该作者
不会虚焊,正常工作功耗下时EXIT4是可以中断的,只是在进入HALT后无法中断

使用特权

评论回复
5
静默| | 2010-4-20 10:12 | 只看该作者
经验证,EXIT4可唤醒MCU。
///// 定义
#define DOWN_BUTTON_PORT            GPIOD
#define DOWN_BUTTON_PIN             GPIO_Pin_4
///// 中断服务程序
void EXTI4_IRQHandler(void) interrupt 12
{
  /* Joystick DOWN button is pressed */
  PressedButton = BUTTON_DOWN;
  /* Cleat Interrupt pending bit */
  EXTI_ClearITPendingBit(EXTI_IT_Pin4);
}
////// 主程
  while (1)
  {
                halt();
    switch (PressedButton)
    {
      case BUTTON_KEY:
      {
        /* LD5 is green */
        STM_EVAL_LEDToggle(LED5);
        LCD_PrintString(LCD_LINE2, DISABLE, DISABLE, "Button:   KEY  ");
        PressedButton = NO_BUTTON;
        break;
      }
      case BUTTON_RIGHT:
      {
        /* Toggle LD1 */
        STM_EVAL_LEDToggle(LED1);
        LCD_PrintString(LCD_LINE2, DISABLE, DISABLE, "Button:   RIGHT");
        PressedButton = NO_BUTTON;
        break;
      }
      case BUTTON_LEFT:
      {
        /* Toggle LD2 */
        STM_EVAL_LEDToggle(LED2);
        LCD_PrintString(LCD_LINE2, DISABLE, DISABLE, "Button:   LEFT ");
        PressedButton = NO_BUTTON;
        break;
      }
      case BUTTON_UP:
      {
        /* Toggle LD3*/
        STM_EVAL_LEDToggle(LED3);
        LCD_PrintString(LCD_LINE2, DISABLE, DISABLE, "Button:   UP   ");
        PressedButton = NO_BUTTON;
        break;
      }
      case BUTTON_DOWN:
      {
        /* Toggle LD4*/
        STM_EVAL_LEDToggle(LED4);
        LCD_PrintString(LCD_LINE2, DISABLE, DISABLE, "Button:   DOWN ");
        PressedButton = NO_BUTTON;
        break;
      }
      case BUTTON_SEL:
      {
        /* LD5 toggle green/red */
        STM_EVAL_LEDToggle(LED5);
        LCD_PrintString(LCD_LINE2, DISABLE, DISABLE, "Button:   SEL  ");
        PressedButton = NO_BUTTON;
        break;
      }
      default:
      {
        break;
      }
    }

使用特权

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

本版积分规则

14

主题

39

帖子

0

粉丝