你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

123
返回列表 发新帖
楼主: hificwc-319059

STM8外中断唤醒有问题

[复制链接]

5

主题

208

回帖

9

蝴蝶豆

论坛元老

最后登录
2020-11-25
发表于 2015-5-13 09:57:20 | 显示全部楼层
开定时器照样可以唤醒,实现功能:T2每进中断让PD口输出翻转,10次后进入halt,PB1外部中断唤醒,唤醒时让PC口翻转。看到的现象就是LED以1s间隔闪烁,闪10次后停机,用PB1按键唤醒后PC口输出取反,PD口LED接着闪烁。
void initcpu();
void Init_GPIO(void);
void delay(unsigned char ms);
void  Tim2INIT(void);
unsigned int i;
u8 TIM1S;

int main()
{
      Init_GPIO();  
      initcpu();
        Tim2INIT();
        enableInterrupts();
        while(1)
        {  
          if(TIM1S>10)
             {
               TIM1S=0;
               GPIOD->ODR=0x08;//进入Halt前关掉LED
               GPIOB->CR2=0x02; //PB1使能外部中断
               halt();  //进入halt模式
             }
        }
}

void Init_GPIO(void)
{
  GPIOB->DDR=0x00;
  GPIOB->CR1=0x02;  //PB1上拉输入
  GPIOB->CR2=0x00;  //PB禁止外部中断
  EXTI->CR1 = 0x08;  //PB1下降沿触发
  
  GPIOC->DDR=0x08;
  GPIOC->CR1=0x08;
  GPIOC->CR2=0x00;
  GPIOC->ODR=0x00;
  
  GPIOD->DDR=0x08;
  GPIOD->CR1=0x08;
  GPIOD->CR2=0x00;
  GPIOD->ODR=0x00;  //LED低亮
}
void initcpu()
{
       
        //CLK->CKDIVR&= (uint8_t)(~0x18);/*时钟复位*/
        CLK->CKDIVR= (uint8_t)0x01;   /*设置时钟为内部16M高速时钟*/
        disableInterrupts();  //close all interrupt
}


void delay(unsigned char i)
{
  unsigned int j;
  j=65535;
  while(i--)
  {
    while(j--);
  }
}
void  Tim2INIT(void)
{
        CLK->PCKENR1|=0x20;
        TIM2->ARRH=0xf4;
        TIM2->ARRL=0x24;
        TIM2->CNTRH=0x00;
        TIM2->CNTRL=0x00;
        TIM2->PSCR=0x08;//256分频
        TIM2->CR1=0x80;
        TIM2->EGR=0x00;
        TIM2->IER|=0x01;
        TIM2->CR1|=0x01;   
}

INTERRUPT_HANDLER(TIM2_UPD_OVF_TRG_BRK_IRQHandler,13)
{
      TIM2->SR1 &= 0xfe;
          TIM1S++;
       GPIOD->ODR=~GPIOD->ODR;
      return;
       
}

INTERRUPT_HANDLER(EXTI1_IRQHandler,4)  //PB1外部中断
{
       GPIOB->CR2=0x00; //PB禁止外部中断
       GPIOC->ODR=~GPIOC->ODR;
      return;
        
}
回复 支持 1 反对 0

使用道具 举报

0

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
2017-4-12
发表于 2017-3-6 11:42:58 | 显示全部楼层
zhuoyemp4 发表于 2015-5-13 09:57
开定时器照样可以唤醒,实现功能:T2每进中断让PD口输出翻转,10次后进入halt,PB1外部中断唤醒,唤醒时让P ...

顶你
回复 支持 反对

使用道具 举报

0

主题

1104

回帖

0

蝴蝶豆

金牌会员

最后登录
2019-3-29
发表于 2017-3-6 16:13:07 | 显示全部楼层
一般不会自动中断或关闭吧
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版