<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32復(fù)位/時(shí)鐘控制

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

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


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

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();