結構
CMSIS軟體層次
CMSIS可以分為多個軟體層次,分別由ARM公司、晶片供應商提供。
● 核心設備訪問層:包含了用來訪問核心的
暫存器設備的名稱定義,地址定義和助手函式。同時也為RTOS(
實時作業系統)定義了獨立於
微控制器的接口,該接口包括調試通道定義。
● 中間設備訪問層:為軟體提供了訪問外設的通用方法。晶片供應商應當修改中間設備訪問層,以適應中間設備組件用到的
微控制器上的外設。目前中間設備訪問層仍處於開發過程中,本文不做詳述。 晶片供應商擴展下列軟體層:
● 外設的訪問函式(可選):為外設提供額外的助手函式。CMSIS為Cortex-Mx微控制器
系統定義了:
● 訪問外設暫存器的通用方法和定義異常向量的通用方法。
● 核心設備的暫存器名稱和核心異常向量的名稱。
● 獨立於微控制器的RTOS接口,帶調試通道。
CMSIS包含的組件
1、外圍暫存器和中斷定義: 適用於設備暫存器和中斷的一致接口
2、核心外設函式:特定
處理器功能和核心外設的訪問函式
4、系統視圖說明(SVD):描述設備外設和中斷的XML 檔案。
該標準完全可擴展,可確保其適合於所有
Cortex-M處理器系列微控制器,從最小的8
KB 設備到具有複雜通信外設(如
乙太網或
USB)的設備。(核心外設函式的記憶體要求少於1 KB 代碼,少於10 位元組
RAM)。
CMSIS-外設訪問層的檔案

基於CMSIS應用程式的基本結構
獨立於編譯器的檔案:
─ 訪問Cortex-M3核心及其設備:
NVIC,SysTick等
─ 訪問Cortex-M3的
CPU暫存器和核心外設的函式
─ 指定中斷號碼(與啟動檔案一致)
─ 外設暫存器定義(暫存器的基地址和布局)
─ 控制微控制器其他特有的功能的函式(可選)
● 微控制器專用
系統檔案(system_device.c)
─ 函式SystemInit,用來初始化微控制器
─ 函式Sysem_ExtMemCtl,用來配置
外部存儲器控制器。它位於檔案
startup_stm32f10x_xx.s /.c,在跳轉到
main前調用
─SystemFrequncy,該值代表系統
時鐘頻率編譯器供應商+微控制器專用啟動檔案
● 編譯器啟動代碼(彙編或者C)(startup_device.s)
─ 微控制器專用的
中斷處理程式列表(與頭檔案一致)
─ 弱定義(Weak)的中斷處理程式默認函式(可以被用戶代碼覆蓋)
下載的CMSIS軟體包含有Cortex M3核的支持檔案以及基於Cortex M3核處理器的啟動代碼和庫
引導檔案。
使用步驟
以STM32F10XX序列處理為例,介紹CMSIS的使用步驟。
1、從ST
官方網站下載3.0以上版本的標準外設庫。
2、基於開發軟體新建工程,建立相應的
檔案目錄,注意詢問是否加入啟動檔案時,選擇“否”。
3、根據所選晶片,把Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm中的啟動代碼加到工程中。
4、根據處理器FLASH容量的大小,選擇啟動代碼。stm32f10x.h 的66-73 行表明了啟動代碼的類型。例如STM32F10X_HD 行表示大容量的,如果不需要直接注釋掉即可。
5、選擇是否啟用標準外設庫。stm32f10x.h的105行的USE_STDPERIPH_DRIVER用於確定是否啟用,如果不啟用直接注釋掉。
6、確定處理器的頻率。system_stm32f10x.c的110-115行用於確定處理器的頻率,注釋掉不需要的即可。例如處理器的頻率為是36MHz,注釋SYSCLK_FREQ_72MHz,去掉SYSCLK_FREQ_36MHz注釋。