1. 程式人生 > >【STM8S】STM8S之電量採集

【STM8S】STM8S之電量採集

本篇博文最後修改時間:2016年08月30日,11:41。

一、簡介

本文介紹STM8S系列如何使用ADC的一個通道,對電量進行採集

二、實驗平臺

編譯軟體:IAR for STM8 1.42.2

硬體平臺:stm8s003f3p6開發板

模擬器:ST-LINK

庫函式版本:STM8Sx_AN3298_FW_V4.0.0

博主:甜甜的大香瓜

宣告:喝水不忘挖井人,轉載請註明出處。

原文地址:http://blog.csdn.NET/feilusia

聯絡方式:[email protected]

香瓜BLE之CC2541群:127442605

香瓜BLE之CC2640群:557278427

香瓜BLE之Android群:541462902

香瓜微控制器之STM8/STM32群:164311667
甜甜的大香瓜的小店(淘寶店):https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i 四、實驗前提 1、在進行本文步驟前,請先閱讀以下博文: 暫無 2、在進行本文步驟前,請先實現以下博文:
暫無

五、硬體原理圖



由上圖可知通過PB3口採集電壓,其中採集的電壓為鋰電池經過分壓後的電壓。

鋰電池電壓範圍為3V~4.2V。

六、實驗步驟

1、工程中新增自己寫的電量採集驅動

1)寫一個電量採集驅動Battery_Check.c (存放在工程的USER資料夾中)

//******************************************************************************        
//name:         Battery_Check.c      
//introduce:    電量檢測驅動    
//author:       甜甜的大香瓜      
//changetime:   2016.07.25     
//email:        [email protected]    
//******************************************************************************
#include "stm8s.h"
#include "Battery_Check.h"

/*********************巨集定義************************/
#define BATTERY_CHECK_COUNT_PER_COLLECT         5   //每次採集的次數

//******************************************************************************        
//name:             Battery_Check_Read        
//introduce:        讀電量     
//parameter:        none       
//return:           返回16bit的電量,右對齊      
//author:           甜甜的大香瓜             
//email:            
[email protected]
//changetime: 2016.07.25 //****************************************************************************** u16 Battery_Check_Read(void) { u16 nBattery_Check_Value = 0; u16 nNum = 0; //採集BATTERY_CHECK_COUNT_PER_COLLECT次,累加採集的電量值 for(nNum = 0; nNum < BATTERY_CHECK_COUNT_PER_COLLECT; nNum++) { //開始轉換 ADC1_StartConversion(); //累加讀取adc的轉換值 nBattery_Check_Value += ADC1_GetConversionValue(); } //求出電量平均值 nBattery_Check_Value /= BATTERY_CHECK_COUNT_PER_COLLECT; //返回 return nBattery_Check_Value; } //****************************************************************************** //name: Battery_Check_Init //introduce: 電量檢測初始化 //parameter: none //return: none //author: 甜甜的大香瓜 //email: [email protected] //changetime: 2016.07.25 //****************************************************************************** void Battery_Check_Init(void) { //暫存器復位預設值 ADC1_DeInit(); //單次轉換、通道3、時鐘分頻器fmaster/2、關閉外部觸發轉換事件、右對齊資料、關閉指定通道的施密特觸發 ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_3, ADC1_PRESSEL_FCPU_D2, ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL0, DISABLE); //使能 ADC1_Cmd(ENABLE); }

2)寫一個電量採集驅動標頭檔案Battery_Check.h(存放在工程的USER資料夾中)
//******************************************************************************        
//name:         Battery_Check.h        
//introduce:    電量檢測的標頭檔案    
//author:       甜甜的大香瓜      
//changetime:   2016.07.25    
//email:        [email protected]    
//******************************************************************************
#ifndef _BATTERY_CHECK_H_
#define _BATTERY_CHECK_H_

/*********************標頭檔案************************/ 
#include "stm8s.h"
 
/*********************巨集定義************************/


/*********************外部函式宣告************************/ 
u16 Battery_Check_Read(void);
void Battery_Check_Init(void);

#endif

3)工程中新增Battery_Check.c


4)新增驅動的路徑

$PROJ_DIR$\..\USER  
注意USER資料夾是與“Project”、“FWlib”資料夾同級的自定義檔案,用於存放香瓜寫的程式碼。

2、應用層中呼叫

1)新增標頭檔案(main.c中)

#include "Battery_Check.h"

2)初始化(main.c的main函式中)
  //電源電量採集
  Battery_Check_Init();

3)採集電量(main.c的main函式中)
  U16 nBattery_Check_Value = 0;

  //讀取電量
  nBattery_Check_Value = Battery_Check_Read();   


相關推薦

STM32STM32電量採集

//****************************************************************************** //name: GUA_ADC1.c //introduce:

STM8SSTM8S電量採集

本篇博文最後修改時間:2016年08月30日,11:41。 一、簡介 本文介紹STM8S系列如何使用ADC的一個通道,對電量進行採集。 二、實驗平臺 編譯軟體:IAR for STM8 1.42.2 硬體平臺:stm8s003f3p6開發板 模擬器:ST

BLECC2541電池電量服務

本篇博文最後修改時間:2017年01月06日,11:06。 一、簡介 本文以SimpleBLEPeripheral工程為例,介紹如何新增一個電池電量服務。 二、實驗平臺 協議棧版本:BLE-CC254x-1.4.0 編譯軟體: IAR 8.20.2 硬體平臺: Smar

linuxcp/scp命令+scp命令詳解

特殊 是否 用戶登錄 usr 指定 highlight 顯示 檔案 三種 linux之cp/scp命令+scp命令詳解 名稱:cp 使用權限:所有使用者 使用方式: cp [options] source dest cp [options] source

c#繼承

none 實現 void 運算符重載 調用方法 需要 strong 靜態 顯式 一.繼承的類型   在面向對象的編程中,有兩種截然不同繼承類型:實現繼承和接口繼承   1.實現繼承和接口繼承   *實現繼承:表示一個類型派生於基類型,它擁有該基類型的所有成員字段和函

C#集合

tab 並發集合 get spa style con 都在 src 字典  數組(http://www.cnblogs.com/afei-24/p/6738128.html)的大小是固定的。如果元素的個數是動態的,就應使用集合類。     列表(http://www.cn

SpringSpringMVC異常處理

存儲 targe 存在 cnblogs del file 處理機制 href click java中的異常分為兩類,一種是運行時異常,一種是非運行時異常。在JavaSE中,運行時異常都是通過try{}catch{}捕獲的,這種只能捕獲顯示的異常,通常項目上拋出的異常都是不可

SpringSpringMVC攔截器

https javax request orm bin 支持 exceptio 賬號 intern Spring的HandlerMapping處理器支持攔截器應用。當需要為某些請求提供特殊功能時,例如實現對用戶進行身份認證、登錄檢查等功能。 攔截器必須實現HandlerI

SpringSpringMVCREST編程風格

data springmvc 4.0 gen rip servle truct -name insert REST架構是一個抽象的概念,目前主要是基於HTTP協議實現,其目的是為了提高系統的可伸縮性、降低應用之間的耦合度、便於架構分布式處理程序。 在URL中設置使用

22Vue Vue Devtools

rom 創建 png ins -c 擴展程序 安裝 搜索 項目 vue安裝: # 最新穩定版 $ npm install vue # 全局安裝 vue-cli $ npm install --global vue-cli # 創建一個基於 webpack 模板的新項目 $

轉載linuxsed用法

span 變量 常用 tdi 選擇 包括 div 輸入 記得 linux之sed用法 原文地址:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html sed是一個很好的文件處理工具,本身是

03react 創建component

更強 系列 生命周期 object mem efi 多余 element edi React推出後,出於不同的原因先後出現三種定義react組件的方式,殊途同歸;具體的三種方式: 函數式定義的無狀態組件 es5原生方式React.createClass定義的組件 es6形

06react PropsType

nod document 元素 pre ace ont 道具 def reat React組件創建的時候,需要傳入屬性,我們可以使用使用PropTypes進行類型檢查,您可以使用React.PropTypes在組件的道具上運行。 React.PropTypes.array

07react 生命周期

led render cti dup 一些事 復制代碼 pop 狀態機 document 閱讀目錄(Content) 實例化 getDefaultProps getInitialState componentWillMount render componentDidM

09react 表單組件

密碼 愛好 你在 false create 保留 input 數據 編寫 不太清楚有多少初學React的同學和博主當時一樣,在看完React的生命周期、數據流之後覺得已經上手了,甩開文檔啪啪啪的開始敲了起來。結果...居然被一個input標簽給教做人了。 故事是這樣的

11react flux

ntb var 發生 tor 回調函數 1.3 執行流程 下回 關聯 Flux 是 Facebook 使用的一套前端應用的架構模式。React 標榜自己是 MVC 裏面 V 的部分,那麽 Flux 就相當於添加 M 和 C 的部分。 1.1. Flux介紹 Flux並不是

轉載CSS3Clip(裁剪)拓展閱讀

很多 fix 以及 flow script stat browser hid 一定的 Clip屬性是大家經常會誤解的一個屬性,這篇文章幫助大家充分的了解和學習clip屬性,用這個屬性制作出更好的效果。 我可以確定Clip屬性有很多同學並不知道,因為這個屬性使用率非常的底,我

轉載CSS絕對定位及相對定位

通過 原本 second span sof 動手 lan 根據 為什麽 我們先來看看CSS3 Api中對position屬性的相關定義: static:無特殊定位,對象遵循正常文檔流。top,right,bottom,left等屬性不會被應用。 relative:對象遵

原創讀後感格列佛遊記

生物 人類 順序 整體 其實在 徹底 知識 社會 分用 書名:《格列佛遊記》 作者:【英國】喬納森·斯威夫特 概要: 在這本著名的英國諷刺小說中,作者以格列佛先生的名義,借以遊記的形式,講述了主人公先後遊歷了小人國、巨人國、飛島國和“慧骃”國的故事,雖然不曾直

14redux redux-actions

scrip reset case 原來 from reat sin con spa redux-actions有兩大法寶createAction和handleActions. createAction http://www.jianshu.com/p/6ba5cd79507