传承剑圣

    1. Jlink v8刷固件 7/6668 Microchip MCU 2015-09-22
      额,我试试XP
    2. 其实个人也做了规避措施,做法是这样的。 红外POWER键长按5秒关机之后,我会关闭定时器不再捕获红外信号,然后延时300ms, 然后再来配置红红外接收头的GPIO,EXTI,NVIC,这样就没有出现那个现象了。 但是这只是一个规避措施,还是不知道为什么会发生那样的现象。真是如鲠在喉啊 看大家有无想法。
    3. 其实,代码单独抠出来,测试应该是没有问题的。 可能跟我的工程有关。 业务上是这样的, 在程序正常运行的时候,红外接收头的GPIO被定义为定时器捕获的输入,红外POWER键长按5秒之后关机, 在关机之前,将红外接收头的GPIO配置为外部中断(因为停止模式只能由外部中断唤醒或者RTC、USB等唤醒) 然后休眠后,就可以由红外信号唤醒MCU,唤醒后再把红外接收头的GPIO被定义为定时器捕获的输入。 为什么有时候唤不醒,个人推测原因: 在红外POWER键长按的时候,定时器捕获中断一直在触发,当确定收到POWER键长按5秒信号之后关机。 但是手不一定会立刻放开POWER键,所以定时器捕获中断一直在触发,但是在这个时候,我们又在重新配置 红外接收头的GPIO,EXTI,NVIC。所以我推测这里出现了问题。说简单一点就是,在中断函数不断触发的同时 我们在配置它的中断模式,NVIC,这样导致了矛盾。 这只是我的推测,不知大家有何看法。 另外加一条,在我实验的时候发现,虽然在休眠,但是可以响应外部中断(会执行中断服务函数),但就是唤不醒
    4. weizhongc 发表于 2015-8-25 10:19  
      帅锅,我用的是停止模式 PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);//进入停止模式
    5. 关于STM32程序,不使用的GPIO如何处理 13/3083 stm32/stm8 2015-09-06
      huo_hu 发表于 2015-8-25 23:47 晕,你怎么不说jtag
      后续的省略了,:lol 反正内容的位置都告诉你了,你可以去看看。。JTAG是有特别说明的。
    6. stop_mode:                                             #if DEBUG                                             printf("MCU Enter Stop Mode!\n");                                             #endif //本人测试发现,在这里加上 RTC_Configuration(); //则可以避免该现象                                                                                        //set the all GPIO as general GPIO 、remap IRDA in EXIT0 and disable TIM4 interrupt                                             lowLevelGPIOCfg();  //将一些GPIO打到低电平,避免休眠耗电                         ADC_Cmd(ADC1, DISABLE);//关闭ADC 其中函数定义: void RTC_Configuration(void) {                         // Allow access to BKP Domain         PWR_BackupAccessCmd(ENABLE);         // Reset Backup Domain         //BKP_DeInit();         // Enable LSE         RCC_LSEConfig(RCC_LSE_ON);         // Wait till LSE is ready         while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)         {         }         // Select LSE as RTC Clock Source         RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);         // Enable RTC Clock         RCC_RTCCLKCmd(ENABLE);         // Wait for RTC registers synchronization         RTC_WaitForSynchro();         // Wait until last write operation on RTC registers has finished         RTC_WaitForLastTask();         // Enable the RTC Alarm         //RTC_ITConfig(RTC_IT_ALR, ENABLE);         // Wait until last write operation on RTC registers has finished         //RTC_WaitForLastTask();         // Set RTC prescaler: set RTC period to 1 sec         // RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1)         RTC_SetPrescaler(32767);         // Wait until last write operation on RTC registers has finished         RTC_WaitForLastTask();         //GPS复用PC13         BKP_TamperPinCmd(DISABLE);  //关闭入侵检测功能,也就是 PC13,也可以当普通IO使用         BKP_ITConfig(DISABLE); } 但是函数里面存在备份寄存器的复位,会丢掉所有备份寄存器的值,唉,其实不知道根本原因在哪里
    7. 第一次进入休眠后,有概率无法被外部中断唤醒(我配置的所有的外部中断)
    8. 关于STM32程序,不使用的GPIO如何处理 13/3083 stm32/stm8 2015-08-24
      不能上传本地图片。 在STM32中文参考手册V10 第70页底部 有这么一段话 复位期间和刚复位后,复用功能未开启, I/O端口被配置成浮空输入模式(CNFx[1:0]=01b, MODEx[1:0]=00b)。 复位后, JTAG引脚被置于输入上拉或下拉模式: ─ PA15: JTDI 置于上拉模式 ─ PA14: JTCK 置于下拉模式 ─ PA13: JTMS 置于上拉模式 ─ PB4: JNTRST 置于上拉模式
    9. 关于STM32程序,不使用的GPIO如何处理 13/3083 stm32/stm8 2015-08-24
      各位,我查到了。。给你们看看
    10. 关于STM32程序,不使用的GPIO如何处理 13/3083 stm32/stm8 2015-08-24
      huaiqiao 发表于 2015-8-24 10:00 看要写什么程序了。它的处理方式有两种方法:1. 寄存器方式;2. 库函数方式。但是最常用的就是库函数方式了 ...
      。。。 晕,我问不用的GPIO要设置成什么状态,,是浮空输入,还是推挽输出。。。或者其他六种方式。。
    11. 关于STM32程序,不使用的GPIO如何处理 13/3083 stm32/stm8 2015-08-24
      huo_hu 发表于 2015-8-24 11:29 既然不用管它干嘛
      因为这个考虑到硬件的安全性,硬件工程师,跟我说,一定要给一个确定的状态。不能不管。
    12. 关于STM32程序,不使用的GPIO如何处理 13/3083 stm32/stm8 2015-08-24
      因为这个考虑到硬件的安全性,硬件工程师,跟我说,一定要给一个确定的状态。不能不管。。

最近访客

< 1/1 >

统计信息

已有2人来访过

  • 芯积分:--
  • 好友:--
  • 主题:3
  • 回复:12

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言