色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

基于STM32系列的時鐘調高時出現異常的案例分享與解決方法

茶話MCU ? 2017-12-18 13:53 ? 次閱讀

近日某論壇STM32用戶反饋,使用STM32F103內部時鐘,把系統時鐘配置成64MHz單片機就不跑了,配置成36MHz程序就正常妥妥的,頻率稍高點就容易導致死機。他貼出的代碼如下:

void RCC_Configuration(void)

{

RCC_DeInit();//將外設 RCC寄存器重設為缺省值

RCC_HSICmd(ENABLE);//使能HSI

while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);//等待HSI使能成功

//FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

//FLASH_SetLatency(FLASH_Latency_2);

RCC_HCLKConfig(RCC_SYSCLK_Div1);

RCC_PCLK1Config(RCC_HCLK_Div2);

RCC_PCLK2Config(RCC_HCLK_Div1);

//設置 PLL 時鐘源及倍頻系數

RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16);

。。。。。。

結合他的問題描述及他貼出來的代碼,大致可以判斷出很可能是因為他屏蔽了指令預取和flash讀取等待延遲的參數配置而導致的異常。即上面兩條紅色標注出來的代碼。

后來我明確地提醒他這點后,他似乎并沒及時反應過來,還折騰了幾下才開啟了上述配置,問題最終得以解決。

其實,關于這個問題經常有人遇到,尤其是那些基于STM32標準固件庫進行開發或自行編程時的新手更容易碰到這個問題。主要原因是他們對上述兩行代碼的功能不了解,導致有意或無意的將庫例程中相關代碼屏蔽掉無視掉不做配置、或者配置不正確。

這里將這個問題再次分享出來,對上面兩行代碼簡單做些解釋。希望更多人對此有所知曉,少在這個地方走彎路。

這句FLASH_PrefetchBufferCmd();用來作為flash指令預取功能的使能或禁用。

現有STM32各個系列都是基于ARM cortexM內核的微處理器,采用多級流水線的哈佛結構,即一條指令的執行分割為幾個階段,如取指、譯碼、執行等,使得當前指令的取指操作完成后就可以開始后續指令的取指、譯碼等操作,程序指令就這樣像流水一樣執行下去,大大提高了指令的執行效率。

具體到STM32各系列單片機,這個指令預取功能的開啟或關閉可以軟件配置,一般配置為開啟。要注意的是,芯片復位后不同的系列該功能有的默認為開啟有的則默認為關閉。比方STM32F1系列的flash指令預取功能就是默認打開的,當然你也可以關閉。其中,明確要求打開的情景就是當那個AHB時鐘預分頻系數不等于1時。

基于STM32系列的時鐘調高時出現異常的案例分享與解決方法

再比如STM32F4系列,它的指令預取功能在芯片復位后是默認關閉的,你可以自行打開。但明確要求關閉的場景就是芯片的供電電壓低于2.1V時。

其實,STM32F4的預取功能與STM32F1不盡一樣,STM32F4、STM32F2、STM32L4、STM32F7等系列芯片使用了ST的專利技術ART存儲加速器【Adaptive real-time memory accelerator】。該加速器使用指令預取隊列和分支跳轉緩存技術,從而提高 Flash 程序代碼執行速度,使得CPU即使在其最高主頻下也能完美實現0等待執行flash程序指令。

上面大致講了指令預取功能,預取主要是為了實現指令讀取和執行的高效性。具體細節請參考相關技術手冊。我們知道CPU的運行速度可調,可以很快,通常使用高速總線訪問FLASH接口控制器,FLASH控制器收到來自CPU的取指指令后然后去讀取相應地址的指令或數據。Flash控制器自身的讀取速度相比CPU的高速請求來說可能會出現滯后,往往需要CPU做相應的延時等待。為了讓CPU準確及時讀取 Flash 數據,我們須根據 CPU 時鐘頻率、FLASH控制器自身特性以及器件供電情況在Flash存取控制寄存器(FLASH_ACR)中正確地編程等待周期數(LATENCY),類似上面提到的第二句代碼:

FLASH_SetLatency(FLASH_Latency_n);

這里的等待周期數視不同的STM32系列也各有差異,不妨以STM32F4為例:

基于STM32系列的時鐘調高時出現異常的案例分享與解決方法

下面是個關于STM32F4系列部分產品線的LATENCY設置的表格。從表格中可以看出LATENCY參數的設置與CPU的時鐘、電源電壓都有關系。另外,當電源電壓在2.1V以下上要關閉預取功能。

基于STM32系列的時鐘調高時出現異常的案例分享與解決方法

在設置上面的等待周期參數時,選擇合適的就好。不難理解,設置太大了影響CPU性能的充分發揮,太小了容易導致異常。

具體回到開頭的案例,它出現死機問題,極可能是因為沒有合理配置等待周期參數導致異常,因為它屏蔽了參考例程中那兩句配置代碼,即使用其默認功能,對于STM32F1,指令預取功能默認為開啟。而STM32F1系列芯片的latency默認值即為0,無等待。這樣的話,當他把時鐘調高到一定程度時出現死機就不難理解了。

另外,當他反饋時鐘調高產生異常時,我還給他提醒了注意檢查VDDA的電源情況。我碰到有人遇到因VDDA沒接好使得PLL不正常的情況。我們知道,對于STM32芯片,調高其工作時鐘,往往借助于鎖相環。而PLL的供電來自VDDA,如果PLL沒有被正常供電,也是個非常隱蔽的麻煩。曾經有個客戶為此折騰好久,才愿沉下心來檢查其“壞品”的電源,結果發現有個VDDA腳虛焊。一直以芯片低頻沒問題,頻率高了就異常為由懷疑芯片品質問題而耽誤時間。

基于STM32系列的時鐘調高時出現異常的案例分享與解決方法

最后給點建議,做STM32開發的話,尤其是新手,如果參照ST的官方例程的話,有些配置在沒看懂的情況下不要輕易屏蔽或修改。我碰到多個類似本案隨意屏蔽例程中的初始化配置代碼或斷言代碼出現異常,自己又找不到方向的。另外,盡可能使用ST官方的stm32cubeMx圖形配置工具做基本的配置,通過它來生成初始化配置文件,這樣方便省事很多。當然,即使使用STM32CUBEMX配置也不是萬能的。比方:曾經有人使用STM32F0開發產品,用CUBEMX配置初始化文件,剛開始配置時時鐘選擇得比較低, STM32CubeMx自然根據他選擇的時鐘做了相關參數配置。后來他自己在用戶代碼里手動調高了時鐘,而不知相應調整跟FLASH讀取等待有關的參數,也是發生跟本案同樣的情況。所以呢,如果能對原理有更多更深的把握那是再好不過了。


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

    關注

    2270

    文章

    10910

    瀏覽量

    356580
  • 時鐘
    +關注

    關注

    11

    文章

    1736

    瀏覽量

    131582
收藏 人收藏

    評論

    相關推薦

    STM32各個系列時鐘調高出現異常案例

    關于這個問題經常有人遇到,尤其是那些基于STM32標準固件庫進行開發或自行創建工程的新手更容易碰到這個問題。主要原因是因為他們對上述兩行代碼的功能不了解,導致有意或無意的將庫例程中相關代碼屏蔽掉無視掉而不做配置、或者配置不正確。
    的頭像 發表于 12-20 07:27 ?7695次閱讀
    <b class='flag-5'>STM32</b>各個<b class='flag-5'>系列</b><b class='flag-5'>時鐘</b><b class='flag-5'>調高</b>時<b class='flag-5'>出現異常</b>案例

    STM32串口多機通訊出現異常的原因?怎么解決?

    STM32串口多機通訊出現異常的原因?怎么解決?
    發表于 12-15 06:22

    STM32f429在掛載yaffs文件系統時出現異常是何原因

    rtthread V3.1.5stm32f429-atk-apollo問題點:nand flash初始化成功;但在掛載yaffs文件系統時,出現異常。代碼如下
    發表于 09-26 14:47

    使用SPIFFS方法時,ESP崩潰并出現異常的原因?

    ESP8266 崩潰并出現異常 (28) 加載禁止...您有經驗嗎?使用 2.3.0-rc2 工作正常....有什么建議嗎?提前致謝
    發表于 02-24 07:37

    NuEclipse調試OpenOCD failed出現異常怎么解決?

    最近學習NuEclipse,調試NuTiny-EVB-Mini51板,編譯正常,但調試出現異常
    發表于 06-20 08:08

    局域網中電纜出現異常衰減的分析及解決

    局域網中電纜出現異常衰減的分析及解決 異常信號衰減就是說信號已經在線路上傳輸了,但是,這個信號的強度在降低。引起這個問
    發表于 04-14 16:50 ?757次閱讀

    CPU時鐘調高出現異常的案例及解決方案分享

    時鐘調高出現異常的案例分享.
    的頭像 發表于 12-18 14:00 ?7837次閱讀
    CPU<b class='flag-5'>時鐘</b><b class='flag-5'>調高</b>時<b class='flag-5'>出現異常</b>的案例及解決方案分享

    反無人機系統出現異常應該如何解決

    很多單位已經購買了反無人機系統,大家在用反無人機系統的時候,可能會出現異常,真正的了解這些異常出現的原因,并且能夠及時地做好處理,這對于我們大家來說都是非常重要的事情,但是有些人在做的過程中,他們卻根本就沒有積極的去關注清楚,因
    發表于 10-11 16:14 ?1373次閱讀

    深圳特信無人機系統出現異常怎么解決

    很多單位已經購買了反無人機系統,大家在用反無人機系統的時候,可能會出現異常,真正的了解這些異常出現的原因,并且能夠及時地做好處理,這對于我們大家來說都是非常重要的事情,但是有些人在做的過程中,他們卻
    發表于 11-15 17:15 ?1099次閱讀

    STM32出現異常復位解決方法

    STM32出現HardFault_Handler解決方法故障的原因主要有兩個方面:1、內存溢出或者訪問越界。這個需要自己寫程序的時候規范代碼,遇到了需要慢慢排查。2、堆棧溢出。增加堆棧的大小
    發表于 12-08 11:51 ?10次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>出現異常</b>復位<b class='flag-5'>解決方法</b>

    儀表指示出現異常系統故障原因

    儀表指示出現異常現象(指示偏高、偏低、不變化、不穩定等),本身包含兩種因素:工藝,儀表正確地反映出工藝異常情況;儀表,由于儀表(測量系統)某一環節出現故障而導致工藝參數指示與實際不符。這兩種因素總是混淆在一起,很難馬上判斷出故障
    的頭像 發表于 11-02 10:47 ?2268次閱讀

    APM32F030X8_配置差異_APM32庫在main前時鐘配置出現異常

    APM32F030X8_配置差異_APM32庫在main前時鐘配置出現異常
    發表于 11-09 21:03 ?0次下載
    APM32F030X8_配置差異_APM32庫在main前<b class='flag-5'>時鐘</b>配置<b class='flag-5'>出現異常</b>

    APM32F030C8T6_ADC_ADC初始化出現異常

    APM32F030C8T6_ADC_ADC初始化出現異常
    發表于 11-09 21:03 ?0次下載
    APM32F030C8T6_ADC_ADC初始化<b class='flag-5'>出現異常</b>

    雷達液位計為何會出現異常顯示

    當雷達液位計用的久了,或者缺乏足夠的維護,就會發生故障,從而會有各種異常的顯示,造成不同異常顯示的原因是多樣的,因此也要不同的方法去解決。下面,我們就來說說雷達液位計出現異常顯示的原因
    的頭像 發表于 03-15 14:54 ?1274次閱讀

    減速電機日常出現異常原因及解決方法

    減速電機現應用的領域越來越多,日常中或許會遇到減速電機出現異常情況,以下我們來了解一下日常出現異常原因及解決方法
    的頭像 發表于 12-27 15:39 ?1632次閱讀
    減速電機日常<b class='flag-5'>出現</b>的<b class='flag-5'>異常</b>原因及<b class='flag-5'>解決方法</b>
    主站蜘蛛池模板: 久久久96| 在线中文字幕| 十八禁久久成人一区二区| 国产电影午夜成年免费视频| 亚洲免费无码中文在线| 麻豆久久婷婷五月国产| 处女座历史名人| 中文字幕 日韩 无码 在线| 青青青青青青青草| 国内精品久久久久影院男同志| 99视频国产在线| 私人玩物在线观看| 暖暖的高清视频在线观看免费中文 | 亚洲欧美精品无码一区二在线| 欧美高清videossexo| 自拍 偷拍 亚洲 经典| 无码AV动漫精品一区二区免费| 男男被强bl高h文| 老师真棒无遮瑕版漫画免费| 国产专区青青在线视频| 跪趴式啪啪GIF动态图27报| 26uuu老色哥| 久久精品视频免费| 国产白色视频在线观看w| 2019午夜福合集不打码| 亚洲欧美日韩在线码不卡| 肉色无边(高h)| 日本人吃奶玩奶虐乳| 免费人成在线观看视频不卡| 久青草国产在线视频| 麻豆COMCN| 欧美性xxx18一20| 日本zljzljzlj精品| 色偷偷男人天堂| 亚洲高清视频免费| 稚嫩挤奶h调教h| 99国内精品| 亚洲欧美无码2017在线| 在线免费中文字幕| av在线色| 娇妻让壮男弄的流白浆|