国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

stm32的adc使用(借鑒)

發(fā)布者:Xinmei最新更新時(shí)間:2024-10-17 來(lái)源: cnblogs關(guān)鍵字:stm32  adc使用  查詢模式 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

STM32F407_ADC查詢模式配置介紹
1.ADC對(duì)應(yīng)管腳介紹
|---管腳------對(duì)應(yīng)ADC----||---管腳------對(duì)應(yīng)ADC----|
| PA0 <---> ADC123_IN0 ||   PA1 <---> ADC123_IN1 |
| PA2 <---> ADC123_IN2 ||   PA3 <---> ADC123_IN3 |
| PA4 <---> ADC12_IN4  ||   PA5 <---> ADC12_IN5  |
| PA6 <---> ADC12_IN6  ||   PA7 <---> ADC12_IN7  |
| PB0 <---> ADC12_IN8  ||   PB1 <---> ADC12_IN9  |
| PC4 <---> ADC12_IN14 ||   PC5 <---> ADC12_IN15 |
| PC0 <---> ADC123_IN10||   PC1 <---> ADC123_IN11|
| PC2 <---> ADC123_IN12||   PC3 <---> ADC123_IN13|
| PF3 <---> ADC3_IN9   ||   PF4 <---> ADC3_IN14  |
| PF5 <---> ADC3_IN15  ||   PF6 <---> ADC3_IN4   |
| PF7 <---> ADC3_IN5   ||   PF8 <---> ADC3_IN6   |
| PF9 <---> ADC3_IN7   ||   PF10<---> ADC3_IN8   |


2.配置查詢模式如下
void ADC_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
ADC_InitTypeDef  ADC_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

//初始化GPIOA的Pin_0為模擬量輸入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOA, &GPIO_InitStructure);

ADC_DeInit();
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;   //精度為12位           
ADC_InitStructure.ADC_ScanConvMode = DISABLE;   //掃描轉(zhuǎn)換模式失能,單通道不用
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;   //連續(xù)轉(zhuǎn)換使能
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; //不用外部觸發(fā),軟件觸發(fā)轉(zhuǎn)換
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //數(shù)據(jù)右對(duì)齊,低字節(jié)對(duì)齊
ADC_InitStructure.ADC_NbrOfConversion = 1;     //規(guī)定了順序進(jìn)行規(guī)則轉(zhuǎn)換的ADC通道的數(shù)目
ADC_Init(ADC1, &ADC_InitStructure);


ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_3Cycles);//ADC,通道,1轉(zhuǎn)換,所選通道的采樣周期

ADC_Cmd(ADC1, ENABLE);   //使能
ADC_SoftwareStartConv(ADC1);    //軟件啟動(dòng)轉(zhuǎn)換
}


unsigned short GetADCValue(void)
{
return ADC_GetConversionValue(ADC1);
}


3.其他具體配置介紹如下
通道選擇:
可以把轉(zhuǎn)換組織成兩組:規(guī)則組和注入組。在任意多個(gè)通道上以任意順序進(jìn)行的一系列
轉(zhuǎn)換構(gòu)成成組轉(zhuǎn)換。例如,可以如下順序完成轉(zhuǎn)換:通道 3、通道 8、通道 2、通道 2、通道
0、通道 2、通道 2、通道 15。
規(guī)則組由多達(dá) 16 個(gè)轉(zhuǎn)換組成。規(guī)則通道和它們的轉(zhuǎn)換順序在 ADC_SQRx 寄存器中選擇。
規(guī)則組中轉(zhuǎn)換的總數(shù)應(yīng)寫入 ADC_SQR1 寄存器的 L[3:0]位中。
注入組由多達(dá) 4 個(gè)轉(zhuǎn)換組成。注入通道和它們的轉(zhuǎn)換順序在 ADC_JSQR 寄存器中選擇。
注入組里的轉(zhuǎn)換總數(shù)目應(yīng)寫入 ADC_JSQR 寄存器的 L[1:0]位中。?如果 ADC_SQRx 或 ADC_JSQR
寄存器在轉(zhuǎn)換期間被更改,當(dāng)前的轉(zhuǎn)換被清除,一個(gè)新的啟動(dòng)脈沖將發(fā)送到 ADC 以轉(zhuǎn)換新
選擇的組。


單次轉(zhuǎn)換模式:
單次轉(zhuǎn)換模式下,ADC 只執(zhí)行一次轉(zhuǎn)換。該模式既可通過(guò)設(shè)置 ADC_CR2 寄存器的 ADON
位(只適用于規(guī)則通道)啟動(dòng)也可通過(guò)外部觸發(fā)啟動(dòng)(適用于規(guī)則通道或注入通道),這 時(shí) CONT
位為 0。
一旦選擇通道的轉(zhuǎn)換完成:
如果一個(gè)規(guī)則通道被轉(zhuǎn)換:
─轉(zhuǎn)換數(shù)據(jù)被儲(chǔ)存在 16 位 ADC_DR 寄存器中
─EOC(轉(zhuǎn)換結(jié)束)標(biāo)志被設(shè)置?─?如果設(shè)置了 EOCIE,則產(chǎn)生中斷。
如果一個(gè)注入通道被轉(zhuǎn)換:
─轉(zhuǎn)換數(shù)據(jù)被儲(chǔ)存在 16 位的 ADC_DRJ1 寄存器中
─JEOC(注入轉(zhuǎn)換結(jié)束)標(biāo)志被設(shè)置?─?如果設(shè)置了 JEOCIE 位,則產(chǎn)生中斷。
然后 ADC 停止


連續(xù)轉(zhuǎn)換模式:
在連續(xù)轉(zhuǎn)換模式中,當(dāng)前面 ADC 轉(zhuǎn)換一結(jié)束馬上就啟動(dòng)另一次轉(zhuǎn)換。此模式可通過(guò)外部觸
發(fā)啟動(dòng)或通過(guò)設(shè)置 ADC_CR2 寄存器上的 ADON 位啟動(dòng),此時(shí) CONT 位是 1。??
每個(gè)轉(zhuǎn)換后:
如果一個(gè)規(guī)則通道被轉(zhuǎn)換:
─轉(zhuǎn)換數(shù)據(jù)被儲(chǔ)存在 16 位的 ADC_DR 寄存器中
─EOC(轉(zhuǎn)換結(jié)束)標(biāo)志被設(shè)置
─如果設(shè)置了 EOCIE,則產(chǎn)生中斷。
注入通道不能被用于連續(xù)轉(zhuǎn)換模式,唯一的例外是當(dāng)規(guī)則通道配置為連續(xù)轉(zhuǎn)換后,注入通道
配置為自動(dòng)轉(zhuǎn)換。


掃描模式:
此模式用來(lái)掃描一組模擬通道。
掃描模式可通過(guò)設(shè)置 ADC_CR1 寄存器的 SCAN 位來(lái)選擇。一旦這個(gè)位被設(shè)置,ADC 掃描
所有被 ADC_SQRX 寄存器(對(duì)規(guī)則通道)或 ADC_JSQR(對(duì)注入通道)選中的所有通道。在每個(gè)組
的每個(gè)通道上執(zhí)行單次轉(zhuǎn)換。在每個(gè)轉(zhuǎn)換結(jié)束時(shí),同一組的下一個(gè)通道被自動(dòng)轉(zhuǎn)換。如果設(shè)
置了 CONT 位,轉(zhuǎn)換不會(huì)在選擇組的最后一個(gè)通道上停止,而是再次從選擇組的第一個(gè)通道
繼續(xù)轉(zhuǎn)換。
如果設(shè)置了 DMA 位,在每次 EOC 后,DMA 控制器把規(guī)則組通道的轉(zhuǎn)換數(shù)據(jù)傳輸?shù)?SRAM
中。而注入通道轉(zhuǎn)換的數(shù)據(jù)總是存儲(chǔ)在 ADC_JDRx 寄存器中。
在以下情況中,ADC_SR 寄存器的 EOC 位將被設(shè)置:
在每個(gè)規(guī)則組序列結(jié)束后,如果 EOCS 位被清 0
在每個(gè)規(guī)則通道轉(zhuǎn)換結(jié)束,如果 EOCS 位設(shè)置為 1
注入通道轉(zhuǎn)換結(jié)束數(shù)據(jù)總是存放在 ADC_JDRx 寄存器中


注入通道管理:
觸發(fā)注入
清除 ADC_CR1 寄存器的 JAUTO 位,并且設(shè)置 SCAN 位,即可使用觸發(fā)注入功能。
1.?利用外部觸發(fā)或通過(guò)設(shè)置 ADC_CR2 寄存器的 ADON 位,啟動(dòng)一組規(guī)則通道的轉(zhuǎn)換。
2.?如果在規(guī)則通道轉(zhuǎn)換期間產(chǎn)生一外部注入觸發(fā)或者 JSWSTART 位被設(shè)置,當(dāng)前轉(zhuǎn)換被
復(fù)位,注入通道序列被以單次掃描方式進(jìn)行轉(zhuǎn)換。
3.?然后,恢復(fù)上次被中斷的規(guī)則組通道轉(zhuǎn)換。如果在注入轉(zhuǎn)換期間產(chǎn)生一規(guī)則事件,
注入轉(zhuǎn)換不會(huì)被中斷,但是規(guī)則序列將在注入序列結(jié)束后被執(zhí)行。
注:?當(dāng)使用觸發(fā)的注入轉(zhuǎn)換時(shí),必須保證觸發(fā)事件的間隔長(zhǎng)于注入序列。例如:序列長(zhǎng)度
為 30 個(gè) ADC 時(shí)鐘周期(即 2 個(gè)具有 3 個(gè)時(shí)鐘間隔采樣時(shí)間的轉(zhuǎn)換),觸發(fā)之間最小的間隔必
須是 31 個(gè) ADC 時(shí)鐘周期。
自動(dòng)注入
如果設(shè)置了 JAUTO 位,在規(guī)則組通道之后,注入組通道被自動(dòng)轉(zhuǎn)換。這可以用來(lái)轉(zhuǎn)換
在 ADC_SQRx 和 ADC_JSQR 寄存器中設(shè)置的多至 20 個(gè)轉(zhuǎn)換序列。
在此模式里,必須禁止注入通道的外部觸發(fā)。
如果除 JAUTO 位外還設(shè)置了 CONT 位,規(guī)則通道至注入通道的轉(zhuǎn)換序列被連續(xù)執(zhí)行。


間斷模式:
規(guī)則組
此模式通過(guò)設(shè)置 ADC_CR1 寄存器上的 DISCEN 位激活。它可以用來(lái)執(zhí)行一個(gè)短序列的 n 次轉(zhuǎn)
換(n<=8),此轉(zhuǎn)換是 ADC_SQRx 寄存器所選擇的轉(zhuǎn)換序列的一部分。數(shù)值 n 由 ADC_CR1 寄存
器的 DISCNUM[2:0]位給出。
一個(gè)外部觸發(fā)信號(hào)可以啟動(dòng) ADC_SQRx 寄存器中描述的下一輪 n 次轉(zhuǎn)換,直到此序列所
有的轉(zhuǎn)換完成為止。總的序列長(zhǎng)度由 ADC_SQR1 寄存器的 L[3:0]定義。
例如:
n=3,被轉(zhuǎn)換的通道?=?0、1、2、3、6、7、9、10
第一次觸發(fā):轉(zhuǎn)換的序列為?0、1、2
第二次觸發(fā):轉(zhuǎn)換的序列為?3、6、7
第三次觸發(fā):轉(zhuǎn)換的序列為?9、10,并產(chǎn)生 EOC 事件
第四次觸發(fā):轉(zhuǎn)換的序列?0、1、2
注:?當(dāng)以間斷模式轉(zhuǎn)換一個(gè)規(guī)則組時(shí),轉(zhuǎn)換序列結(jié)束后不自動(dòng)從頭開始。?當(dāng)所有子組
被轉(zhuǎn)換完成,下一次觸發(fā)啟動(dòng)第一個(gè)子組的轉(zhuǎn)換。在上面的例子中,第四次觸發(fā)重新轉(zhuǎn)換第
一子組的通道?0、1 和 2

注入組
此模式通過(guò)設(shè)置 ADC_CR1 寄存器的 JDISCEN 位激活。在一個(gè)外部觸發(fā)事件后,該模式
按通道順序逐個(gè)轉(zhuǎn)換 ADC_JSQR 寄存器中選擇的序列。?
一個(gè)外部觸發(fā)信號(hào)可以啟動(dòng) ADC_JSQR 寄存器選擇的下一個(gè)通道序列的轉(zhuǎn)換,直到序
列中所有的轉(zhuǎn)換完成為止??偟男蛄虚L(zhǎng)度由 ADC_JSQR 寄存器的 JL[1:0]位定義。
例如:?n=1,被轉(zhuǎn)換的通道?=?1、2、3
第一次觸發(fā):通道 1 被轉(zhuǎn)換
第二次觸發(fā):通道 2 被轉(zhuǎn)換
第三次觸發(fā):通道 3 被轉(zhuǎn)換,并且產(chǎn)生 EOC 和 JEOC 事件
第四次觸發(fā):通道 1 被轉(zhuǎn)換

關(guān)鍵字:stm32  adc使用  查詢模式 引用地址:stm32的adc使用(借鑒)

上一篇:Stm32固件庫(kù)中關(guān)于NART的誤解
下一篇:STM32時(shí)鐘源

推薦閱讀最新更新時(shí)間:2025-06-22 11:41

使用STM8S003K3 ADC簡(jiǎn)介以及初始化
簡(jiǎn)介 最近用stm8s003k3開發(fā)項(xiàng)目,用到了ADC模塊,記錄一下筆記也分享一下心得 軟件環(huán)境:STVD+COSMIC 硬件環(huán)境:STM8S003K3 TSSOP20封裝 模塊:ADC 1.ADC功能以及框圖 由STM8S參考手冊(cè)可以得到幾個(gè)信息: 1、有ADC1和ADC2兩個(gè)(實(shí)際上得看封裝,我這款只有ADC1) 2、有多達(dá)16個(gè)輸入通道(看封裝,我這款只有2~6輸入) 3、有好幾個(gè)擴(kuò)展功能 具體的功能如下所示 *由框圖可以看出ADC1和ADC2差別還是有一點(diǎn)的,一些多引腳的芯片中ADC2的帶模擬參考正負(fù)極,在模擬放大中,可通過(guò)減小參考電壓來(lái)提供更大的分辨率。由于沒(méi)有用到所以不考慮 *轉(zhuǎn)換結(jié)束時(shí)可產(chǎn)生中斷 *
[單片機(jī)]
<font color='red'>使用</font>STM8S003K3 <font color='red'>ADC</font>簡(jiǎn)介以及初始化
玩玩littlevgl移植到stm32
一,前言 周日下午沒(méi)事兒做,那么繼續(xù)我的圖形圖像學(xué)習(xí)之路,之前弄了一段時(shí)間上位機(jī)開發(fā),還是回歸老本行,嵌入式開發(fā)吧~從游戲引擎(HMI)部分來(lái)說(shuō),我覺(jué)得他們?cè)O(shè)計(jì)的核心思路應(yīng)該是一樣的。所以我繼續(xù)先研究小而精的c代碼。畢竟cocos2dx是游戲行業(yè)專屬,我所在的汽車行業(yè)要用HMI引擎,貌似用的也是公司自己開發(fā),或QT或Kanzi等。那么我想先看小而精的代碼,從而學(xué)習(xí)其底層設(shè)計(jì)思路,所以選擇littlevgl繼續(xù)進(jìn)行源碼進(jìn)階學(xué)習(xí)。 二,lvgl在stm32F4開發(fā)板上移植 之前蜻蜓點(diǎn)水的方式,在PC上使用過(guò)了lvgl,然后簡(jiǎn)單的分析了下代碼。 GUI庫(kù)lvgl應(yīng)用及分析--Apple的學(xué)習(xí)筆記 和 GUI庫(kù)lvgl源碼分析--Appl
[單片機(jī)]
STM32 SPI 發(fā)送第一個(gè)數(shù)據(jù)不成功問(wèn)題
STM32的標(biāo)準(zhǔn)庫(kù),跟HAL庫(kù)都是很實(shí)用的, 在使用SPI庫(kù)的過(guò)程中一定要注意時(shí)序的問(wèn)題。 我在調(diào)試SPI過(guò)程中,調(diào)試了兩個(gè)IC,都是用HAL庫(kù), 第一個(gè)IC沒(méi)出問(wèn)題,第二個(gè)IC出現(xiàn)了第一次發(fā)送數(shù)據(jù)不成功問(wèn)題, 不管發(fā)什么數(shù)據(jù),交互結(jié)果都是0x00, 我一開始用的是HAL_SPI_TransmitReceive(); 這個(gè)函數(shù),一直無(wú)法成功,改用標(biāo)準(zhǔn)庫(kù)結(jié)果也是一樣; 后來(lái)查到可能是收發(fā)太快的原因, 這里說(shuō)的收發(fā)太快并不是說(shuō)兩個(gè)數(shù)據(jù)之間,而是一個(gè)交互的時(shí)候收發(fā)太快; 于是我把它改為發(fā)送接收之間加個(gè)延時(shí)問(wèn)題解決:   HAL_SPI_Transmit(&hspi1,&temp,sizeof(temp),10);   HAL_Delay
[單片機(jī)]
混子陪你學(xué)習(xí)STM32之基本定時(shí)器使用
基礎(chǔ)知識(shí) 定時(shí)器分類 typedef struct { uint32_t Prescaler; // 預(yù)分頻器 uint32_t CounterMode; // 計(jì)數(shù)模式 uint32_t Period; // 定時(shí)器周期 uint32_t ClockDivision; // 時(shí)鐘分頻 uint32_t RepetitionCounter; // 重復(fù)計(jì)算器 } TIM_TimeBaseInitTypeDef; Prescaler:定時(shí)器預(yù)分頻器設(shè)置,時(shí)鐘源經(jīng)該預(yù)分頻器才是定時(shí)器時(shí)鐘,它設(shè)定 TIMx_PSC寄存器的值。可設(shè)置范圍為0至65535,實(shí)現(xiàn)1至65536分頻。
[單片機(jī)]
使用 STM32CubeIDE 開發(fā)基于 STM32 的 HID 鼠標(biāo)或鍵盤
STM32CubeIDE 安裝 STM32CubeIDE 是 ST 官方新出的一款集成了 CubeMX 的開發(fā)環(huán)境,上手很簡(jiǎn)單。 下載官方安裝包即可,需要注冊(cè)。之后一路 next 安裝即可。 安裝包 從零開始創(chuàng)建工程并實(shí)現(xiàn)鼠標(biāo)功能 新建工程 安裝完 STM32CubeIDE 后在此處創(chuàng)建一個(gè)新的 STM32 工程。 選擇型號(hào) 選擇你使用的單片機(jī)型號(hào),我使用的 STM32F103C8T6 的最小系統(tǒng)板。 項(xiàng)目 輸入一個(gè)項(xiàng)目名稱。 設(shè)置時(shí)鐘 現(xiàn)在開始進(jìn)行項(xiàng)目的配置,STM32CubeIDE 內(nèi)部集成了 CubeMX ,可以通過(guò)鼠標(biāo)點(diǎn)點(diǎn)點(diǎn)的方式搭建好開發(fā)環(huán)境,后續(xù)的開發(fā)默認(rèn)基于 HAL 庫(kù)。首先我們需要設(shè)置時(shí)鐘,在
[單片機(jī)]
STM32重定向printf到串口(重寫fputc不生效)
使用STM32開發(fā),想用printf把輸出打印到串口,需要重定向printf函數(shù)。 網(wǎng)上一搜全都是重寫fpuc的,但這只針對(duì)使用了MicroLIB的情況,如果你使用STM32CubeMX配置了CMake或者M(jìn)akefile項(xiàng)目,這種方法是根本不可行的,重寫fputc沒(méi)有鳥用。 這個(gè)時(shí)候需要重寫_write函數(shù),如下: /// 重寫_write,重定向到日志輸出串口 int _write(int file, char *ch, int len) { HAL_UART_Transmit(&UART_LOG, (uint8_t *)ch, 1, 10); return 1; } 如果你的波特率非常低,10ms都傳不完一
[單片機(jī)]
STM32結(jié)合ESP8266初始準(zhǔn)備
使用STM32C8T6最小系統(tǒng)板+ESP8266兩者通過(guò)串口連接。使用單片機(jī)的UART1串口。 PA9 - USART1(Tx) PA10 - USART1(Rx) 注意:ESP8266必須使用5V供電 為了使得STM32接收ESP8266的數(shù)據(jù)能看到,將接收到的數(shù)據(jù)通過(guò)UART2串口發(fā)送打印在電腦上。 PA2---USART2_TX PA3---USART2_RX 初始化UART1、UART2 UART1接收函數(shù) 通過(guò)檢測(cè)關(guān)鍵字:比如 OK / / WIFI CONNECTED 來(lái)知道當(dāng)前ESP是否正常工作;若有異常,則執(zhí)行異常處理函數(shù)(沒(méi)有寫) 關(guān)鍵字檢測(cè)函數(shù) 將AT指令使用宏定義這樣方便操
[單片機(jī)]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved