找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2127|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

STM8L低功耗 RTC和按鍵喚醒+串口發(fā)送ADC數(shù)據(jù), 喚醒后串口波特率不對(duì),發(fā)送...

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:409831 發(fā)表于 2021-6-23 10:07 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
  項(xiàng)目情況:     STM8L051F3 用的內(nèi)部晶振,3.3V電池供電。PB0\PB1\PB2\PB3引腳接4個(gè)按鍵,串口用PA2\PA3.    采用ACTIVE HALT低功耗模式。
                        用RTC和pb引腳的4個(gè)線中斷來(lái)喚醒低功耗模式。   然后ADC采集電壓,通過(guò)串口發(fā)送出去。
  出現(xiàn)問(wèn)題:     喚醒后串口波特率不對(duì),發(fā)送數(shù)據(jù)不對(duì)。      電流一直在毫安級(jí)。  
void main(void)
{
  disableInterrupts();            //關(guān)閉系統(tǒng)總中斷
  CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); //內(nèi)部時(shí)鐘為1分頻 = 16Mhz
  RTC_CLOCK_Init();
  PWR_FastWakeUpCmd(ENABLE);  //快速喚醒使能
  CLK_HaltConfig(CLK_Halt_FastWakeup, ENABLE);
  IO_Config();
  UART1_Init(9600);

  USART_SendData8(USART1 , 0x55);   
  RTC_ITConfig(RTC_IT_WUT, ENABLE);//喚醒定時(shí)器中斷使能
  RTC_WakeUpCmd(ENABLE);//RTC喚醒使能
  enableInterrupts();   //使能系統(tǒng)總中斷
PWR_UltraLowPowerCmd(ENABLE);//超低功耗


    while (1)
  {
   CLK_PeripheralClockConfig(CLK_Peripheral_USART1 , DISABLE);
    RTC_SetWakeUpCounter(9150);
    RTC_WakeUpCmd(ENABLE);

    CLK_PeripheralClockConfig (CLK_Peripheral_ADC1,DISABLE);//開(kāi)啟ADC時(shí)鐘
    ADC_Cmd(ADC1,DISABLE);//ADC1使能
    CLK_PeripheralClockConfig(CLK_Peripheral_USART1 , DISABLE); //使能USART1時(shí)鐘
    USART_Cmd (USART1,DISABLE);//使能USART
    USART_ClearITPendingBit(USART1,USART_IT_RXNE);

    halt();
     Delay(1000);
    UART1_Init(9600);
     IO_Config();
      if(WAKRUP_flag>0X87)  
    {      


      Delay(1000);


      key_number=GPIO_ReadInputData(GPIOB);
      key_number=key_number&0x0F;

      USART_SendData8(USART1 , WAKRUP_flag);
       Delay(100);
       USART_SendData8(USART1 , key_number&0x0F);
        Delay(100);
      WAKRUP_flag=0;
    }
    if(RTC_flag==0X44)  
    {
       ADC_initc();
      RTC_flag=0;   
      Delay(100);

      key_number=GPIO_ReadInputData(GPIOB);
      key_number=key_number&0x0F;

      USART_SendData8(USART1 , 0xAA);
      ADCdata_get();   
      Delay(100);
      sendbyte(VoltageValue>>8);
      Delay(100);
      sendbyte(VoltageValue);
      Delay(200);
      sendbyte(key_number);
      Delay(200);         
      USART_SendData8(USART1 , 0xEE);   
      Delay(200);  
    }


  }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

板凳
ID:811711 發(fā)表于 2021-6-23 15:30 | 只看該作者
我尋思波特率不對(duì),這不改改波特率試一下?
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:123289 發(fā)表于 2021-6-23 15:22 | 只看該作者
自己先畫個(gè)流程圖,走通流程圖再討論你的程序。
程序習(xí)慣不好。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表