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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

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

jf_08851166 ? 來源:jf_08851166 ? 作者:jf_08851166 ? 2023-08-10 11:13 ? 次閱讀

本章為CW32F030C8T6時鐘的參考資料,面向初學者。

第一部分 默認時鐘和啟動文件

單片機內部基本由內核、總線、外設組成,這三部分作為數字電路,都需要開發者提供時鐘信號才能正常工作。所謂時鐘信號,就是周期脈沖信號,由電路分析可知RC振蕩電路可以產生穩定的脈沖,故單片機的時鐘信號可以由RC振蕩器提供。但是RC振蕩器提供的時鐘信號質量不高,而晶體振蕩器依靠壓電效應提供穩定的、高質量的時鐘信號。以CW32F030C8T6單片機為例,他擁有2個內部振蕩器,并且可以使用外部振蕩器輸入的脈沖信號作為時鐘。先說內部振蕩器,有HSI(高速-high speed、內部-internal)和LSI兩個震蕩器,這兩個振蕩器均為RC振蕩器,可以通過配置相關的寄存器來調整輸出頻率,一般單片機啟動的時候都會使用內部振蕩器提供的時鐘,這種RC振蕩器啟動速度很快,價格低廉,非常時候作為啟動時鐘。內部低速振蕩器一般不作為內核運行的時鐘,而是作為部分外設的時鐘,如rtc定時器實時時鐘)和看門狗。對于此款單片機,可以通過下述辦法來判斷單片機上電之后的行為,提示:一般單片機上電之后都會配置主要的時鐘參數,但配置之后工作狀態不同,后文會有對比。

1.找到單片機的啟動文件,啟動文件以“.s”后綴出現,意為start_up。

2.啟動文件由匯編語言編寫,單片機啟動一定會從啟動文件開始,而不是C語言下的main函數。

3.下圖為啟動文件截圖。

wKgaomTUVG2ANVRbAA577myiy30508.png

4.在上方文件中找到那個叫SystemInit的東西,這是個函數名字,一般來講都可以在廠商提供的庫函數中找到,cw32的在下面這個圖的文件里

wKgaomTUVHmAHDVCAAR5wOr0_So903.png

1.在執行完SystemInit函數的這三行代碼之后,單片機會正常跳轉到main函數開始執行,就像啟動文件里面寫的那樣。

至此,啟動文件主要部分及系統默認的上電時鐘已講解完。

如果你看不懂C語言,那就去補習C語言。

如果你看不懂為什么這是在操作寄存器,下一部分會教你如何看寄存器。

第二部分 庫函數和寄存器

我們都知道計算機編程最早使用的是機器語言,也就是用打點紙帶來編程,后續出現了匯編語言,使用助記符來輔助編程,再到后來的C語言,高級語言誕生,軟件開發變得更加簡單。但是到計算機這一層,他依然是使用的數字電路來工作的,至少,開發者需要操作的東西就算不是數字電路,也是個寄存器。計算機發展中,寄存器被人們用“地址”這個東西來標號,翻開編程手冊(單片機至少有三個手冊是開發者需要看的,分別是:data_sheet user_program_guide core_program_guide),你會發現每個寄存器都會有一個地址,到目前為止,32位單片機擁有非常多的寄存器,這些寄存器地址已經不會再用最直接的地址累加形式顯示出來(如0x00,0x01,0x02........)。稍微高級一些的單片機都會使用基地址+地址偏移量的形式指示寄存器的地址,如下圖所示:

wKgaomTUVIqAKew6AAOye9Ke2Qg952.png

wKgZomTUVJOAER-zAAGlCpcQCFM007.png

如果開發者想要使用位于SYSCTRL這個寄存器組下的分寄存器,如總線時鐘或是PLL時鐘,就需要用基地址+地址偏移量的方式找到這個寄存器,并賦值寄存器來配置。所謂地址偏移量,就是這個寄存器有多少字節的容量,32位單片機就是4字節,所以地址偏移量基本上就是4字節步進來累加的,某些情況會有多個寄存器一起負責一個功能的情況,這個時候偏移量要酌情理解。那地址代表了寄存器,地址和庫函數有什么聯系?C語言最精髓的東西是什么?那必然是指針,指針就用的是這種“以地址指示參數位置”的辦法,所以你可以在庫函數看到如下一系列的

宏定義:

wKgaomTUVLKARhguAAAZ25INjIA560.png

基地址。

wKgZomTUVMCAWo8aAAAnaEHxftY641.png

地址強制轉換為結構體指針。

wKgZomTUVM-AW74dAAAa51KWBdQ481.png

上面那個東西又會被定義成開發者可以直接操作的寄存器。

有朋友肯定會問,這里只有一個基地址,為什么可以用CW_SYSCTRL->REG的形式操作很多寄存器呢?由于每個寄存器都是32位的,也就是4字節,由C語言聯合體和結構體的特性,內部的地址是基地址累加的,只需要一個寄存器累加固定的偏移量,就能把結構體成員和單片機內的寄存器一一對應起來,這就是寄存器與庫函數的聯系。一旦想通寄存器和庫函數是怎么聯系起來的,單片機編程就會變成一個非常簡單的事情,因為庫函數本質上就是在用地址操作去賦值、改寫寄存器,全世界的單片機庫函數都是如此。在任何時候,開發者都可以通過直接賦值寄存器的辦法去完成自己期望的配置?,F在我們回頭看cw32系統初始化函數的最后兩行,最開始的就是基地址指針,這個是一個結構體指針,結構體由很多聯合體構成,指針選擇結構體成員,結構體成員是聯合體,所以用‘.’的方式選擇了TRIM成員進行賦值,賦的值就是等號右邊的部分。細說等號右邊的含義。RCC是一個十六進制數,他被強制轉化為了16位指針類型,并在賦值之前解引用被變成了本身的值,即前文提到的十六進制數,根據編程手冊,這個十六進制數表示了RC振蕩器對應48MHz輸出的校準值。

wKgaomTUVHmAHDVCAAR5wOr0_So903.png

wKgZomTUVQiAR4D3AAOXuFbjEbU405.png

至此,關于第二部分的寄存器-庫函數聯系已講解完成,如有錯誤或遺漏,歡迎指正和補充。

總結:

1.單片機啟動并不是從main函數開始執行的,而是從啟動文件規定的函數開始執行的

2.大部分單片機都會上電自動配置時鐘保證單片機能夠正常工作

3.寄存器和庫函數通過地址這個東西聯系在一起,庫函數本質就是在操作寄存器

審核編輯 黃宇

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

    關注

    6057

    文章

    44811

    瀏覽量

    644229
  • 寄存器
    +關注

    關注

    31

    文章

    5397

    瀏覽量

    122657
  • 時鐘
    +關注

    關注

    11

    文章

    1855

    瀏覽量

    132630
  • 庫函數
    +關注

    關注

    0

    文章

    177

    瀏覽量

    34199
  • CW32
    +關注

    關注

    1

    文章

    232

    瀏覽量

    1024
收藏 1人收藏

    評論

    相關推薦

    代碼+案例+生態:武漢芯源半導體CW32嵌入式開發實戰正式出版

    尊敬的各位電子工程師、嵌入式開發愛好者們:大家好!今天,我們懷著無比激動與自豪的心情,向大家宣布一個重大喜訊——武漢芯源半導體的單片機CW32正式出書啦!《基于ARMCortex-M0+的CW32
    的頭像 發表于 03-03 15:15 ?445次閱讀
    代碼+案例+生態:武漢芯源半導體<b class='flag-5'>CW32</b>嵌入式開發實戰正式出版

    代碼+案例+生態:武漢芯源半導體CW32嵌入式開發實戰正式出版

    關于 CW32 單片機的書籍。在這本書中,我們從最基礎的知識講起,詳細介紹了 CW32 單片機的硬件架構、內核特性、存儲系統以及各類外設功能
    發表于 03-03 15:14

    單片機學習—C51源代碼和Proteus仿真文件

    單片機學習—C51源代碼和Proteus仿真文件.zip, 各種例子
    發表于 02-10 13:46 ?0次下載

    CW32L010學習筆記

    記錄CW32L010學習過程
    的頭像 發表于 11-15 17:40 ?2710次閱讀
    <b class='flag-5'>CW</b>32L010<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>

    單片機編程語言哪些選擇

    常用的單片機編程語言,以及它們的特點和應用場景: 1. C語言 特點 :C語言是一種通用的編程語言,以其高效性和靈活性而聞名。它提供了豐富的庫函數和直接的硬件訪問能力,非常適合用于單片機編程。 應用 :C語言是
    的頭像 發表于 11-01 14:13 ?1820次閱讀

    武漢芯源半導體CW32芯片重慶地區線下技術交流會成功舉辦

    2024年10月19日,武漢芯源半導體授權CW32生態社區主辦的“CW32芯片-重慶地區技術交流會”在重慶市科技工作者眾創之家成功舉辦。此次交流會匯聚重慶地區的嵌入式開發工程師和電子信息類企業代表,共同探討CW32芯片在儀器儀表
    的頭像 發表于 10-24 10:55 ?784次閱讀

    十天學會單片機可能嗎?單片機入門需要多久?

    一下,單片機的入門其實并沒有想象中那么難。對于那些一定編程基礎,尤其是C語言基礎的學習者來說,入門的過程可能僅需幾天。例如,有人可能在三
    的頭像 發表于 09-05 08:00 ?1890次閱讀
    十天學會<b class='flag-5'>單片機</b>可能嗎?<b class='flag-5'>單片機</b>入門需要多久?

    單片機圖形化編程軟件哪些

    Arduino IDE以其簡單易用的界面和豐富的庫函數,成為了許多初學者的首選。雖然它本質上不是純粹的圖形化編程軟件,但其提供的示例代碼和直觀的操作方式,使得學習單片機編程變得相對容易。此外,Arduino社區龐大,擁有大量的教
    的頭像 發表于 09-02 10:14 ?2776次閱讀

    第19.1 章-星瞳科技 OpenMV視覺循跡功能 超詳細OpenMV與STM32單片機通信

    第19.1 章-[星瞳科技]OpenMV視覺循跡功能 超詳細OpenMV與STM32單片機通信 (完整版源碼) 【星曈科技】OpenMv筆記——利用OpenMV與STM32進行串口通
    的頭像 發表于 08-20 11:41 ?1388次閱讀
    第19.1 章-星瞳科技 OpenMV視覺循跡功能 超<b class='flag-5'>詳細</b>OpenMV與STM32<b class='flag-5'>單片機</b>通信

    一個暑假如何學習單片機

    一個暑假是學習和掌握單片機基礎知識的良好時機。以下是一個關于如何在暑假期間學習單片機的建議計劃
    的頭像 發表于 07-03 09:19 ?751次閱讀
    一個暑假如何<b class='flag-5'>學習</b><b class='flag-5'>單片機</b>

    【項目展示】基于CW32的遙控循跡小車

    CW32循跡小車.zip_免費高速下載|百度網盤-分享無限制? 一、概述 CW32循跡、遙控小車具有循跡和遙控兩種功能,小車的硬件模塊由CW32F030C8T6小藍板、智能小車控制底板、BT04-E
    的頭像 發表于 05-31 17:33 ?1636次閱讀
    【項目展示】基于<b class='flag-5'>CW32</b>的遙控循跡小車

    CW32數字電壓電流表軟件教程-實驗四:數碼管動態顯示

    顯示不同的值需要用到CW32的定時器功能,在定時器的中斷服務程序里面執行顯示刷新的動作。有關CW32的定時器和中斷的相關知識請查看鏈接:【CW32F003E4核心板】入門學習教程。本文
    的頭像 發表于 05-31 15:23 ?763次閱讀
    <b class='flag-5'>CW32</b>數字電壓電流表軟件教程-實驗四:數碼管動態顯示

    STM32單片機哪幾種常見的開發環境?

    STM32單片機是一款廣泛應用于嵌入式系統開發的單片機,針對其開發,以下幾種常見的方式:STM32單片機哪幾種常見的開發環境?KeilM
    的頭像 發表于 05-18 08:04 ?3961次閱讀
    STM32<b class='flag-5'>單片機</b><b class='flag-5'>有</b>哪幾種常見的開發環境?

    怎么開始學習stm8l的庫函數?

    我之前用的都是51單片機,雖然上過stm32的課但是當時忙于考研基本沒學,對庫函數根本不了解,現在我參加一個需要用stm8l做環境檢測和無線組網的項目,想知道該怎么快速上手stm8l。應該怎么開始
    發表于 05-11 08:12

    CW32量產燒錄工具

    本節主要介紹CW32微控制器的燒錄器CW-Writer,以及與之配合的軟件CW-Programmer的使用方法。燒錄器CW-Writer通過ISP協議,可實現對
    的頭像 發表于 04-25 15:22 ?1814次閱讀
    <b class='flag-5'>CW32</b>量產燒錄工具
    主站蜘蛛池模板: 各种场合肉H校园1V1 | 欧美另类极品videosbest | 一个人看的www视频动漫版 | 免费在线伦理片 | 久久re这里精品在线视频7 | 国产高清在线露脸一区 | 亚欧视频在线观看 | 日本午夜精品理论片A级APP发布 | 亚洲一区二区免费看 | 晓雪老师我要进你里面好爽 | 国产亚洲AV精品无码麻豆 | 无颜之月5集全免费看无删除 | 97色香蕉在线 | 成人啪啪色婷婷久色社区 | 最近中文字幕在线中文高清版 | 各种肉黄浪荡故事集 | 久久re热在线视频精6 | 男人插曲视频大全免费网站 | 亚洲无线观看国产 | 国产午夜福利100集发布 | 日韩中文网 | 精品国产九九 | 国产99久久久欧美黑人刘玥 | 亚洲 国产 日韩 欧美 在线 | 久草在线在线精品观看99 | 最近中文字幕免费高清MV视频 | 国产高清在线露脸一区 | 男人把女人桶到爽免费看视频 | 成人区精品一区二区不卡AV免费 | 亚洲爆乳无码精品AAA片蜜桃 | 草莓视频在线观看完整高清免费 | 色欲久久99精品久久久久久AV | 欧美日韩午夜群交多人轮换 | 涩涩在线观看免费视频 | 国产人妻777人伦精品HD | 青青久久国产 | 成人午夜精品久久久久久久秋霞 | h片下载地址 | 国产色欲一区二区精品久久呦 | 超碰视频在线观看 | 高清国产在线播放成人 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品