立即注冊 登錄
返回首頁

uid:114320的個人空間

日志

拋磚引玉篇 大牛來教我

已有 1186 次閱讀2016-5-10 01:22

#include "common.h"

common.h//#define BATTERY_CRITICAL  0x01------電池電力嚴重缺乏

             //#define BATTERY_LOW       0x02

#include "config/tx.h"

#include "music.h"

 

static u8 warned = 0;         

static u32 next_battery_warning = 0;

u8 BATTERY_Check()             //電池檢查函數(shù)

{

    u16 battery = PWR_ReadVoltage();        //讀取電源電壓的值給battery

u32 ms = CLOCK_getms();               //計算的時間給ms

// If battery is low or , was low and till under low + 200mV

//如果電池電量低,低到低電壓+ 200mV

if (battery < Transmitter.batt_alarm && !(warned & BATTERY_LOW))

如果 讀取電源電壓<發(fā)射機的警報電壓 0000&0010=0000)取非同時為真

{

        warned |= BATTERY_LOW; // Bat was low...//電池電壓低。

//之前有#define   BATTERY_LOW  0x02  0x02=0010(二進制)

//所以warned=0000|0010=0010

next_battery_warning = ms;

//next_battery_warning=ms=CLOCK_getms()下一次警告的時間

}

 else if (battery > Transmitter.batt_alarm + 200) 

//如果檢測到的電壓>發(fā)射機電池的警報電壓+200mV

{

        warned &= ~BATTERY_LOW; // Bat OK... reset  'was low' and counter..

}

//warned=0000warned&1101 ~BATTERY_LOW=0000

//如果battery < Transmitter.batt_alarm && !(warned & BATTERY_LOW)都滿足,則執(zhí)行{第一段程序},否則執(zhí)行{第二段程序}

 

 

 

//warnednext_battery_warning 為全局靜態(tài)變量,所以上個程序的warned不會得到釋放

//warned=0010(電池電壓低)或者wanred=0000(電池電壓還行)

//next_battery_warning =ms(電池電壓低)或者0(未執(zhí)行電池電壓低那一段程序)

if ((warned & BATTERY_LOW) && ms >= next_battery_warning) 

//如果warned=0010(電壓還行0000就不用管這個了)電池電壓低時&0010=0010為真且ms>=next_battery_warning(電池電壓低)為真

{

        MUSIC_Play(MUSIC_BATT_ALARM);   

        next_battery_warning = ms + Transmitter.batt_warning_interval * 1000;

}

//則執(zhí)行MUSIC_Play()低電壓警報聲音(music.h中定義

// next_battery_warning = ms + Transmitter.batt_warning_interval * 1000;

    

 

if (battery < Transmitter.batt_critical && ! (warned & BATTERY_CRITICAL)) 

//如果檢測到的電池電壓<電池超低電壓為真00100000&0001=0000取反為真同事成立

{

        CONFIG_SaveModelIfNeeded();       //配置 保存模式 函數(shù)?

        CONFIG_SaveTxIfNeeded();           //配置  保存發(fā)射  函數(shù)?

        SPI_FlashBlockWriteEnable(0); 

//Disable writing to all banks of SPIFlash   SPIFLASH函數(shù)使能函數(shù),參數(shù)為0,使能

        warned |= BATTERY_CRITICAL;  //warned=warned|0001=0011或者0001

        PAGE_ShowLowBattDialog();      //低電量對話框顯示函數(shù):。。。。。。。

else if (battery > Transmitter.batt_critical + 200) 

//如果讀取到的電源電壓>發(fā)射機的默認電池的臨界值+200mV

{

        warned &= ~BATTERY_CRITICAL;     //warned=warned&0001=0000

        SPI_FlashBlockWriteEnable(1); 

//Disable writing to all banks of SPIFlash

//SPIFLASH函數(shù)使能函數(shù),參數(shù)為1,失能

    }

    return warned;          //返回warned

}


路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

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

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

返回頂部