OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7447|回复: 1

直接上程序,寄存器操作的

[复制链接]

17

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2012-7-4
在线时间
21 小时
发表于 2012-10-29 16:20:50 | 显示全部楼层 |阅读模式

main()
{
 Clk_conf();
 uart_Init();
 All_Power_Button_Init();
 //SPI_Config();
 //SPI_FLASH_Init();
 _asm("rim");
 USART1_SendStr("start ok\r\n",10);
 //_asm("halt");
  while (1)
 {
    {
   static u32 i=0x20000;
   if((u32)(i--))
   {
    if(i==0)
    {
     USART1_SendStr("next\r\n",6);
     i=0x20000;
    }
   }
      if(wake_sleep_pin==0)
   {
    delay_ms(2000);
    if(wake_sleep_pin==0)
    {
     while(wake_sleep_pin==0);
     delay_ms(2000);
     E_CR2 |= (0x40);
     EXTI_CR2 |= (0x20);
     CFG_GCR=0x00;
      _asm("wfi"); 
         {
      pp1:
      {
       u8 wake_up_count=0;
 
       while(wake_up_count<5)
       {
        delay_ms(1000);
        wake_up_count++;
       }     
              if(wake_sleep_pin==0)
       {
        wake_up_count=0;
        USART1_SendStr("wake up\r\n",7);
        E_CR2 &= ~(0x40); 
       }
       else
       {
        E_CR2 |= (0x40);      
        EXTI_CR2 = (0x20);
        CFG_GCR=0x00;
        _asm("wfi"); 
        goto pp1;
       }
       }
          }     
    }
   }
  }
  }
}

/**************************外部中断6******************************/
@far @interrupt void External_interrupt_6 (void)
{
 EXTI_SR1=0xff;
 EXTI_SR2=0xff;
 E_CR2 &= ~(0x40);
 //if(wake_sleep_pin==0x00)
  return; 
}



问题:
1、每次复位,第一次可以进入休眠,进入休眠可以唤醒,但是第二次进入休眠,就唤醒不了了
2、第一次进入休眠,如果按键时间没到重新进入休眠,也唤醒不了了

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2012-7-4
在线时间
21 小时
 楼主| 发表于 2012-10-29 20:34:26 | 显示全部楼层
自己顶一下,已经搞定了!!呵呵
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-28 21:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表