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

【STM32】STM32之電量採集

//******************************************************************************          				
//name:             GUA_ADC1.c           
//introduce:        ADC1驅動    
//author:           甜甜的大香瓜                 
//email:            [email protected]     
//QQ group          香瓜微控制器之STM8/STM32(164311667)                  
//changetime:       2016.12.29  
//******************************************************************************  
#include "stm32f10x.h"
#include "GUA_ADC1.h"

/*********************內部函式宣告************************/
static GUA_U16 GUA_ADC1_Read(GUA_U8 nGUA_Channel);

//******************************************************************************            
//name:             GUA_ADC1_Read           
//introduce:        ADC1的通道數值讀取       
//parameter:        nGUA_Channel:ADC1的採集通道  
//return:           該通道採集的數值         
//author:           甜甜的大香瓜                 
//email:            
[email protected]
//QQ group 香瓜微控制器之STM8/STM32(164311667) //changetime: 2016.12.29 //****************************************************************************** static GUA_U16 GUA_ADC1_Read(GUA_U8 nGUA_Channel) { //規則取樣順序值為1,取樣時間為 239.5 週期 ADC_RegularChannelConfig(ADC1, nGUA_Channel, 1, ADC_SampleTime_239Cycles5); //開始轉換 ADC_SoftwareStartConvCmd(ADC1, ENABLE); //等待轉換結束 while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)); //返回轉換結果 return ADC_GetConversionValue(ADC1); } //****************************************************************************** //name: GUA_ADC1_ReadAverage //introduce: ADC1的通道數值讀取 //parameter: nGUA_Channel:ADC1的採集通道 // nGUA_times:求平均值的次數 //return: 該通道採集的數值 //author: 甜甜的大香瓜 //email:
[email protected]
//QQ group 香瓜微控制器之STM8/STM32(164311667) //changetime: 2016.12.29 //****************************************************************************** GUA_U16 GUA_ADC1_ReadAverage(GUA_U8 nGUA_Channel, GUA_U8 nGUA_times) { GUA_U32 nGUA_Value_Sum = 0; GUA_U8 i; //累加讀取到的數值 for(i = 0; i < nGUA_times; i++) { nGUA_Value_Sum += GUA_ADC1_Read(nGUA_Channel); } //求出平均值並返回 return nGUA_Value_Sum/nGUA_times; } //****************************************************************************** //name: GUA_ADC1_Init //introduce: ADC1初始化 //parameter: none //return: none //author: 甜甜的大香瓜 //email:
[email protected]
//QQ group 香瓜微控制器之STM8/STM32(164311667) //changetime: 2016.12.29 //****************************************************************************** void GUA_ADC1_Init(void) { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; //開GPIOB、ADC1時鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_ADC1, ENABLE); //ADC最大頻率不能超過14M,否則不準,因此使用72M/6=12M RCC_ADCCLKConfig(RCC_PCLK2_Div6); //IO初始化 GPIO_InitStructure.GPIO_Pin =GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOB, &GPIO_InitStructure); //ADC1配置復位 ADC_DeInit(ADC1); //ADC1配置 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //獨立模式 ADC_InitStructure.ADC_ScanConvMode = DISABLE; //單通道模式 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //單次轉換模式 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //轉換由軟體觸發 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //資料右對齊 ADC_InitStructure.ADC_NbrOfChannel = 1; //順序進行規則轉換的ADC通道的數目 ADC_Init(ADC1, &ADC_InitStructure); //初始化配置 //使能 ADC_Cmd(ADC1, ENABLE); //校準 ADC_ResetCalibration(ADC1); //開啟復位校準 while(ADC_GetResetCalibrationStatus(ADC1)); //等待復位校準結束 ADC_StartCalibration(ADC1); //開啟AD校準 while(ADC_GetCalibrationStatus(ADC1)); //等待校準結束 }
對外介面函式為初始化函式、求多次平均值後的採集資料。

相關推薦

STM8SSTM8S電量採集

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

STM32STM32電量採集

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

STM32STM32timer3產生PWM

//****************************************************************************** //name: GUA_Timer3_PWM.c

STM32STM32限位開關

五、基礎知識 1、限位開關是什麼? 答:限位開關其實就是會復原開關的開關按鍵。 也就是說按下限位開關的開關能觸發STM32的IO中斷,而鬆開手指時限位開關會復原。 2、限位開關有什麼用? 答:通常被用於限制電機轉動角度來使用。 例如兩個限位開關形成45°的夾角,一旦電機轉動觸發任意其中一個限

記錄STM32學習第一個程式(點亮LED)

STM32學習之第一個程式(點亮LED) 開發板:Nucelo L053R8 芯 片:STM32L053R8 軟 件:IAR for ARM 7.4, STM32CubeL0 程式碼示例

STM32STM32藍芽透傳模組(昇潤科技HY-254124 V8)

//****************************************************************************** //name: BLE_Uart.c //introduce: 藍芽串

STM32STM32霍爾感測器模組

1、霍爾感測器是什麼? 答:霍爾感測器是根據霍爾效應制作的一種磁場感測器。 用磁鐵去靠近霍爾感測器時,霍爾感測器的引腳電平會產生變化。 2、霍爾感測器主要用在什麼地方? 答:霍爾感測器可測速、計數、限位上。 舉例限位功能:兩個霍爾感測器形成45°的夾角,電機邊緣粘著一個磁鐵,一旦電機轉動導致

DebugSTM32 HardFault_Handler 故障

          3、還是將中斷函式修改,列印中斷時的一些資訊: HardFault_Hander()定義如下: void HardFault_Handler(void) {   uint

BLECC2541電池電量服務

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

STM32STM32啟動方式

在少量晶片程式下載時,用JLINK或SWD的下載方式比較繁瑣,串列埠下載配合正點原子的FLYMCU比較快捷,STM32的串列埠下載時候需要注意MCU的啟動方式。在復位時,會按照boot的狀態判斷進入哪種模式,boot腳不用保持長狀態。在根據STM407參考手冊來看,STM32

STM32STM32 MCU系列介紹

STM32-32 微控制器(MCU)家族 系列 MCU 主流級別MCU STM32 F0系列-ARM Cortex-M0入門級MCU STM32 F1系列-A

notestm32 keilMDK出現warning: function XX declared implicitly

warning: #223-D: function "CLR_TX_DATA" declared implicitly 解決方法。 以上面錯誤提示為例:  1  找到定義函式 CLR_TX_DATA() 的原始檔 ,這裡假設在 a.c  中;   2  在 a.h

STM32STM32埠複用和重對映(AFIO輔助功能時鐘)

STM32F1xx官方資料:《STM32中文參考手冊V10》-第8章通用和複用功能IO(GPIO和AFIO)埠複用功能埠複用的定義STM32有許多的內建外設(如串列埠、ADC、DCA等等),這些外設的外部引腳都是和GPIO複用的。也就是說,一個GPIO如果可以複用為內建外設的

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 模板的新項目 $