stm32-PVD編程要點(diǎn)-2023修改整理_第1頁(yè)
stm32-PVD編程要點(diǎn)-2023修改整理_第2頁(yè)
stm32-PVD編程要點(diǎn)-2023修改整理_第3頁(yè)
stm32-PVD編程要點(diǎn)-2023修改整理_第4頁(yè)
stm32-PVD編程要點(diǎn)-2023修改整理_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

千里之行,始于足下讓知識(shí)帶有溫度。第第2頁(yè)/共2頁(yè)精品文檔推薦stm32-PVD編程要點(diǎn)下面向上面2張圖和表格中的數(shù)據(jù)做一個(gè)簡(jiǎn)要的解釋:

1)PVD=ProgrammableVotageDetector可編程電壓監(jiān)測(cè)器

它的作用是監(jiān)視供電電壓,在供電電壓下降到給定的閥值以下時(shí),產(chǎn)生一個(gè)中斷,通知軟件做緊張?zhí)幚?。在給出表格的上半部分就是可編程的監(jiān)視閥值數(shù)據(jù)。當(dāng)供電電壓又恢復(fù)到給定的閥值以上時(shí),也會(huì)產(chǎn)生一個(gè)中斷,通知軟件供電恢復(fù)。供電下降的閥值與供電升高的PVD閥值有一個(gè)固定的差值,這就是表中的VPVDhyst(PVD遲滯)這個(gè)參數(shù),通過(guò)列出的PVD閥值數(shù)據(jù)可以看到這個(gè)差別。引入這個(gè)差值的目的是為了防止電壓在閥值上下小幅顫動(dòng),而頻繁地產(chǎn)生中斷。

2)POR=PowerOnReset上電復(fù)位;PDR=PowerDownReset掉電復(fù)位。

POR的功能是在VDD電壓由低向高升高越過(guò)規(guī)定的閥值之前,保持芯片復(fù)位,當(dāng)越過(guò)這個(gè)閥值后的一小段時(shí)光后(圖中的"滯后時(shí)光"或表中的"復(fù)位遲滯"),結(jié)束復(fù)位并取復(fù)位向量,開頭執(zhí)行指令。這個(gè)閥值就是表中倒數(shù)第4行(min=1.8,typ=1.88,max=1.96)。

POR的功能是在VDD電壓由高向低下降越過(guò)規(guī)定的閥值后,將在芯片內(nèi)部產(chǎn)生復(fù)位,這個(gè)閥值就是表中倒數(shù)第3行(min=1.84,typ=1.92,max=2.0)。

3)可以看到POR比PDR大了0.04V,這就是表中倒數(shù)第2行,VPDRhyst(PDR遲滯)=40mV。

4)從上面的第2張圖可以看到,當(dāng)VDD升高越過(guò)POR閥值時(shí),內(nèi)部并不馬上結(jié)束復(fù)位,而是等待一小段時(shí)光(Resettemporization),這就是表中的最后一行TRSTTEMPO,它的典型數(shù)值是2.5ms。

這個(gè)滯后時(shí)光是為了等待供電電壓能夠上升到最低牢靠工作電壓以上,我們看到POR閥值最小惟獨(dú)1.8V,最大也惟獨(dú)1.96V,都低于數(shù)據(jù)手冊(cè)中給出的最低牢靠工作電壓2.0V,所以這個(gè)滯后時(shí)光是非常須要的,假如供電電壓升高緩慢,尤其是從1.8V升到2.0V以上超過(guò)1~2.5ms,則很可能造成上電復(fù)位后MCU不能正常工作的狀況。

/view/f7352fd076a20229bd642db3.html

STM32內(nèi)部自帶PVD功能,用于對(duì)MCU供電電壓VDD舉行監(jiān)控。通過(guò)電源控制寄存器中的PLS[2:0]位可以用來(lái)設(shè)定監(jiān)控電壓的閥值,通過(guò)對(duì)外部電壓舉行比較來(lái)監(jiān)控電源。當(dāng)條件觸發(fā),需要系統(tǒng)進(jìn)入特殊庇護(hù)狀態(tài),執(zhí)行緊張關(guān)閉任務(wù):對(duì)系統(tǒng)的一些數(shù)據(jù)保存起來(lái),同時(shí)對(duì)外設(shè)舉行相應(yīng)的庇護(hù)操作。

操作流程:

1)、系統(tǒng)啟動(dòng)后啟動(dòng)PVD,并開啟相應(yīng)的中斷。

PWR_PVDLevelConfig(PWR_PVDLevel_2V8);//設(shè)定監(jiān)控閥值

PWR_PVDCmd(ENABLE);//使能PVD

EXTI_StructInit(

EXTI_InitStructure.EXTI_Line=EXTI_Line16;//PVD銜接到中斷線16上

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//使用中斷模式

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Raising;//電壓低于閥值時(shí)產(chǎn)生中斷

EXTI_InitStructure.EXTI_LineCmd=ENABLE;//使能中斷線

EXTI_Init(//初始

EXTI_InitStructure.EXTI_Trigger的賦值可選項(xiàng):

EXTI_Trigger_Rising表示電壓從高下降到低于設(shè)定閥值時(shí)產(chǎn)生中斷;

EXTI_Trigger_Falling表示電壓從低升高到高于設(shè)定閥值時(shí)產(chǎn)生中斷;

EXTI_Trigger_Rising_Falling表示電壓升高或下降越過(guò)設(shè)定閥值時(shí)都產(chǎn)生中斷。

2)、當(dāng)工作電壓低于設(shè)定閥值時(shí),將產(chǎn)生PVD中斷,在中斷程序中舉行相應(yīng)的處理:

voidPVD_IRQHandler(void)

{

EXTI_ClearITPendingBit(EXTI_Line16);

……//用戶添加緊張?zhí)幚泶a處

}

(以上內(nèi)容是摘自網(wǎng)上的,以下內(nèi)容是開發(fā)后總結(jié)的,經(jīng)過(guò)驗(yàn)證的)

/************************************************************************************************************************************************************/20221220

STM32中PVD的編程:開頭時(shí)參照網(wǎng)上的資料和技術(shù)文檔的內(nèi)容,把基本的代碼組織了,但是程序還是無(wú)法如意向的執(zhí)行(無(wú)論是用查詢方式、還是中斷方式);網(wǎng)上很少有提到解決為什么不能執(zhí)行的,沒(méi)有更多的參考,于是只能漸漸調(diào)試;

調(diào)試:首先是看PVD監(jiān)控的標(biāo)志位能否置起來(lái),用死循環(huán)向來(lái)檢測(cè);然后要是行的話,再去用中斷的方式;

結(jié)果發(fā)覺(jué)時(shí)標(biāo)志位無(wú)法被置起來(lái),后來(lái)再去網(wǎng)上查,對(duì)照自己的代碼,發(fā)覺(jué),漏了一步?jīng)]舉行:就是PVD所對(duì)應(yīng)的時(shí)鐘沒(méi)有使能;

加上去后,果真能置位了。

總結(jié):細(xì)想,對(duì)于stm32的外設(shè)或者模塊的操作(配置、使用),在前期的配置中,基本上都是需要使能相應(yīng)的時(shí)鐘,而這次也是由于這個(gè)緣由而出錯(cuò);所以下次的使用中需要注重這方面的問(wèn)題。

PVD的詳細(xì)的編程:

基本的初始化和配置:

/**************************************************************************

//Function:voidEXTI_Configuration(void)

//Description:configures;

//Input:none;

//Output:none

//createdby:**************************************************************************/voidEXTI_Configuration(void)

{

EXTI_InitTypeDefEXTI_InitStructure;

EXTI_DeInit();

EXTI_StructInit(

EXTI_InitStructure.EXTI_Line=EXTI_Line16;

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;

EXTI_InitStructure.EXTI_LineCmd=ENABLE;

EXTI_Init(

}

/**************************************************************************

//Function:voidPVD_NVIC_Configuration(void)

//Description:

//Input:none;

//Output:none

//createdby:**************************************************************************/voidPVD_NVIC_Configuration(void)

{

NVIC_InitTypeDefNVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

NVIC_InitStructure.NVIC_IRQChannel=PVD_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//pointit;cann'tloseit;這個(gè)必需要加;

NVIC_Init(

}

中斷函數(shù):

externvoiddev_pvd_irq_handle(void);

voidPVD_IRQHandler(void)

{

dev_pvd_irq_handle();

}

/**************************************************************************

//Function:voiddev_pvd_irq_handle(void)

//Description:PVDhandlefunction;

//Input:none;

//Output:none

//createdby:**************************************************************************/externu8is_power_on;

voiddev_pvd_irq_handle(void)

{

EXTI_ClearITPendingBit(EXTI_Line16);//clearbit;

if(PWR_GetFlagStatus(PWR_FLAG_PVDO))

{

dev_misc_power_on(0);

}

}

主函數(shù)中的操作:

Main()

{

……

PVD_NVIC_Configuration();

EXTI_Configuration();

PWR_PVDLe

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論