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

STM32單片機(jī)ADC的模擬看門狗的測試

發(fā)布者:EnchantedMelody最新更新時間:2024-05-13 來源: elecfans關(guān)鍵字:STM32  單片機(jī)  ADC  模擬看門狗 手機(jī)看文章 掃描二維碼
隨時隨地手機(jī)看文章

ADC的模擬看門狗用于檢查電壓是否越界。他又上下兩個邊界,可分別在寄存器ADC_HTR和ADC_LTR中設(shè)置。庫函數(shù)是使用ADC_AnalogWatchdogThresholdsConfig設(shè)置的,無論是常規(guī)通道還是注入通道,都非常簡單

STM32單片機(jī)ADC的模擬看門狗的測試

當(dāng)模擬看門狗檢測到電壓高于上限或者低于下限時將會產(chǎn)生看門狗中斷。捕獲這個中斷,可以做出一些應(yīng)對措施。

數(shù)據(jù)手冊上特別之處的一個東西:模擬看門狗說使用的比較數(shù)據(jù)與ADC_CR2寄存器中設(shè)置的數(shù)據(jù)對齊方式無關(guān)??撮T狗比較是在數(shù)據(jù)對齊之前完成的。先進(jìn)行看門狗比較,再將數(shù)據(jù)放入ADC_DR數(shù)據(jù)寄存器。

在ST的庫中,只有簡單的三個與看門狗相關(guān)的函數(shù):

void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog);

void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold,uint16_t LowThreshold);

void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel);

使用ADC_AnalogWatchdogThresholdsConfig設(shè)置觸發(fā)看門狗的上下限

使用ADC_AnalogWatchdogSingleChannelConfig配置要使用模擬看門狗的通道

配置完成后使用ADC_AnalogWatchdogCmd啟動模擬看門狗。

我寫的函數(shù)很簡單,就這么三行。將模擬看門狗加在ADC1的CH1上。代碼如下:

void ADC_WatchdogConfig(void)

{

ADC_AnalogWatchdogSingleChannelConfig(ADC1,ADC_Channel_0);

ADC_AnalogWatchdogThresholdsConfig(ADC1,1500,0xFFF);

ADC_AnalogWatchdogCmd(ADC1,ADC_AnalogWatchdog_SingleRegEnable);

}

NVIC中初始化模擬看門狗:

void NVIC_Config(void)

{

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置中斷優(yōu)先級分組

NVIC_InitStructure.NVIC_IRQChannel = ADC_IRQn;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;

NVIC_Init(&NVIC_InitStructure);

}

捕獲看門狗中斷:

void ADC_IRQHandler(void)

{

ADC_ITConfig(ADC1,ADC_IT_AWD,DISABLE);

if(SET == ADC_GetFlagStatus(ADC1,ADC_FLAG_AWD))

{

ADC_ClearFlag(ADC1,ADC_FLAG_AWD);

ADC_ClearITPendingBit(ADC1,ADC_IT_AWD);

printf(“ADC AWD is happened.rn”);

}

ADC_ITConfig(ADC1,ADC_IT_AWD,ENABLE);

}

當(dāng)然,最后別忘了打開ADC的中斷:

ADC_ITConfig(ADC1,ADC_IT_AWD,ENABLE);


關(guān)鍵字:STM32  單片機(jī)  ADC  模擬看門狗 引用地址:STM32單片機(jī)ADC的模擬看門狗的測試

上一篇:如何通過STM32驅(qū)動nRF24L01發(fā)送數(shù)據(jù)
下一篇:基于LinkedInSTM32F4時鐘系統(tǒng)初始化設(shè)置

推薦閱讀最新更新時間:2025-06-21 01:26

STM8 模擬看門狗
STM8模擬看門狗 在單次轉(zhuǎn)換模式和不帶緩存的連續(xù)模式中模擬看門狗可以通過置位ADC_CSR寄存器的AWDEN位來使能。 如圖148當(dāng)模擬電壓通過ADC轉(zhuǎn)換后的值低于下限門檻值或者高于上限門檻值時AWD模擬看門狗會被置位??赏ㄟ^對ADC_HTR和ADC_LTR的10位寄存器編程來設(shè)定門檻值,并且可以通過置位ADC_CSR寄存器的AWDIE位可使能中斷。 對于STM8_ADC掃描模式,通過使用ADC_AWCRH和ADC_AWCRL寄存器的AWENx位在選定的通道上使能模擬看門狗功能。對于每個通道上的模擬看門狗的狀態(tài)可以通過讀ADC_AWSRH和ADC_AWSRL寄存器的AWSx來獲得。一旦任何一個AWS標(biāo)志位被置位這同時
[單片機(jī)]
STM8 <font color='red'>模擬</font><font color='red'>看門狗</font>
基于STM32片內(nèi)信號的ADC應(yīng)用演示案例
很多STM32芯片里往往內(nèi)置了專用的ADC通道,比方用來測量Vrefint,VBAT的分壓或溫度傳感器的輸出電壓信號。不同系列所內(nèi)置的模擬信號通道可能有差異。這里以STM32G4系列為例,它內(nèi)置了對應(yīng)于Vrefint,VBAT的三分之一分壓和溫度傳感器的輸出電壓的專用模擬通道。 下面的示例就是針對上述3個通道進(jìn)行AD,并測量相關(guān)電壓和片內(nèi)溫度,最終得到3個結(jié)果,分別是VRefint電壓,VBAT的電壓,片內(nèi)溫度。 實(shí)現(xiàn)過程是這樣的,大體分四步:【有點(diǎn)點(diǎn)麻雀雖小五臟俱全的味道】 1、TIMER1 更新事件觸發(fā)ADC的轉(zhuǎn)換; 2、CPU基于EOC中斷獲取ADC結(jié)果; 3、對ADC結(jié)果進(jìn)行換算,得到電壓值和溫度值存放在特定內(nèi)存
[單片機(jī)]
基于<font color='red'>STM32</font>片內(nèi)信號的<font color='red'>ADC</font>應(yīng)用演示案例
一種基于stm32的多通道ADC和DMA的設(shè)置問題詳解
一、多通道ADC和DMA的配置問題: 剛開始不知道怎么去配置,到處找資料發(fā)現(xiàn)很多不是很適用。很盲目的找了很久的資料,后來發(fā)現(xiàn)官方的固件庫里面有很詳細(xì)的資料。稍微改了一下官方的demo一下就編譯成功了。這個例子的啟示是:別忙著去網(wǎng)上找現(xiàn)成的例子,啟示固件庫里面的例程很給力了。 程序需求是開通三個ADC通道分別采集3V 的基準(zhǔn)電壓、控制反饋溫度和環(huán)境溫度。 因?yàn)橛檬静ㄆ鳒y試時發(fā)現(xiàn)TED控制PWM的開關(guān)的高頻噪聲耦合到控制地中來了,所以會有一些高頻尖刺。我的解決辦法是每組數(shù)據(jù)通過DMA采集100個點(diǎn),除去最大的10個數(shù)和最小的10數(shù)然后取平均值。 配置代碼如下: uint16_t Rec_buff[100][3]; void DMA
[單片機(jī)]
一種基于<font color='red'>stm32</font>的多通道<font color='red'>ADC</font>和DMA的設(shè)置問題詳解
STM32 ADC詳解
01、ADC簡介 ADC是Analog-to-DigitalConverter的縮寫。指模/數(shù)轉(zhuǎn)換器或者模擬/數(shù)字轉(zhuǎn)換器。是指將連續(xù)變量的模擬信號轉(zhuǎn)換為離散的數(shù)字信號的器件。典型的模擬數(shù)字轉(zhuǎn)換器將模擬信號轉(zhuǎn)換為表示一定比例電壓值的數(shù)字信號。 從STM32F207的數(shù)據(jù)手冊中下圖看到,STM32F207VC有3個精度為12bit的ADC控制器,有16個外部通道,而144腳的STM32F207Zx和176腳的STM32F207Ix因?yàn)閹F腳,所以多8個通道,為24個外部通道。各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷執(zhí)行,ADC轉(zhuǎn)換的結(jié)果可以左對齊或右對齊儲存在16位數(shù)據(jù)寄存器中。 02、STM32的ADC外設(shè) 上面說
[單片機(jī)]
<font color='red'>STM32</font> <font color='red'>ADC</font>詳解
STM32 —— 多路ADC采集
#ifndef _ADC_H_ #define _ADC_H_ #include type.h #include debug.h void ADCInit(void); uint16_t ADCGetData(uint8_t channel); uint16_t ADCGetAverage(uint8_t channel, uint8_t times); #ifndef CONFIG_CAN void adc_test(void); #endif #endif /* _ADC_H_ */ // input1~5 -- 模擬量IO口; input6~10 -- 普通IO口用 #define ADC_CHANNEL
[單片機(jī)]
stm32采用dma方式的ADC
# define M 3 #define N 10 uint16_t AD_Value ; void ADC_Configuration(void) { ADC_InitTypeDef ADC_InitStructure; ADC_DeInit (ADC1 );//將外設(shè)adc1的全部寄存器設(shè)置為默認(rèn)值 ADC_InitStructure .ADC_Mode =ADC_Mode_Independent ;//設(shè)置為獨(dú)立ADC模式 ADC_InitStructure .ADC_ScanConvMode =ENABLE ;//adc工作在掃描模式 ADC_InitStructure .ADC_ContinuousConvMode =
[單片機(jī)]
STM32 串口打印ADC采集電壓
ADC是單片機(jī)也是STM32在工控上常用功能之一,用來采集電壓,溫度等作為指標(biāo)提供給其他部分進(jìn)行對應(yīng)的操作,使用32的固件庫進(jìn)行配置相當(dāng)方便。 這里利用串口打印的方式觀察采集到的電壓。 #include adc.h void adc_init() { GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE); RCC_APB2Per
[單片機(jī)]
<font color='red'>STM32</font> 串口打印<font color='red'>ADC</font>采集電壓
stm32 ADC 非DMA方式
搞了一個下午和晚上,搞明白,不用DMA的話,每次采集都要使能一下ADC,不然就一直轉(zhuǎn)化不了。。 C++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
[單片機(jī)]
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

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

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