日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]ADC的模擬看門狗用于檢查電壓是否越界。他又上下兩個(gè)邊界,可分別在寄存器ADC_HTR和ADC_LTR中設(shè)置。庫函數(shù)是使用ADC_AnalogWatchdogThresholdsConfig設(shè)置的,無論是常規(guī)通道還是注入通道,都非常簡(jiǎn)單。當(dāng)模擬看門狗檢

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

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

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

在ST的庫中,只有簡(jiǎn)單的三個(gè)與看門狗相關(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啟動(dòng)模擬看門狗。

我寫的函數(shù)很簡(jiǎn)單,就這么三行。將模擬看門狗加在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)先級(jí)分組
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)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉