【STM32】G030單片機開啟超過8個ADC通道的方法

如圖所示通道數量已經超過8個,按照之前博客的辦法已經行不通了

CubeMX配置STM32F103C8T6多路ADC配合DMA采集_stm32f103c8t6的adc采樣率-CSDN博客

這里筆者開了10個channel,注意切換為不完全配置,否則的話最多只有8個rank

開DMA,選擇循環模式

開ADC中斷

時鐘開內部時鐘也可以

記得開一下串口和調試口,就不贅述了。至此CubeMX配置完畢

G030單片機的ADC需要校準一下,不然零點偏移比較大

未校準時讀數80左右,校準后ADC值就比較準了,接地的情況下讀數1~2

串口輸出10個通道的ADC原始值如下所示

各個通道的值和cubemx里配置的從上到下順序是一致的

但是如果開啟內部溫度采樣這些通道后,順序會有錯開交換的情況

主要代碼如下

#include "main.h"
#include "adc.h"
#include "dma.h"
#include "usart.h"
#include "gpio.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "stdint.h"
#include "stdio.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
#define CHANNEL_NUM 10
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
volatile uint16_t adcRaw[CHANNEL_NUM];
char str[100];
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
/* USER CODE END 0 */
/*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_DMA_Init();MX_ADC1_Init();MX_USART2_UART_Init();/* USER CODE BEGIN 2 */HAL_ADCEx_Calibration_Start(&hadc1); //if no calibration, value would be inaccuracy when short to GND/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adcRaw, CHANNEL_NUM);sprintf(str, "CH0:%d\tCH1:%d\tCH2:%d\tCH3:%d\tCH4:%d\tCH5:%d\tCH6:%d\tCH7:%d\tCH8:%d\tCH9:%d\r\n",\adcRaw[0],  adcRaw[1], adcRaw[2],adcRaw[3],adcRaw[4],adcRaw[5],adcRaw[6],adcRaw[7],adcRaw[8],adcRaw[9]);HAL_UART_Transmit_IT(&huart2, str, sizeof(str));HAL_Delay(100);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84709.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84709.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84709.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

不同網絡I/O模型的原理

目錄 1、I/O的介紹 1.1、I/O 操作分類 1.2、I/O操作流程階段 1.3、I/O分類 2、同步I/O 2.1、阻塞I/O 2.2、非阻塞I/O 2.3、I/O復用 2.4、信號驅動式I/O 3、異步I/O 前言 在網絡I/O之中,I/O操作往往會涉及到兩個系統對象,一個是用戶空間調用I/O…

在正則表達式中語法 (?P<名字>內容)

&#x1f3af; 重點解釋&#xff1a;?P<xxx> 是什么語法&#xff1f; 這一整段&#xff1a; (?P<xxx>...)是 Python 正則表達式中 “命名捕獲組” 的語法。 咱們現在一個字一個字來解釋&#xff1a; ? (?...) 是干啥的&#xff1f; 這是一個捕獲組&#xff…

中興B860AV1.1_MSO9280_降級后開ADB-免刷機破解教程(非刷機)

中興B860AV1.1江蘇移動-自動降級包 關于中興b860av1.1頑固盒子降級教程終極版 將附件解壓好以后&#xff0c;準備一個8G以下的U盤重新格式化為FAT32格式后&#xff0c;并插入電腦 將以下文件及文件夾一同復制到優盤主目錄下&#xff08;見下圖&#xff09; 全選并復制到U盤主目…

2025-06-13【視頻處理】基于視頻內容轉場進行分割

問題&#xff1a;從網上下載的視頻文件&#xff0c;是由很多個各種不同的場景視頻片段合并而成。現在要求精確的把各個視頻片段從大視頻里分割出來。 效果如圖&#xff1a;已分割出來的小片段 思考過程 難點在于檢測場景變化。為什么呢&#xff1f;因為不同的視頻情況各異&am…

ReentrantLock和RLock

文章目錄 前言一、 ReentrantLock&#xff08;單機鎖&#xff0c;Java 內置&#xff09;示例&#xff1a;方法詳解 二、RLock&#xff08;分布式鎖&#xff0c;Redisson 提供&#xff09;示例:方法詳解 三、 對比總結:四、 如何選擇&#xff1f; 前言 ReentrantLock 和 RLock 都…

thinkphp ThinkPHP3.2.3完全開發手冊

慣例配置 應用設定 APP_USE_NAMESPACE > true, // 應用類庫是否使用命名空間 3.2.1新增 APP_SUB_DOMAIN_DEPLOY > false, // 是否開啟子域名部署 APP_SUB_DOMAIN_RULES > array(), // 子域名部署規則 APP_DOMAIN_SUFFIX > , // 域名后綴 如果是…

Python Day50 學習(仍為日志Day19的內容復習)

補充&#xff1a;梳理超參數調整流程&#xff08;邏輯&#xff09; 超參數調節的流程邏輯可以總結為以下幾個步驟&#xff1a; 1. 明確目標 確定你要優化的模型和評估指標&#xff08;如準確率、F1值、AUC等&#xff09;。 2. 選擇要調節的超參數 列出模型中影響較大的超參數…

公司網絡變差的解決方法(固定IP地址沖突)

問題描述 最近公司網絡變差&#xff0c;不知道為什么。&#xff08;別的同事反饋的&#xff0c;本人沒有感覺變差&#xff0c;也是比較奇怪的現象&#xff09; 現象有視頻會議變卡等。 調查過程 1.領導給網絡公司打電話溝通&#xff0c;對面遠程看了下&#xff0c;不是設備問…

使用Prometheus+Grafana+Alertmanager+Webhook-dingtalk搭建監控平臺

一、監控平臺介紹 1.監控平臺簡述普羅米修斯四件套,分別為Prometheus、Grafana、Alertmanager、Webhook-DingTalk。Prometheus一套開源的監控&報警&時間序列數據庫的組合,由SoundCloud公司開發,廣泛用于云原生環境和容器化應用的監控和性能分析。其提供了通用的數據…

UR機器人解鎖關節扭矩控制:利用英偉達Isaac Lab框架,推動裝配自動化的Sim2Real遷移

在工業制造領域&#xff0c;機器人裝配長期依賴固定自動化模式&#xff0c;面臨部署成本高、適配性差等挑戰。多部件裝配是制造業、汽車及航空航天等行業中的核心環節。傳統裝配系統通常針對特定任務設計&#xff0c;依賴大量人工工程部署&#xff0c;靈活性不足&#xff0c;難…

ABB 605系列

系列概述 ABB Relion605系列是專為配電網設計的保護繼電器產品系列&#xff0c;代表了中低壓電力系統保護領域的技術基準。基于ABB在電力保護領域數十年的經驗&#xff0c;該系列集成了最新的數字信號處理技術和網絡通信能力&#xff0c;為變電站自動化提供了完整的解決方案。…

Python|GIF 解析與構建(6):手搓 tk 錄制工具

目錄 Python&#xff5c;GIF 解析與構建&#xff08;6&#xff09;&#xff1a;手搓 tk 錄制工具 一、工具功能概覽 二、核心架構設計 1. 幀率控制模塊 2. 屏幕捕獲模塊 3. 主應用模塊 三、關鍵技術解析 1. 屏幕捕獲技術 2. 幀率控制原理 3. 透明窗口實現 四、使用指…

在VBA中,提取word表格的文本時,通常有什么干擾符號,需要清除

標題 在VBA中&#xff0c;提取word表格的文本時&#xff0c;通常有什么干擾符號,需要清除 正文 解決問題提取word表格的文本時&#xff0c;通常有什么干擾符號,需要清除 在VBA中提取Word表格文本時&#xff0c;常見的干擾符號及其清除方法如下&#xff1a; ?? 一、主要干擾符…

C++基礎學習:深入理解類中的構造函數、析構函數、this指針與new關鍵字

前言 在C面向對象編程中&#xff0c;類是構建復雜程序的基本單元。今天&#xff0c;我們將深入探討類中的幾個核心概念&#xff1a;構造函數、析構函數、this指針以及new關鍵字。這些概念對于理解C對象生命周期和內存管理至關重要。 1. 構造函數 構造函數是類的一個特殊成員…

2025 高考游記/總結

坐標GD 新課標一卷選手 前言 思緒有點亂&#xff0c;想想從哪里說起 沒想到這個博客已經三年沒發過東西了&#xff0c;上次發還是初三準備特長生的時候&#xff0c;一瞬間就已經高考結束了&#xff0c;有種不真實感 對于高中的三年&#xff0c;有很多話、很多感悟想說&#xff…

Python基礎之函數(1/3)

函數(基礎) [函數后續還會更新兩次] 一.認識函數的作用 函數就是將一段具有獨立功能的代碼塊整合到一個整體并命名&#xff0c;在需要的位置&#xff0c;調用這個名稱即可完成對應的需求 函數在開發過程中&#xff0c;可以更高效的實現代碼重用 二.函數的使用步驟 1定義函…

AWS CloudFormation實戰:構建可復用的ECS服務部署模板

一、前言 在云原生時代,基礎設施即代碼(IaC)已成為DevOps實踐的核心組件。AWS CloudFormation作為AWS原生的IaC服務,允許開發人員和系統管理員以聲明式方式定義和部署AWS資源。本文將深入探討如何構建一個通用的CloudFormation模板,用于在AWS ECS(Elastic Container Servic…

GRUB2 啟動配置的工作原理與優先級規則詳解

一、核心組件概述 /boot/loader/entries/ 類型:目錄,存儲 BLS (Boot Loader Specification) 格式的啟動項配置文件(如 20-custom-kernel-5.14.0.conf)。管理工具:由 grubby、kernel-install 等工具自動生成或修改。配置內容:每個文件定義一個啟動項的詳細參數(內核路徑、…

網頁版便簽應用開發:HTML5本地存儲與拖拽交互實踐

文章目錄 摘要成品顯示核心功能與實現語法1. 本地存儲管理2. 拖拽功能實現3. 自動保存機制4. 時間格式化處理 完整代碼 摘要 本文詳細介紹了一個基于HTML5的便簽應用開發過程&#xff0c;重點講解了如何利用localStorage實現數據持久化存儲&#xff0c;以及如何實現流暢的拖拽…

docker compose安裝Prometheus、Grafana

1、創建目錄結構 mkdir -p /opt/monitoring/{prometheus,grafana} mkdir -p /opt/monitoring/prometheus/{config,data} chmod -R 777 /opt/monitoring # 確保容器有寫入權限 2、準備 Prometheus 配置文件 vi /opt/monitoring/prometheus/config/prometheus.yml global:sc…