一、CMSIS標準
ST公司的stm32采用的是cortex-m3內(nèi)核,內(nèi)核是整個微處理器的CPU。該內(nèi)核是ARM公司設計的一種處理器體系架構。內(nèi)核與外設的關系就像PC上的CPU與硬盤、主板、內(nèi)存等的關系一樣。
基于cortex系列的處理器內(nèi)核都是一樣的,區(qū)別在于除內(nèi)核以外的外設的差異,由于這些差異,導致不同處理器移植起來比較麻煩,所以ARM與芯片廠商建立了CMSIS標準,CMSIS架構如下所示:
CMSIS標準中最主要的是CMSIS核心層;內(nèi)核函數(shù)層中的內(nèi)核函數(shù)寄存器以及地址主要由ARM公司提供;設備外設訪問層核外外設和中斷寄存器地址由芯片生產(chǎn)廠商定義。
二、庫目錄和文件簡介
1、core_cm3.c文件
在CoreSupport文件夾中有core_cm3.c和頭文件core_cm3.h,它的作用是采用Cortex-M3內(nèi)核設計的SoC芯片廠商設計的芯片提供了一個進入CM3內(nèi)核的接口。core_cm3.c中還有一些與編譯器(MDK、IAR等)有關的代碼。較重要的是core_cm3.c中包含stdio.h頭文件,這是一個ANSI C文件,主要作用是提供一些新類型的定義。
2、system_stm32f10x.c文件
DeviceSupport文件夾下是啟動文件、外設寄存器定義、中斷向量定義層的一些文件,這些文件由ST公司提供。system_stm32f10x.c的主要作用是設置系統(tǒng)時鐘和總線時鐘。
3、stm32f10x.h文件
這個文件非常重要,是非常底層的文件,包含了寄存器地址和結構體類型的定義,在使用到stm32固件庫的地方都要包含它。
3、stm32f10x_it.c和stm32f10x_conf.h文件
stm32f10x_it.c這個文件主要是編寫中斷程序的,stm32f10x_conf.h被包含在stm32f10x.h文件中主要是配置外設的頭文件,我們需要什么在這里打開。
4、startup_stm32f10x_hd.s文件
在這個文件中有一段啟動文件,啟動文件中先初始化系統(tǒng)時鐘,然后才執(zhí)行主函數(shù),因此我們要注意配置時鐘在這個文件里配置。
三、引腳端口的一些概念
1、一些寄存器
1)配置寄存器:選擇是輸入還是輸出。
2)數(shù)據(jù)寄存器:保存了GPIO的輸入電平或者將要輸出的電平。
3)為空值寄存器:設置引腳電平為1或0,控制輸出電平。
4)鎖定寄存器:設置鎖定引腳后,就不能修改其配置。
2、管腳時鐘
stm32擁有豐富的時鐘系統(tǒng),我們在配置管教時鐘時,如果該管腳要用到其復用功能,我們必須也要初始化復用功能時鐘。例如要使用PC1口的AD功能:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
3、GPIO8種工作模式
1)四種輸入模式:上拉輸入模式、下拉輸入模式、浮空輸入模式、模擬輸入模式
上拉輸入模式(GPIO_Mode_IPU):與VDD相連的為上拉電阻,若引腳配置為上拉輸入模式,默認情況下該引腳是高電平。
下拉輸入模式(GPIO_Mode_IPD):與VSS相連的為下拉電阻,若引腳配置為下拉輸入模式,默認情況下該引腳是低電平。
浮空輸入模式(GPIO_Mode_IN_FLOATING):沒有上拉電阻也沒有下拉電阻,一般這種模式用于標準的通信協(xié)議:IIC、USART等的接收端。
模擬輸入模式(GPIO_Mode_AIN):使用ADC外設時,接口必須設置為,模擬輸入模式。
2)四種輸出模式:推挽輸出模式、開漏輸出模式、復用推挽輸出模式、復用開漏輸出模式
推挽輸出模式(GPIO_Mode_Out_PP):一般用于0和3.3伏的場合。
開漏輸出模式(GPIO_Mode_Out_OD):一般用于電平不平衡的場合。
任何一種開漏模式都要接上拉電阻。
復用推挽輸出模式(GPIO_Mode_AF_PP)
復用開漏輸出模式(GPIO_Mode_AF_OD)
4、中斷
stm32有100個引腳,GPIO口總共80個,分為GPIOA~GPIOE 5組,每組16個。每個IO口都可以作為中斷源的輸入,可以配置為上升沿中斷,下降沿中斷,上升沿下降沿中斷