女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

【有那么點詳細的CW32學習筆記】看手冊配置時鐘樹

jf_08851166 ? 來源:jf_08851166 ? 作者:jf_08851166 ? 2023-08-17 14:54 ? 次閱讀

本章針對CW32F030C8T6的時鐘樹進行詳細解析,續第一章啟動文件的相關講解。

上一章講到,單片機的啟動文件會使用單片機內部的RC振蕩器作為單片機的啟動時鐘,并且該時鐘頻率被設置為48MHz。但講解有疏漏,根據編程手冊的描述,該48MHz僅為HSI頻率,而非輸送到時鐘總線上的頻率,在進入時鐘總線之前,該時鐘會被分頻(也就是降低頻率),在不進行任何配置的情況下,這個48M的信號會被6分頻。

wKgaomTdwDyAKxhFAAK8fsm0RSI617.png

這個圖包含很多信息,但是圖中的彩色字信息并非全部來自此圖,更多的信息需要結合代碼和寄存器描述來獲得:

1.HSI被配置為48M是通過啟動文件中的SystemInit函數得知的。

2.系統選擇HSI作為啟動時鐘是通過編程手冊“時鐘與復位”一章得知的。

3.HSI之后的預分頻器被設置為6分頻,是通過查看指示該分頻器的寄存器得知的。

下面以信息3為例,講解如何查看此圖中的相關寄存器:

在經過SYSCTRL_CR0.SYSCLK寄存器選擇之后,系統時鐘SysClk會在經過分頻后送入內核與各個外設,這一信息流程圖與粉色箭頭已經清晰展示。

在手寫箭頭指向的方框中,有1、...、16的字樣,表示該預分頻器可以進行這些倍數的分頻。所謂分頻比如48M,6分頻,其分頻結果就是48M/6 = 8M,2分頻就是24M,簡單的除法。

方框下方是該分頻器對應的控制寄存器,寄存器的名字并不一定完全叫這個,但是這個名字可以很容易就被理解為預分頻器控制相關的寄存器,該寄存器名字拆解版本是:SYS(系統)CTRL(控制)HSI.DIV(分頻),這套命名系統是通用的,即使使用的是別的單片機,也可以根據這套命名規則快速確認寄存器的功能。

通過查看編程手冊時鐘與復位章節的寄存器描述,此寄存器DIV位的值默認為6。而HSI頻率的設置則是該寄存[10:0]位的TRIM位決定的。

wKgaomTdwO-ARVEbAANsG5JIU9c938.png

只需要沿著紫色箭頭的方向配置相關的寄存器,單片機就能夠正常啟動,但這一步并不需要開發者親自去做,芯片廠家提供的啟動文件和庫可以自動完成這一步。但不論怎么說RC振蕩器的精度有限,且8M的速度放在48MHz主頻的內核上也確實不夠看,因此大部分時候,都需要使用外部晶振提供的時鐘,通過鎖相環倍頻之后達到48M,最后通過時鐘線送入內核和外設。下面講解怎么配置才能得到48MHz的高精度高速時鐘信號:

wKgZomTdwPeABsC_AAHbKWwcGyk219.png

首先,電路板上需要有一個在范圍內的晶體,晶體的兩個引腳需要在外圍電路的配合下連接到單片機的晶體輸入引腳,同時IO需要工作在正確的工作模式。

wKgaomTdwP6ABx8DAAV6t55immg802.png

硬件部分準備完成了,接下來就是配置HSE和PLL相關的寄存器了。下面是相關的配置代碼:

wKgZomTdwQaAW00-AAQIv59yul8789.png

首先需要打開HSE功能,允許單片機接收HSE提供的震蕩信號。

然后配置PLL的分頻系數,這將決定鎖相環的輸出頻率,此處設置為1分頻,也就是不分頻。

使能PLL功能,并告知用到的時鐘源、時鐘頻率、倍頻系數,這對應三個入口參數。

將flash的等待周期設置為3個時鐘周期,部分單片機需要進行這一步操作,原因會在后面細說。

進行時鐘切換,按照注釋完成準備工作之后即可切換。

先查看HSE使能函數:

wKgZomTdwRuAfNh8AAT8ZHB2ruM247.png

僅展示主體部分,函數注釋未列出,但CW32的時鐘配置庫函數注釋相對來說很詳細,推薦配置都寫在函數注釋里面,不懂得寄存器配置的小伙伴可以直接根據推薦進行配置,如果有更深入的需求,直接查看芯片手冊對應的寄存器描述即可。后續的參數配置直接根據注釋進行推薦配置即可,在PLL與HSE相關的寄存器配置完成之后,48M的時鐘信號就已經產生了,只不過系統的時鐘源還不是這個(記得那個梯形的選擇器嗎?),下一步就是切換時鐘源,讓系統工作在48M的頻率下。切換時鐘?我知道你很急,但是先別急,雖然一般情況下確實可以直接切換了,但是CW32有個需要注意的地方,那就是flash的配置。

為什么CW32需要進行flash配置之后才能切換時鐘源?

我們都知道,寫的程序都存儲在flash中,等到需要執行程序的時候,CPU會和flash進行通信,取出flash中的指令然后執行。問題來了,既然程序需要通過某種通信方式傳輸到CPU,那這個通信傳輸的速度一定有個上限,這個上限就是flash的讀寫速度上限,當flash的實際讀寫速度與其允許的讀寫速度不匹配時,flash與CPU之間的通信就會出現問題,之后就可以理解為CPU有高速取指令需求,但是flash無法在這個速度下跟上CPU的請求速度,這個通信就斷了,程序就不動了。因此我們需要設置flash,讓他多等幾個時鐘周期再響應,這樣flash就能適應更高頻率的讀取請求,并且在此程序的配置中,需要使能預取指令和緩存功能,這兩個功能可以讓flash與CPU更好地配合以實現單片機的高速運行。障礙都解決了,接下來真的只需要切換時鐘即可。對比部分:這一部分會列出stm32f103c8t6單片機的標準庫上電時鐘設置代碼進行對比。

wKgaomTdwSKAVcsnAAVZ3G6pRfk885.png

wKgZomTdwSqAJd-OAAQvDxFWOBE389.png

這里的條件編譯,我選擇最后一條,如果需要上電設置為別的頻率,只需要在同一個文件中把宏定義注釋取消即可。

wKgaomTdwTWAa7gKAAIBK-i6-iw725.png

下面列出設置時鐘到72M函數的一部分,此函數與CW32的時鐘初始化順序幾乎是一模一樣,首先需要將HSE使能并等待時鐘穩定,之后設置PLL的參數,配置flash為2個等待周期,再使能PLL輸出,等待PLL時鐘穩定再切換時鐘。

wKgaomTdwTyAOC16AAJrDj8SmeE820.png

wKgaomTdwZmAHJLWAAGl2rHjPlY591.png

wKgaomTdwaSAXCQkAAIYa0uMiC4308.png

可以看出,即使是不同的芯片,他們在大部分地方的操作也是一樣的,只是一些細節上有些許不同。

總結:

1.本章簡單展示了如何查找手冊來配置寄存器,且再次強調庫函數的本質就是操作寄存器。

2.單片機都會有一個時鐘樹,時鐘樹的圖可以在編程手冊(不是數據表和內核手冊)中找到。

3.部分單片機想要工作在高工作頻率下,需要設置flash等待時間并打開緩存和預取指令使能。

審核編輯 黃宇

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

    關注

    31

    文章

    5416

    瀏覽量

    123224
  • 時鐘源
    +關注

    關注

    0

    文章

    97

    瀏覽量

    16229
  • CW32
    +關注

    關注

    1

    文章

    242

    瀏覽量

    1084
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    那么點詳細CW32學習筆記】單片機啟動\庫函數構成

    此篇文章是CW32F030C8T6的參考資料,很詳細,適合初學者。
    的頭像 發表于 08-10 11:13 ?1393次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點</b><b class='flag-5'>詳細</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】單片機啟動\庫函數構成

    那么點詳細CW32學習筆記】通用定時器——輸出比較

    本章以CW32通用定時器為例介紹單片機定時器的用法。 定時器是單片機中一個非常傳統且重要的外設,定時器的 本質其實就是一個計數器 ,只不過被計數的對象是定時器的時鐘源。定時器要正常工作,需要這幾
    的頭像 發表于 12-28 11:24 ?1660次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點</b><b class='flag-5'>詳細</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】通用定時器——輸出比較

    CW32移植Free-RTOS】CW32開發者扶持計劃

    CW32配置Free-RTOS全過程,CW32開發者扶持計劃
    的頭像 發表于 04-18 09:38 ?6543次閱讀
    【<b class='flag-5'>CW32</b>移植Free-RTOS】<b class='flag-5'>CW32</b>開發者扶持計劃

    那么點詳細CW32學習筆記】模數轉換器

    來說,想要判斷大小就需要有對比,因此該數字指示的電壓大小實際上是一個比較的結果。 ADC將需要測量的電壓信號Ut與已知電壓的信號U作比較,并最終輸出一個數字表示Ut相當于多少比例的U。 接下來就可以看看CW32的ADC外設結構框圖了,
    的頭像 發表于 02-29 09:41 ?1069次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點</b><b class='flag-5'>詳細</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】模數轉換器

    【應用筆記CW32 自舉程序中使用的 ISP 協議

    提供的 ISP 模式,通過 UART 串口方便地實現對 CW32 微控制器片上 FLASH主存儲器的擦除和燒寫。本應用筆記將介紹如何進入 CW32 微控制器 ISP 模式,以及所使用的 ISP 協議,并
    發表于 06-06 13:26

    CW32 MCU開發資料匯總(手冊、工具、固件庫)

    1、CW32 MCU數據手冊:*附件:CW32L083數據手冊.pdf*附件:CW32F030數據手冊
    發表于 07-27 14:47

    STM32Cube學習教程之時鐘配置詳細資料概述

    本文檔的主要內容詳細介紹的是STM32Cube學習教程之時鐘配置詳細資料概述。
    發表于 08-14 08:00 ?3次下載
    STM32Cube<b class='flag-5'>學習</b>教程之<b class='flag-5'>時鐘</b><b class='flag-5'>樹</b><b class='flag-5'>配置</b>的<b class='flag-5'>詳細</b>資料概述

    應用筆記(二)| 武漢芯源CW32自舉程序中使用的ISP協議

    CW32微控制器片上FLASH主存儲器的擦除和燒寫。本應用筆記將介紹如何進入CW32微控制器ISP模式,以及所使用的ISP協議,并詳細介紹支持的每個命令。01目標芯片進入ISP模式的
    的頭像 發表于 07-11 16:08 ?1792次閱讀
    應用<b class='flag-5'>筆記</b>(二)| 武漢芯源<b class='flag-5'>CW32</b>自舉程序中使用的ISP協議

    CW32實時時鐘(RTC)介紹

    CW32實時時鐘(RTC)介紹
    的頭像 發表于 10-24 15:36 ?1509次閱讀
    <b class='flag-5'>CW32</b>實時<b class='flag-5'>時鐘</b>(RTC)介紹

    應用筆記-CW32 自舉程序中使用的 ISP 協議

    ,通過UART串口方便地實現對CW32微控制器片上FLASH主存儲器的擦除和燒寫。本應用筆記將介紹如何進入CW32微控制器ISP模式,以及所使用的ISP協議,并詳細介紹支持的每個命令。
    發表于 06-06 13:37 ?7次下載

    基于CW32的物聯網應用

    CW32】基于CW32的物聯網應用
    的頭像 發表于 11-02 15:55 ?1100次閱讀
    基于<b class='flag-5'>CW32</b>的物聯網應用

    那么點詳細CW32學習筆記】通用異步收發器—發送篇

    本章介紹CW32通用異步收發器的使用。 雖然大部分時候會被簡單稱為“串口”,但實際上 用“串口”來指代UART并不正確 。串口對應并口的概念,在串口通信中,數據被以二進制形式發送,并且每次發送都只
    的頭像 發表于 11-17 17:30 ?1140次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點</b><b class='flag-5'>詳細</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】通用異步收發器—發送篇

    那么點詳細CW32學習筆記】IIC接口-主機發送

    例程鏈接 : https://pan.baidu.com/s/1s1XwqDFkO8fK4SRSTKsNhA?pwd=mshk 提取碼 :mshk 本章將介紹CW32的IIC接口,并最終點亮一塊
    的頭像 發表于 01-11 09:53 ?897次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點</b><b class='flag-5'>詳細</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】IIC接口-主機發送

    那么點詳細CW32學習筆記】IIC接口-OLED驅動

    ,實際上就是密集LED點陣,所以必定有用于控制大量LED燈的驅動器,本教學使用的OLED驅動是SSD1306,該驅動器多種通信接口,這里使用IIC接口(具體使用什么接口,數據手冊上會有詳細介紹) 根據SSD1306數據
    的頭像 發表于 01-11 09:49 ?1091次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點</b><b class='flag-5'>詳細</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】IIC接口-OLED驅動

    那么點詳細CW32學習筆記】ADC“自動模式”

    上個章節介紹了ADC的基本框架和用法,本章節會較為全面地講解如何靈活地使用ADC功能。 通常來說,外設執行的各種命令都是由CPU發出的,比如我們需要進行AD轉換,就通過某個寄存器標志位啟動ADC,隨后用判斷函數去檢測執行情況,亦或是開啟中斷功能,轉換完成之后會提示CPU,再由CPU判斷接下來該做什么。 這當然沒問題,不過有些時候,我們需要實現一些循環重復的功能,比如在做傅里葉分析的時候,需要按照固定間隔采集一定數量的數據,比如采
    的頭像 發表于 03-04 18:09 ?1389次閱讀
    【<b class='flag-5'>有</b><b class='flag-5'>那么點</b><b class='flag-5'>詳細</b>的<b class='flag-5'>CW32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】ADC“自動模式”