久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 17953|回復: 11
打印 上一主題 下一主題
收起左側

STM32F103時鐘配置流程

  [復制鏈接]
跳轉到指定樓層
樓主
ID:276663 發表于 2018-3-15 11:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 IdeaMing 于 2018-3-16 10:15 編輯

STM32F103時鐘配置流程



前言:
一般情況下單片機的時鐘配置是單片機程序中的第一步,也是很重要的一步。這時候我們需要考慮以下幾個問題。
1. 系統時鐘的時鐘源用哪個。
2. 系統時鐘頻率要多少。
3. 每個模塊的時鐘頻率要多少。
4. 如果外部時鐘出了問題,這個時候時鐘是怎么運行的。

下面就針對性的講一講STM32F103的時鐘配置。



知識點:
1. 系統復位后,HSI振蕩器被選為系統時鐘。當時鐘源被直接或通過PLL間接作為系統時鐘時,它將不能被停止。

2. STM32F103的三個可以作為系統時鐘的時鐘源,分別是HSI、HSE、PLL。而PLL的時鐘源是HSI/2(內部RC振蕩器二分頻)、HSE。

3.如果使用HSI,系統時鐘我們能達到的最大頻率是64MHz,如果使用HSE,系統時鐘最大頻率是72MHz

4.APB時鐘有低速PCLK1和高速PCLK2PCLK1是從HCLK二分頻得到的,最大36MHZ,根據上一條知識點如果是使用HSI,則最快是32MHz

5. PLL的設定需要在使能之前,一旦PLL使能后參數不可更改。

6.附錄是一些縮寫的英文全稱,也有一些補充的知識點。


步驟:
第一步     初始化時鐘
         不管現在SYSCLK的時鐘源是哪個,我們要更換時鐘源。先RCC_DeInit();

第二步              打開時鐘
         內部高速時鐘HSI           RCC_HSICmd(ENABLE);
         外部高速時鐘HSE          RCC_HSEConfig(RCC_HSE_ON);

第三步              等待時鐘晶振工作
         HSI            While(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)==RESET);
         HSE           While(RCC_GetFlagStatus(RCC_FLAG_HSERDY)==RESET);

第四步              設置AHB時鐘HCLK
                                                                 RCC_HCLKConfig(RCC_SYSCLK_Div1);
        分頻系數自己設定,一般都是RCC_SYSCLK_Div1即不分頻。

第五步              設置低速APB時鐘
                                                                 RCC_PCLK1Config(RCC_HCLK_Div2);

第六步              設置高速APB時鐘
                                                                 RCC_PCLK2Config(RCC_HCLK_Div1);
第七步              設置Flash預緩沖
                                                                 FLASH_SetLatency(FLASH_Latency_2);
                                              FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);          // 使能flash預緩沖
       Flash的操作也沒有總線時鐘快,所以需要總線在操作flash時稍作等待。推薦根據HCLK設置。
0-24MHz時,取FLASH_Latency_0;24-48MHz,取FLASH_Latency_1;48-72MHz時,取FLASH_Latency_2。

第八步              設置PLL                     如果不使用PLL,請略過此步驟
         HSI                                                  RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16 );
         HSE                                                 RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9 );

第九步              打開PLL                     如果不使用PLL,請略過此步驟
                                                                 RCC_PLLCmd(ENABLE);

第十步              等待PLL工作          如果不使用PLL,請略過此步驟
                                                                 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)== RESET);

第十一步              設置系統時鐘
         HSI                                                  RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
         HSE                                                 RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
         PLL                                                  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
第十二步         判斷是否是設置的時鐘
         HSI                                                  while(RCC_GetSYSCLKSource()!= 0x00);
         HSE                                                 while(RCC_GetSYSCLKSource()!= 0x04);
         PLL                                                  while(RCC_GetSYSCLKSource()!= 0x08);



附錄:一些縮寫的英文全稱及中文翻譯,幫助理解記憶。
IWDG       IndependentWatchdog                                   獨立看門狗

RTC           RealTime Clock                                                      實時時鐘
                   時鐘源可以是LSI,或者LSE,再或者HSE128分頻。
LSI             LowSpeed Internal                                                       內部低速時鐘
                   RC振蕩器,頻率為40kHz。供IWDG使用,還能作為RTC的時鐘源。
HSI            HighSpeed Internal                                             內部高速時鐘
                   RC振蕩器,頻率為8MHz
HSE           HighSpeed External                                             外部高速時鐘
                   可接石英/陶瓷諧振器,或者接外部時鐘源,頻率范圍為4MHz~16MHz

PLL          PhaseLockedLoop                                                   鎖相環倍頻輸出
                   其時鐘輸入源可選擇為HSI/2HSE或者HSE/2。倍頻可選擇為2~16倍,

SYSCLK     SystemColock                                                                 系統時鐘

AHB          AdvancedHigh performance Bus                   高級高性能總線
                   AHB主要用于高性能模塊(CPUDMADSP)之間的連接。

APB          Advanced PeripheralBus                                  高級外圍設備總線
                   APB主要用于外設模塊(ADCUSBSPIUART)AHB之間的連接。

HCLK         Advanced High performance Bus Clock                 高級高性能總線時鐘
                   就是SYSCLK經過AHBPrescaler(預分頻器)后得到的AHB的時鐘。

PCLK         PeripheralBus Clock                                            外圍設備總線時鐘                  
                   PCLK有兩個,一個是低速的PCLK1,另一個是高速的PCLK2
                   PCLK1是經過APB1Prescaler后得到的APB1時鐘。
PCLK2是經過APB2 Prescaler后得到的APB2時鐘。

FCLK                   FreeRuning Clock                                                  自由運行時鐘
為供給CPU內核的時鐘信號,CPU的主頻就是指這個信號;1/FCLK就是CPU時鐘周期。
為什么叫自由運行時鐘呢?下面是別人家的講解。
ARMJISHU注:FCLK 為處理器的自由振蕩的處理器時鐘,用來采樣中斷和為調試模塊計時。在處理器休眠時,通過FCLK 保證可以采樣到中斷和跟蹤休眠事件。 Cortex-M3內核的“自由運行時鐘(free running clock)”FCLK。“自由”表現在它不來自系統時鐘HCLK,因此在系統時鐘停止時FCLK也繼續運行。FCLK和HCLK 互相同步。FCLK 是一個自由振蕩的HCLK。FCLK 和HCLK 應該互相平衡,保證進入Cortex-M3 時的延遲相同。


STM32F103時鐘配置流程.pdf (394.67 KB, 下載次數: 165)



評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:276663 發表于 2018-3-16 09:06 | 只看該作者
這個時鐘配置完了之后就是端口時鐘的開關,外設總線的時鐘速度,比如SPI.
回復

使用道具 舉報

板凳
ID:276663 發表于 2018-3-16 10:16 | 只看該作者
IdeaMing 發表于 2018-3-16 09:06
這個時鐘配置完了之后就是端口時鐘的開關,外設總線的時鐘速度,比如SPI.

第二版本增加了第七步,flash的操作延時設置和flash預緩沖的設置。
回復

使用道具 舉報

地板
ID:127084 發表于 2018-3-16 15:47 | 只看該作者
非常有用,果斷下載 先謝樓主
回復

使用道具 舉報

5#
ID:68875 發表于 2018-7-8 21:49 | 只看該作者
good job
回復

使用道具 舉報

6#
ID:269314 發表于 2018-7-9 17:48 | 只看該作者
贊!真的很清楚明白,小弟有個疑問,恭請樓主幫忙解惑,感謝!

小弟啟用的是外部時鐘,即HSE,前十步都與樓主一致,但在第十一、十二步,使用的是PLL對應的代碼,這個與使用HSE對應的代碼有啥區別和影響呢?再次感謝!
回復

使用道具 舉報

7#
ID:231528 發表于 2018-7-9 21:20 | 只看該作者
非常感謝
回復

使用道具 舉報

8#
ID:276663 發表于 2018-8-23 16:40 | 只看該作者
pc333 發表于 2018-7-9 17:48
贊!真的很清楚明白,小弟有個疑問,恭請樓主幫忙解惑,感謝!

小弟啟用的是外部時鐘,即HSE,前十步都 ...

HSE就是你外面接的那個晶振頻率。

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

9#
ID:112471 發表于 2018-11-15 13:12 | 只看該作者
厲害啊
回復

使用道具 舉報

10#
ID:51905 發表于 2019-1-16 17:13 | 只看該作者
不錯~~
回復

使用道具 舉報

11#
ID:436417 發表于 2019-6-11 20:11 | 只看該作者
非常有用
回復

使用道具 舉報

12#
ID:461428 發表于 2019-6-23 19:03 | 只看該作者
急需的東東,,謝謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚州精品天堂中文字幕 | 成人免费一区二区三区视频网站 | 亚洲国产成人精品女人久久久 | 精品久久香蕉国产线看观看亚洲 | 亚洲一区二区av | 国产ts人妖另类 | 狠狠伊人 | 亚洲精品中文字幕在线观看 | 色99视频 | 中文字幕日韩一区 | 性网址 | 在线国产一区二区 | 亚洲网站在线观看 | 亚洲二区在线 | 国产福利资源在线 | 中文字幕在线精品 | 日韩视频成人 | 蜜桃官网 | 国产精品国产三级国产aⅴ入口 | 成人性生交大片免费看r链接 | 亚洲国产精品久久 | 国产日韩欧美激情 | 亚洲精品区 | 国产精品久久国产精品久久 | 99综合| 久久久久久毛片免费观看 | 亚洲视频在线免费观看 | 日日做夜夜爽毛片麻豆 | 国产精品日韩一区二区 | 天天干天天插天天 | 国产婷婷 | 三区在线 | 成人小视频在线观看 | 视频在线观看亚洲 | 亚洲美女网站 | 久久99深爱久久99精品 | 黄色国产| 国产亚洲一区二区三区在线观看 | 欧美日韩高清一区 | 日本黄色激情视频 | 97精品超碰一区二区三区 |