在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

分享一種STM32F407的鎖相環PLL重新配置方法

冬至子 ? 來源:技術老農的工作臺 ? 作者:技術老農 ? 2023-10-30 17:30 ? 次閱讀

老農最近搞基于STM32F407的IAP升級固件升級功能,遇到了這樣一個問題:IAP引導程序和APP程序都是基于STM32CUBEMX的程序模板生成,單獨調試運行APP功能也都正常,但是只要采用IAP方式將APP程序的bin文件燒寫到程序存儲區,再跳轉到APP的地址運行就死掉了。

這個問題困擾了老農挺長時間,后來才發現問題所在:那就是STM32系列的單片機一旦完成PLL時鐘設置后,是不能再次配置的。

本例中IAP引導程序首先對PLL進行了成功配置,當跳轉到APP程序運行后,APP程序初始化部分又對PLL進行了一次配置,結果配置失敗,因為程序是基于STM32CUBEMX的模板,配置失敗后調用模板的Error_Handler()函數,該函數原型如下:

/**
  * @brief  This function is executed in case of error occurrence.
  * @retval None
  */
void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */
  __disable_irq();
  while (1)
  {
  }
  /* USER CODE END Error_Handler_Debug */
}

可以看到,函數內部會先禁止中斷,然后就進入死循環。這就是為什么程序每次跳轉到APP后死掉的原因。

搞清楚了問題所在,就有針對性的解決方法:一是偷懶的方法,將Error_Handler()函數的內部功能全部屏蔽,這樣即使PLL配置出錯,也能跳過去,但是必須要保證IAP引導程序和APP程序的時鐘配置完全一致,否則還是會出問題。二是想辦法重新配置PLL,這樣即使IAP引導程序和APP程序的時鐘配置不一致,程序也能順利運行。

要想重新配置STM32的PLL,通過查閱相關資料,發現STM32的PLL一旦使能后配置參數便不能更改,除非在下次重新啟動時再次配置相關參數。這樣就成死循環了,似乎只能采用前面說的第一種方法了。

老農不死心,繼續研究參考手冊,發現有這么一段話:

The three PLLs are disabled by hardware when entering Stop and Standby modes, or when
an HSE failure occurs when HSE or PLL (clocked by HSE) are used as system clock.

重點在第一句,在進入停止或待機模式時PLL可以由硬件禁止。這樣的話我們就可以在APP程序的時鐘初始化之前首先設置STM32進入停止或待機模式,然后再喚醒,并重新對PLL時鐘進行配置。

通過研究STM32的停止模式和待機模式,可以知道其進入和退出方式有一定差異,如下所示:

圖片

圖片

另外如果進入待機模式,退出后除備份區域和待機電路中的寄存器外,其他SRAM和寄存器內容全部丟失,程序將按照復位后的方式重新執行,這個并不是我們的初衷。如果每次喚醒都相當于重啟,那我們的程序就進入死循環了。

老農結合自己的實際硬件,正好在某個管腳上有一個外部I2C設備輸入方波可以用來做為喚醒源,選用停止模式。具體代碼如下:

HAL_Init();
  IIC_Init();          //外部設備初始化
  SetCLKOandSQW(0,F1Hz,S_1Hz);   //使能外部器件方波輸出
  HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);  //使能方波輸入管腳中斷 
  HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI);  //進入停止模式
  Stm32_Clock_Init(168,6,2,7);  //重新配置PLL并使能
  HAL_NVIC_DisableIRQ(EXTI9_5_IRQn);  //關閉方波輸入管腳中斷

為了驗證效果,將Error_Handler函數中的死循環重新打開,再次燒寫新的APP程序,這次APP能夠正常運行,這說明通過采用進入停止模式再重新配置PLL時鐘是可行的。

采用這種方法確實可以解決PLL的重配置,但是需要結合自己的硬件考慮是否具備喚醒停止模式或待機模式的能力。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鎖相環
    +關注

    關注

    35

    文章

    588

    瀏覽量

    87816
  • 寄存器
    +關注

    關注

    31

    文章

    5357

    瀏覽量

    120691
  • STM32F407
    +關注

    關注

    15

    文章

    188

    瀏覽量

    29533
  • PLL電路
    +關注

    關注

    0

    文章

    92

    瀏覽量

    6431
  • stm32cubemx
    +關注

    關注

    5

    文章

    283

    瀏覽量

    14844
收藏 人收藏

    評論

    相關推薦

    STM32F407可以實現數字鎖相環功能嗎?

    咨詢STM32F407可以實現數字鎖相環功能嗎,在實現中怎么設置PLL倍頻
    發表于 07-04 07:32

    一種寬頻率范圍的CMOS鎖相環(PLL)電路應用設計

    本文設計了一種寬頻率范圍的CMOS鎖相環(PLL)電路,通過提高電荷泵電路的電流鏡鏡像精度和增加開關噪聲抵消電路,有效地改善了傳統電路中由于電流失配、電荷共享、時鐘饋通等導致的相位偏差問題。設計了
    發表于 07-08 07:37

    LabVIEW鎖相環PLL

    LabVIEW鎖相環PLL鎖相環一種反饋電路,其作用是使得電路上的時鐘和某外部時鐘的相位同步。
    發表于 05-31 19:58

    鎖相環原理

    鎖相環原理 鎖相環路是一種反饋電路,鎖相環的英文全稱是Phase-Locked Loop,簡稱PLL。其作用是使得電路上的時鐘和某
    發表于 08-21 14:46 ?5196次閱讀

    鎖相環(PLL),鎖相環(PLL)是什么意思

    鎖相環(PLL),鎖相環(PLL)是什么意思 PLL的概念 我們所說的PLL。其
    發表于 03-23 10:47 ?6147次閱讀

    鎖相環

    鎖相環英文為PLL,即PLL鎖相環。可以分為模擬鎖相環和數字鎖相環。兩
    發表于 10-26 12:40
    <b class='flag-5'>鎖相環</b>

    STM32F407的串口UART 基礎配置STM32CubeMX

    STM32F407的串口UART 基礎配置STM32CubeMX
    發表于 11-29 16:06 ?56次下載
    <b class='flag-5'>STM32F407</b>的串口UART 基礎<b class='flag-5'>配置</b><b class='flag-5'>STM32</b>CubeMX

    STM32F407開發板用戶手冊】第21章 STM32F407的NVIC中斷分組和配置(重要)

    STM32F407開發板用戶手冊】第21章 STM32F407的NVIC中斷分組和配置(重要)
    發表于 12-04 13:51 ?21次下載
    【<b class='flag-5'>STM32F407</b>開發板用戶手冊】第21章 <b class='flag-5'>STM32F407</b>的NVIC中斷分組和<b class='flag-5'>配置</b>(重要)

    鎖相環(PLL)的工作原理及應用

    鎖相環路是一種反饋控制電路,簡稱鎖相環PLL,Phase-Locked Loop)。鎖相環的特點是:利用外部輸入的參考信號控制環路內部振蕩
    的頭像 發表于 03-29 09:54 ?1.4w次閱讀

    pll鎖相環倍頻

    PLL鎖相環倍頻是一種用于改變輸入信號頻率的技術,它可以將輸入信號的頻率放大或縮小,以達到某種特定的目的。
    發表于 02-14 15:56 ?3010次閱讀

    pll是什么意思_pll鎖相環參數

     PLL是指鎖相環,是一種用于控制頻率和相位的電路,它可以將個輸入信號的頻率和相位轉換成另個輸出信號的頻率和相位,從而實現頻率和相位的控
    發表于 02-14 17:19 ?1.1w次閱讀

    pll鎖相環倍頻的原理

    pll鎖相環倍頻的原理? PLL鎖相環倍頻是一種重要的時鐘信號處理技術,廣泛應用于數字系統、通信系統、計算機等領域,具有高可靠性、高精度、快
    的頭像 發表于 09-02 14:59 ?3293次閱讀

    pll鎖相環的作用 pll鎖相環的三配置模式

    pll鎖相環的作用 pll鎖相環的三配置模式? PLL
    的頭像 發表于 10-13 17:39 ?3657次閱讀

    鎖相環(PLL)基本原理 當鎖相環無法鎖定時該怎么處理的呢?

    鎖相環(PLL)基本原理 當鎖相環無法鎖定時該怎么處理的呢? 鎖相環(Phase Locked Loop, PLL)是
    的頭像 發表于 10-23 10:10 ?3394次閱讀

    鎖相環PLL的工作原理 鎖相環PLL應用領域

    鎖相環(Phase-Locked Loop,簡稱PLL)是一種電子電路,它能夠自動調整輸出信號的相位,使其與輸入信號的相位同步。這種電路在電子工程領域有著廣泛的應用,特別是在頻率合成、時鐘恢復、調制
    的頭像 發表于 11-06 10:42 ?1112次閱讀
    主站蜘蛛池模板: 奇米4色| 欧美性网| 日本美女黄网站| 午夜一区二区免费视频| www.99在线观看| 日本精品一在线观看视频| 日本色黄| 欧美日韩国产成人精品| 免费视频色| 大象焦伊人久久综合网色视| 69久久| 天堂8中文在线最新版在线| 狠狠天天| 亚洲一区二区三区四区五区六区| 视频一区中文字幕| 亚洲国产高清人在线| 色多多·com| 久久精品9| 2020夜夜操| 久久国产免费观看| 国产yw855.c免费视频| 在线免费成人| 秋霞一级特黄真人毛片| 国产男人女人做性全过程视频| 午夜高清福利| 在线播放网址| 中文字幕第8页| 人人爽人人看| bt天堂磁力搜索| 福利一级片| 99热网站| 麻豆国产一区二区在线观看| 最新福利网站| aa在线视频| 一级片 在线播放| 你懂的在线免费观看| 一级录像| 开心丁香婷婷深爱五月| 亚洲国产精品va在线观看麻豆| 欧美二级黄色片| 天天做天天操|