STM8 halt模式下,RTC定时唤醒

2019-12-13 18:32发布

程序跑了三天死掉了,你们有用过这个功能吗?有没有尝试不死机的?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
@lonely
1楼-- · 2019-12-13 21:02
之前用stm8l052做过halt模式  附上大概代码

  1. void RTC_WakeUpClockConfig(unsigned char RTC_WakeUpClock)
  2. {
  3.   RTC_WPR = 0xCA;
  4.   RTC_WPR = 0x53;

  5.   RTC_CR2 &= (uint8_t)~RTC_CR2_WUTE_Bit2;

  6.   RTC_CR1 &= (uint8_t)~RTC_CR1_WUCKSEL_Bit2_0;

  7.   RTC_CR1 |= (uint8_t)RTC_WakeUpClock;

  8.   RTC_WPR = 0xFF;
  9. }


  10. void RTC_ITConfig(unsigned int  RTC_IT, unsigned char NewState)
  11. {
  12.   RTC_WPR = 0xCA;
  13.   RTC_WPR = 0x53;

  14.   if (NewState != DISABLE)
  15.   {
  16.       RTC_CR2  |= (uint8_t)((uint16_t)RTC_IT & (uint16_t)0x00F0);
  17.   }else
  18.   {
  19.        RTC_CR2  &= (uint8_t)~(uint8_t)((uint16_t)RTC_IT & (uint16_t)0x00F0);
  20.   }

  21.   RTC_WPR = 0xFF;
  22. }

  23. void main(void)
  24. {
  25.     asm("sim");
  26.     CLK_CRTCR = 0X00 | 0X04;//不分频 RTC->LIS
  27.    
  28.     CLK_PCKENR2 = 0x04;
  29.          
  30.     RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16);
  31.     RTC_ITConfig(RTC_IT_WUT,ENABLE);

  32.    asm("rim");
  33.    while(1)
  34.    {
  35.        asm("halt");
  36.    }//end while
  37.    
  38. }//end main





  39. //RTC 中断
  40. #pragma vector=6
  41. __interrupt void RTC_Happen(void)
  42. {
  43.      RTC_ISR1 = 0x00;
  44.      RTC_ISR2 = 0x00;
  45.      
  46.     PA_ODR_ODR3 = ~PA_ODR_ODR3;
  47.    
  48.   return;
  49. }












复制代码
lzg1987
2楼-- · 2019-12-13 21:27
 精彩回答 2  元偷偷看……

一周热门 更多>