標(biāo)準(zhǔn)外設(shè)庫遵從以下命名規(guī)則 PPP表示任一外設(shè)縮寫,例如:ADC。源程序文件和頭文件命名都以"stm32f10x_"作為開頭,例如:stm32f10x_conf.h。常量僅被應(yīng)用于一個(gè)文件的,定義于該文件中;被應(yīng)用于多個(gè)文件的,在對應(yīng)頭文件中定義。所有常量都由英文字母大寫書寫。寄存器作為常量處理。他們的命名都由英文字母大寫書寫。在大多數(shù)情況下,他們采用與縮寫規(guī)范一致。外設(shè)函數(shù)的命名以該外設(shè)的縮寫加下劃線為開頭。每個(gè)單詞的第一個(gè)字母都由英文字母大寫書寫,例如:SPI_SendData。在函數(shù)名中,只允許存在一個(gè)下劃線,用以分隔外設(shè)縮寫和函數(shù)名的其它部分。對于函數(shù)命名,總的來說有以下規(guī)則:
l 名為PPP_Init的函數(shù),其功能是根據(jù)PPP_InitTypeDef中指定的參數(shù),初始化外設(shè)PPP,例如TIM_Init.
l 名為PPP_DeInit的函數(shù),其功能為復(fù)位外設(shè)PPP的所有寄存器至缺省值,例如TIM_DeInit.
l 名為PPP_Init的函數(shù),其功能為通過設(shè)置PPP_InitTypeDef 結(jié)構(gòu)中的各種參數(shù)來定義外設(shè)的功能,例如:USART_Init .
l 名為PPP_Cmd的函數(shù),其功能為使能或者失能外設(shè)PPP,例如: SPI_Cmd.
l 名為PPP_ITConfig的函數(shù),其功能為使能或者失能來自外設(shè)PPP某中斷源,例如: RCC_ITConfig.
l 名為PPP_DMAConfig的函數(shù),其功能為使能或者失能外設(shè)PPP的DMA接口,例如:TIM1_DMAConfig.
l 用以配置外設(shè)功能的函數(shù),總是以字符串"Config"結(jié)尾,例如GPIO_PinRemapConfig.
l 名為PPP_GetFlagStatus的函數(shù),其功能為檢查外設(shè)PPP某標(biāo)志位被設(shè)置與否,例如:I2C_GetFlagStatus.
l 名為PPP_ClearFlag的函數(shù),其功能為清除外設(shè)PPP標(biāo)志位,例如:I2C_ClearFlag.
l 名為PPP_GetITStatus的函數(shù),其功能為判斷來自外設(shè)PPP的中斷發(fā)生與否,例如:I2C_GetITStatus.
l 名為PPP_ClearITPendingBit的函數(shù),其功能為清除外設(shè)PPP中斷待處理標(biāo)志位,例如: I2C_ClearITPendingBit.
這樣的命名方式非常便于程序的編寫和閱讀,以標(biāo)準(zhǔn)外設(shè)庫中的示例函數(shù)為例,下面摘錄了STM32F10x_StdPeriph_Examples\ADC\3ADCs_DMA\mian.c中的一段程序。
1 DMA_InitType Def DMA_InitStructure;
2
3 /* DMA1 channel1 configuration ----------------------------------------------*/
4
5 DMA_DeInit(DMA1_Channel1);
6
7 DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;
8
9 DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&ADC1ConvertedValue;
10
11 DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
12
13 DMA_InitStructure.DMA_BufferSize = 1;
14
15 DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
16
17 DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
18
19 DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
20
21 DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
22
23 DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
24
25 DMA_InitStructure.DMA_Priority = DMA_Priority_High;
26
27 DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
28
29 DMA_Init(DMA1_Channel1, &DMA_InitStructure);
30
31 /* Enable DMA1 channel1 */
32
33 DMA_Cmd(DMA1_Channel1, ENABLE);
這段程序完成了DMA1通道的配置,首先定義了DMA_InitType DMA_InitStructure,接著配置DMA_InitType的各種參數(shù),各參數(shù)的命名方式也均使用約定的命名方式,從命名就能夠很容易的看出各參數(shù)所指代的具體功能。功能參數(shù)配置完成后,使用DMA_Init(DMA1_Channel1, &DMA_InitStructure);完成相應(yīng)外設(shè)的初始化,最后使用DMA_Cmd(DMA1_Channel1, ENABLE) 使能相應(yīng)外設(shè)。從這個(gè)例子就能夠很容易的看出標(biāo)準(zhǔn)外設(shè)庫這種規(guī)范化的命名規(guī)則給編寫和閱讀程序帶來的好處。
3. 變量定義
在早期的版本中有24個(gè)變量定義,在Keil的安裝根目錄下,可以找到對應(yīng)的定義,路徑為:Keil\ARM\INC\ST\STM32F10x\stm32f10x_type.h
1 /* Includes ------------------------------------------------------------------*/
2
3 /* Exported types ------------------------------------------------------------*/
4
5 typedef signed long s32;
6
7 typedef signed short s16;
8
9 typedef signed char s8;
10
11 typedef signed long const sc32; /* Read Only */
12
13 typedef signed short const sc16; /* Read Only */
14
15 typedef signed char const sc8; /* Read Only */
16
17 typedef volatile signed long vs32;
18
19 typedef volatile signed short vs16;
20
21 typedef volatile signed char vs8;
22
評論
查看更多