<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32復位/時(shí)鐘控制

STM32復位/時(shí)鐘控制

作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò ) 收藏
========================== Reset/Clock Control =======================
1、時(shí)鐘安全系統(CSS)
時(shí)鐘安全系統被激活后,時(shí)鐘監控器將實(shí)時(shí)監控外部高速振蕩器;如果HSE時(shí)鐘發(fā)生故障,外部振蕩器自動(dòng)被關(guān)閉,產(chǎn)生時(shí)鐘安全中斷,該中斷被連接到Cortex-M3的NMI的中斷;同時(shí)CSS將內部RC振蕩器切換為STM32的系統時(shí)鐘源(對于STM32F103,時(shí)鐘失效事件還將被送到高級定時(shí)器TIM1的剎車(chē)輸入端,用以實(shí)現電機保護控制)。
操作流程:
1)、啟動(dòng)時(shí)鐘安全系統CSS: RCC_ClockSecuritySystemCmd(ENABLE); (NMI中斷是不可屏蔽的!)
2)外部振蕩器失效時(shí),產(chǎn)生NMI中斷,對應的中斷程序:
void NMIException(void)
{
if (RCC_GetITStatus(RCC_IT_CSS) != RESET)
{ // HSE、PLL已被禁止(但是PLL設置未變)
…… // 客戶(hù)添加相應的系統保護代碼處
// 下面為HSE恢復后的預設置代碼
RCC_HSEConfig(RCC_HSE_ON); // 使能HSE
RCC_ITConfig(RCC_IT_HSERDY, ENABLE); // 使能HSE就緒中斷
RCC_ITConfig(RCC_IT_PLLRDY, ENABLE); // 使能PLL就緒中斷
RCC_ClearITPendingBit(RCC_IT_CSS); // 清除時(shí)鐘安全系統中斷的掛起位
// 至此,一旦HSE時(shí)鐘恢復,將發(fā)生HSERDY中斷,在RCC中斷處理程序里, 系統時(shí)鐘可以設置到以前的狀態(tài)
}
}
3)、在RCC的中斷處理程序中,再對HSE和PLL進(jìn)行相應的處理。
注意:一旦CSS被激活,當HSE時(shí)鐘出現故障時(shí)將產(chǎn)生CSS中斷,同時(shí)自動(dòng)產(chǎn)生 NMI。NMI將被不斷執行,直到CSS中斷掛起位被清除。因此,在NMI的處理程序中 必須通過(guò)設置時(shí)鐘中斷寄存器(RCC_CIR)里的CSSC位來(lái)清除CSS中斷。
2、SysTick工作原理
Cortex-M3的內核中包含一個(gè)SysTick時(shí)鐘。SysTick 為一個(gè)24位遞減計數器,SysTick設定初值并使能后, 每經(jīng)過(guò)1個(gè)系統時(shí)鐘周期,計數值就減1。計數到0時(shí), SysTick計數器自動(dòng)重裝初值并繼續計數,同時(shí)內部的 COUNTFLAG標志會(huì )置位,觸發(fā)中斷(如果中斷使能)。
3、內部時(shí)鐘輸出PA.8(MCO)
STM32的PA.8引腳具有復用功能——時(shí)鐘輸出(MCO), 該功能能將STM32內部的時(shí)鐘通過(guò)PA.8輸出.
操作流程:
1)、設置PA.8為復用Push-Pull模式。
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
2)、選擇輸出時(shí)鐘源。
時(shí)鐘的選擇由時(shí)鐘配置寄存器(RCC_CFGR)中的MCO[2:0]位控制。
RCC_MCOConfig(RCC_MCO);
參數RCC_MCO為要輸出的內部時(shí)鐘:
RCC_MCO_NoClock --- 無(wú)時(shí)鐘輸出
RCC_MCO_SYSCLK --- 輸出系統時(shí)鐘(SysCLK)
RCC_MCO_HSI --- 輸出內部高速8MHz的RC振蕩器的時(shí)鐘(HSI)
RCC_MCO_HSE --- 輸出高速外部時(shí)鐘信號(HSE)
RCC_MCO_PLLCLK_Div2 --- 輸出PLL倍頻后的二分頻時(shí)鐘(PLLCLK/2)
注:由于STM32 GPIO輸出管腳的最大響應頻率為50MHz,如果輸出頻率超過(guò)50MHz,則輸出的波形會(huì )失真。
4、可編程電壓監測器(PVD)
STM32內部自帶PVD功能,用于對MCU供電電壓VDD進(jìn)行監控。通過(guò)電源控制寄存器中的PLS[2:0]位可以用來(lái)設定監控電壓的閥值,通過(guò)對外部電壓進(jìn)行比較來(lái)監控電源。當條件觸發(fā),需要系統進(jìn)入特別保護狀態(tài),執行緊急關(guān)閉任務(wù):對系統的一些數據保存起來(lái),同時(shí)對外設進(jìn)行相應的保護操作。
操作流程:
1)、系統啟動(dòng)后啟動(dòng)PVD,并開(kāi)啟相應的中斷。
PWR_PVDLevelConfig(PWR_PVDLevel_2V8); // 設定監控閥值
PWR_PVDCmd(ENABLE); // 使能PVD
EXTI_StructInit(&EXTI_InitStructure);
EXTI_InitStructure.EXTI_Line = EXTI_Line16; // PVD連接到中斷線(xiàn)16上
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //使用中斷模式
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Raising;//電壓低于閥值時(shí)產(chǎn)生中斷
EXTI_InitStructure.EXTI_LineCmd = ENABLE; // 使能中斷線(xiàn)
EXTI_Init(&EXTI_InitStructure); // 初始
EXTI_InitStructure.EXTI_Trigger的賦值可選項:
EXTI_Trigger_Rising---表示電壓從高下降到低于設定閥值時(shí)產(chǎn)生中斷;
EXTI_Trigger_Falling---表示電壓從低上升到高于設定閥值時(shí)產(chǎn)生中斷;
EXTI_Trigger_Rising_Falling---表示電壓上升或下降越過(guò)設定閥值時(shí)都產(chǎn)生中斷。
2)、當工作電壓低于設定閥值時(shí),將產(chǎn)生PVD中斷,在中斷程序中進(jìn)行相應的處理:
void PVD_IRQHandler(void)
{
EXTI_ClearITPendingBit(EXTI_Line16);
…… // 用戶(hù)添加緊急處理代碼處
}


關(guān)鍵詞: STM32復位時(shí)鐘控

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>