STM32入門系列-CMSIS標准


 使用寄存器點亮開發板上LED,這種開發方式顯然是不適合大眾,對於STM32這樣龐大的芯片,內部寄存器實在太多,如果操作的外設比較多,那么就需要花很多時間查詢底層寄存器內容,而且即使程序寫好,如果要換其他端口或者外設的話,修改起來非常麻煩,而且容易出錯,移植性也差。基於這些原因,ST公司推出了一套固件庫,內部已經將STM32的全部外設寄存器的控制封裝好,給用戶提供一些API函數,用戶只需要學習如何使用這些API函數即可。

CMSIS標准

    CMSIS標准英文全稱是Cortex MicroController Software Interface Standard,翻譯為中文意思就是ARM Cortex微控制器軟件接口標准。由於基於Cortex核的芯片廠商很多,不只是ST公司,為了解決不同廠家的Cortex核芯片軟件兼容的問題,ARM和這些廠家就建立了這套CMSIS標准。可以通過一個基於CMSIS標准的應用程序框圖來看其重要性,如下圖所示。

    可以看出,CMSIS處於中間層,向上提供給用戶程序和實時操作系統所需的函數接口,向下負責與內核和其他外設通信。假如沒有CMSIS標准,基於Cortex的芯片廠商就會設計出自己喜歡的風格庫函數。因此CMSIS標准就是要強制他們必須按照這個標准來設計。

    在CMSIS框架內又分為3個基本功能層:

  • 核內外設訪問層:ARM公司提供的訪問,定義處理器內部寄存器地址以及功能函數。

  • 中間件訪問層:定義訪問中間件的通用API,由ARM提供,芯片廠商根據需要更新。

  • 外設訪問層:定義硬件寄存器的地址以及外設的訪問函數,比如ST公司提供的固件庫外設驅動文件(stm32f10x_gpio.c 等文件)就是在這個訪問層。

    總之,CMSIS就是統一各芯片廠商固件庫內函數的名稱, 比如在系統初始化的時候使用的是SystemInit這個函數名,那么CMSIS標准就是強制所有使用Cortex核設計芯片的廠商內固件庫系統初始化函數必須為這個名字,不能修改。又比如對GPIO口輸出操作的函數:GPIO_SetBits,此函數名也是不能隨便定義的。更多關於CMSIS 標准介紹,大家可以在網上搜索下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM