STM32F407寄存器操作(ADC非連續掃描模式)

1.前言

書接上回,在看手冊的時候我突然發現手冊上還描述了另一種ADC掃描模式,即非連續掃描模式,想著連續掃描模式都已經探索過了,那就順手把非非連續模式研究一下吧。

2.理論

我們先看看手冊,這里我就以規則通道舉例了

首先,我們先了解一下什么是非連續模式,這里的非連續模式指的是不在同一個周期內將所有管腳的電壓全部讀取完畢。手冊上也給出了例子,也是比較好理解的。

然后我們再看看需要置為的寄存器,是CR1里的DISCEN和DISCNUM幾位,我們看到CR1里

分別是11位,13~15位

3.程序

我先把程序放出來,這里我用的通道0、3、4、5四個通道,每次采樣2個通道。

void init_adc1(unsigned char ch1,unsigned char adcm)
{init_adc12_chinal(0);	//初始化通道0init_adc12_chinal(3);	//初始化通道3init_adc12_chinal(4);	//初始化通道4init_adc12_chinal(5);	//初始化通道5ADC1->CR1&=~(3<<24);	//15 ADCCLK 周期ADC1->CR1|=(1<<8);		//掃描模式ADC1->CR1|=1<<11;			//ADC1非連續掃描模式ADC1->CR1|=1<<13;			//不連續采樣通道數為2ADC1->CR2&=~(1<<1);		//單次轉換ADC1->CR2&=~(1<<11);	//數據右對齊ADC1->CR2&=~(3<<28);	//禁止觸發檢測ADC1->SQR1&=~(0XF<<20);	//重置規則通道序重置列長度ADC1->SQR1|=3<<20;     	//4個轉換在規則序列中//設置通道0的采樣時間ADC1->SMPR2&=~(7<<(3*0));		//通道0	采樣時間清空	  ADC1->SMPR2|=(7<<(3*0)); 		//通道0  480個周期,提高采樣時間可以提高精確度//設置通道3的采樣時間ADC1->SMPR2&=~(7<<(3*3));		//通道3	采樣時間清空	  ADC1->SMPR2|=(7<<(3*3)); 		//通道3  480個周期,提高采樣時間可以提高精確度//設置通道4的采樣時間ADC1->SMPR2&=~(7<<(3*4));		//通道4	采樣時間清空	  ADC1->SMPR2|=(7<<(3*4)); 		//通道4  480個周期,提高采樣時間可以提高精確度//設置通道5的采樣時間ADC1->SMPR2&=~(7<<(3*5));		//通道5	采樣時間清空	  ADC1->SMPR2|=(7<<(3*5)); 		//通道5  480個周期,提高采樣時間可以提高精確度ADC1->SQR3=0;	//重置規則通道轉換配置ADC1->SQR3|=0<<0;	//設置第一次規則轉換通道0ADC1->SQR3|=3<<5;	//設置第二次規則轉換通道3ADC1->SQR3|=4<<10;	//設置第三次規則轉換通道4ADC1->SQR3|=5<<15;	//設置第四次規則轉換通道5ADC1->CR2|=1<<8;			//使能DMA模式ADC1->CR2|=1<<0;	   	//開啟AD轉換器	  
}

因此我們把CR1的11位置1開啟非連續掃描模式,11~15位寫2,表示單次采集2個通道。

同時我們的轉換通道數要配置成4

然后是轉換順序,因為我們需要多次手動觸發,因此在初始化階段將轉換順序配置好即可

然后是軟件觸發的程序

void adc1_incontinue_scanf()
{ADC1->CR2|=1<<30;	//開始轉換
}

因為單個循環轉換完畢后沒有事件生成,因此我們這里不做判斷。理論上來說我們的轉換時間也應該不是連續的,否則就用連續模式了。

4.測試

首先是主程序,按照DMA-ADC初始化順序即可,這里我在兩次掃描間加入10ms的延遲防止干擾。

int main(void)
{	Stm32_Clock_Init(336,25,2,7);//設置時鐘,168MhzNVIC_SetGroup(1);//設置中斷分組,分組1init_PinClock();//初始化所有時鐘delay_init(168);//初始化延時init_DMAClock();//初始化DMA時鐘init_DMA2_S0C0(4);	//DMA2 ADC1轉換init_AllAdc();//初始化所有ADC時鐘init_adc1(0,2);//初始化ADC1adc1_incontinue_scanf();//第一次掃描delay_ms(10);adc1_incontinue_scanf();//第二次掃描}

首先我們先測試是否是兩次轉換

程序停在兩次延遲處,四個數據中前兩位正常有數據了

兩次觸發完畢后四位數據正常了。

然后測試通道是否正常,有沒有發生串擾

首先把PA4接地

第三個數據確實是0

然后我們再把PA3接地

OK,也沒問題,第二個數據也是0了

5.結語

非連續掃描模式也不算難,可以說掃描模式順帶功能吧。那么OK,還是老樣子,有問題評論區見,下篇文章我將介紹407多重ADC的使用方法。

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

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

相關文章

spring切面

概念 兩個特點&#xff1a; IOC控制反轉AOP主要用來處理公共的代碼 例如一個案例就是添加用戶&#xff0c;重復的代碼包含了記錄日志、事務提交和事務回滾等&#xff0c;都是重復的&#xff0c;為了簡單&#xff0c;交給AOP來做。 即將復雜的需求分解出不同方面&#xff0c…

[Python] Python中的多重繼承

文章目錄 Lora中的例子 Lora中的例子 https://github.com/michaelnny/QLoRA-LLM/blob/main/qlora_llm/models/lora.py#L211C1-L243C10如果繼承兩個父類&#xff0c;并且父類的__init__參數不一樣&#xff0c;則可以顯式的調用父類init&#xff1b;如果用super().__init__()則需…

rsync服務的搭建

目錄 一、rsync介紹 rsync的安裝 二、rsync的語法 三、rsync命令使用 1. 本機同步 2. 遠程同步 四、rsync作為服務使用 1、嘗試啟動rsync程序 2、rsync的配置文件介紹 注意事項&#xff1a; 3. rsyncinotify實時同步 3.依賴服務托管xinetd&#xff08;CentOS 6中rs…

【C/C++】面試基礎題目收集

C 軟件開發面試中常見的刷題題目通常可分為以下幾大類&#xff1a;數據結構與算法、系統編程、面向對象設計、C 語言特性、并發編程等。 &#x1f9e0; 一、數據結構與算法&#xff08;力扣/牛客經典題&#xff09; 掌握 STL 和底層結構實現能力&#xff1a; &#x1f4cc; 數…

將手機網絡經USB數據線和本地局域網共享給華為AP6050DN無線接入點

引言 由于最近裝畢的新家所在的小區未能及時通寬帶,于是家中各類無線設備如何上網就成了首要要解決的問題。 鑒于家中要聯網的設備多、類型雜、支持頻段也不一,總是開手機熱點不是回事兒,于是就想著把手機網絡引至華為AP6050DN無線接入點中,讓家中所有的無線設備都能快速高…

【數據結構】圖論核心算法解析:深度優先搜索(DFS)的縱深遍歷與生成樹實戰指南?

深度優先搜索 導讀&#xff1a;從廣度到深度&#xff0c;探索圖的遍歷奧秘一、深度優先搜索二、算法思路三、算法邏輯四、算法評價五、深度優先生成樹六、有向圖與無向圖結語&#xff1a;深潛與回溯&#xff0c;揭開圖論世界的另一面 導讀&#xff1a;從廣度到深度&#xff0c;…

Flink CEP實踐總結:使用方法、常見報錯、優化與難點應對

Flink CEP實踐總結&#xff1a;使用方法、常見報錯、優化與難點應對 隨著實時數據分析需求的提升&#xff0c;Flink CEP&#xff08;Complex Event Processing&#xff0c;復雜事件處理&#xff09;成為事件流檢測中的利器。本文結合實際項目經驗&#xff0c;總結Flink CEP的基…

Python數據類型詳解:從字符串到布爾值,一網打盡

Python是現代編程語言中非常流行的一種&#xff0c;它的語法簡潔、易懂&#xff0c;非常適合初學者。而在Python編程中&#xff0c;“數據類型”是最基礎也是最重要的概念。理解這個概念&#xff0c;將為你之后的編程打下堅實的基礎。 1. 什么是數據類型&#xff1f; 在Pytho…

python打卡day42

Grad-CAM與Hook函數 知識點回顧 回調函數lambda函數hook函數的模塊鉤子和張量鉤子Grad-CAM的示例 在深度學習中&#xff0c;我們經常需要查看或修改模型中間層的輸出或梯度&#xff0c;但標準的前向傳播和反向傳播過程通常是一個黑盒&#xff0c;很難直接訪問中間層的信息。PyT…

中國風展示工作總結商務通用PPT模版

中國風展示工作總結商務通用PPT模版&#xff1a;中國風商務通用PPT 模版https://pan.quark.cn/s/42ad18c010d4

TeleAI發布TeleChat2.5及T1正式版,雙雙開源上線魔樂社區!

5月12日&#xff0c;中國電信開源TeleChat系列四個模型&#xff0c;涵蓋復雜推理和通用問答的多個尺寸模型&#xff0c;包括TeleChat-T1-35B、TeleChat-T1-115B、TeleChat2.5-35B和TeleChat2.5-115B&#xff0c;實測模型性能均有顯著的性能效果。TeleChat系列模型基于昇思MindS…

機器視覺2D定位引導一般步驟

機器視覺的2D定位引導是工業自動化中的核心應用,主要用于精確確定目標物體的位置(X, Y坐標)和角度(旋轉角度θ),并引導機器人或運動機構進行抓取、裝配、對位、檢測等操作。其一般步驟可概括如下: 一、系統規劃與硬件選型 明確需求: 定位精度要求(多少毫米/像素,多少…

兒童節快樂,聊聊數字的規律和同余原理

某年的6月1日是星期日。那么&#xff0c;同一年的6月30日是星期幾&#xff1f; 星期是7天一個循環。所以說&#xff0c;這一天是星期幾&#xff0c;7天之后同樣也是星期幾。而6月30日是在6月1日的29天之后&#xff1a;29 7 4 ... 1用29除以7&#xff0c;可以得出余數為1。而…

最佳實踐|互聯網行業軟件供應鏈安全建設的SCA縱深實踐方案

在數字化轉型的浪潮中&#xff0c;開源組件已成為企業構建云服務與應用的基石&#xff0c;但其引入的安全風險也日益凸顯。某互聯網大廠的核心安全研究團隊&#xff0c;通過深度應用軟件成分分析&#xff08;SCA&#xff09;技術&#xff0c;構建了一套覆蓋開源組件全生命周期管…

Docker Compose(容器編排)

目錄 什么是 Docker Compose Docker Compose 的功能 Docker Compose 使用場景 Docker Compose 文件&#xff08;docker-compose.yml&#xff09; Docker Compose 命令清單 常見命令說明 操作案例 總結 什么是 Docker Compose docker-compose 是 Docker 官方的開源項…

【網絡安全】輕量敏感路徑掃描工具

訂閱專欄,獲取文末項目源碼。 文章目錄 工具簡介工具特點項目結構使用方法1.環境準備2.配置目標URL3.運行掃描4.結果查看5.自定義擴展項目源碼工具簡介 該工具是一款基于Python的異步敏感路徑掃描工具,用于檢測目標網站是否存在敏感文件或路徑泄露(如配置文件、密鑰、版本控…

SpringAI+DeepSeek大模型應用開發實戰

內容來自黑馬程序員 這里寫目錄標題 認識AI和大模型大模型應用開發模型部署方案對比模型部署-云服務模型部署-本地部署調用大模型什么是大模型應用傳統應用和大模型應用大模型應用 大模型應用開發技術架構 SpringAI對話機器人快速入門會話日志會話記憶 認識AI和大模型 AI的發…

高溫爐制造企業Odoo ERP實施規劃與深度分析報告

摘要 本報告旨在為高溫爐生產企業提供一個基于Odoo 18平臺的企業資源規劃&#xff08;ERP&#xff09;系統實施的全面分析與規劃。報告首先系統梳理了高溫爐制造業獨特的業務流程特點&#xff0c;隨后詳細映射了Odoo 18各核心模塊功能與這些業務需求的匹配程度。重點分析了生產…

簡述什么是全局鎖?它的應用場景有哪些?

全局鎖是數據庫管理系統中的一種特殊鎖機制&#xff0c;用于對整個數據庫實例進行加鎖&#xff0c;使數據庫處于只讀狀態&#xff0c;阻止所有數據更新&#xff08;DML&#xff09;、數據定義&#xff08;DDL&#xff09;及更新類事務提交等操作。 其核心應用場景包括&#xf…

window 顯示驅動開發-呈現開銷改進(二)

對共享表面的紋理格式支持 驅動程序應支持共享資源和可共享的后臺緩沖區&#xff0c;以使用 DXGI_FORMAT 枚舉中的這些附加紋理格式&#xff1a; DXGI_FORMAT_A8_UNORMDXGI_FORMAT_R8_UNORMDXGI_FORMAT_R8G8_UNORMDXGI_FORMAT_BC1_TYPELESS\*DXGI_FORMAT_BC1_UNORMDXGI_FORMAT…