欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13237|回復: 3
收起左側

關于STM32外接12MHz晶振的處理辦法

[復制鏈接]
ID:80436 發表于 2015-5-20 14:10 | 顯示全部樓層 |閱讀模式

由于STM32F10x庫官方采用的是默認的外接8MHz晶振,因此造成很多用戶也采用了8MHz的晶振,但是,8MHz的晶振不是必須的,其他頻點的晶振也是可行的,只需要在庫中做相應的修改就行。
    在論壇上看到很多用戶反映,使用外接12MHz的晶振,會造成很多的問題,如USART的波特率不正確,Systick走時不準等問題,在無論是在實際調試還是在軟件模擬中都會發現這個情況,其實,這不能怪ST官方,我們必須肯定ST官方為方便用戶開發所做的努力,下面我們就通過簡單的三個步驟就可以讓你隨意的使用4—16MHz之內任何頻點的晶振,我們以STM32F10x_StdPeriph_Lib_V3.4.0為例說明。
    第一步,打開stm32f10x.h,將
#define HSE_VALUE    ((uint32_t)8000000)
修改為:
#define HSE_VALUE    ((uint32_t)12000000)

    第二步,打開system_stm32f10x.c,修改PLL參數,將
   
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
                                        RCC_CFGR_PLLMULL));
    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);
修改為:  
   
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
                                        RCC_CFGR_PLLMULL));
    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);
    至此,原文件已經修改完成,如果你想將主頻修改至其他頻率,請自行修改。但是,到現在,如果您直接編譯調試的話,就會出現上文所說的USART的波特率不正確,Systick走時不準等問題,原因就是我們需要進行第三部的修改,這個修改不是在原文件中,而是在編譯環境中。我們已Keil MDK為例說明。
    第三步,打開你已經建立的STM32工程,選擇Projects-〉Options for target ***,找到Target標簽,你會發現,外接的晶振默認還是8MHz,我們將外接的晶振參數修改為12MHz,確定保存,再編譯,調試,你就會發現,所有的參數都回歸的正常軌道,設置波特率為9600,它也不會跑到14400,設置Systick為1ms中斷,它不會1.5ms中斷。

現在,我們也得出了一個結論,在keil MDK編譯環境的設置參數的優先級是高于原文件中的設置的。



回復

使用道具 舉報

ID:247778 發表于 2020-10-27 14:00 | 顯示全部樓層
48M的話怎么除啊,,,
回復

使用道具 舉報

ID:433680 發表于 2020-10-29 08:53 | 顯示全部樓層
a2569808500 發表于 2020-10-27 14:00
48M的話怎么除啊,,,

RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL1);
回復

使用道具 舉報

ID:473104 發表于 2020-10-30 08:10 | 顯示全部樓層
這個可以,之前碰到過沒搞定
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表