STM32-自學筆記(7.用GPIO點亮LED,程式用到的庫函式介紹)
1.RCC_DeInit
函式原型:void RCC_DeInit (void)
功能:將外設RCC暫存器重設為預設值。
引數:無
例子:RCC_DeInit (); //將外設RCC暫存器重設為預設值
2.RCC_HSEConfig
函式原型:void RCC_HSEConfig (u32 RCC_HSE)
功能:設定外部高速晶振(HSE)。
引數:RCC_HSE_HSE的新狀態
引數:RCC_HSE
描述:
- RCC_HSE_OFF:HSE晶振失能
- RCC_HSE_ON:HSE晶振使能
- RCC_HSE_Bypass:HSE晶振被外部時鐘旁路
例子:RCC_HSEConfig(RCC_HSE_ON); //使能HSE
3.RCC_WaitForHSEStartUp
函式原型:ErrorStatus RCC_WaitForHSEStartUp (void)
功能:等待HSE起振,該函式將等待直到HSE就緒,或者在超時的情況下退出。
引數:無
返回值:ErrorStatus列舉值。SUCCESS:HSE晶振穩定且就緒;ERROR:HSE晶振未就緒。
例子:ErrorStatus HSEStartUpStatus;
RCC_HSEConfig(RCC_HSE_ON); //使能HSE
HSEStartUpStatus=RCC_WaitForHSEStartUp ();
if( HSEStartUpStatus==SUCCESS) //起振穩定 ,設定PLL和系統時鐘
{
}
else //HSE起振失敗
{
}
4.RCC_HCLKConfig
函式原型:void RCC_HCLKConfig (u32 RCC_HCLK)
功能:設定AHB時鐘(HCLK)
引數: RCC_HCLK:定義HCLK,該時鐘源自系統時鐘(SYSCLK)
返回值:無
引數:RCC_HCLK
RCC_SYSCLK_Div1 :AHB時鐘=系統時鐘
RCC_SYSCLK_Div2 :AHB時鐘=系統時鐘 /2
RCC_SYSCLK_Div4 :AHB時鐘=系統時鐘 /4
RCC_SYSCLK_Div8 :AHB時鐘=系統時鐘 /8
RCC_SYSCLK_Div16 :AHB時鐘=系統時鐘 /16
RCC_SYSCLK_Div64 :AHB時鐘=系統時鐘 /64
RCC_SYSCLK_Div128 :AHB時鐘=系統時鐘 /128
RCC_SYSCLK_Div256 :AHB時鐘=系統時鐘 /256
RCC_SYSCLK_Div512 :AHB時鐘=系統時鐘 /512
例子:RCC_HCLKConfig (RCC_SYSCLK_Div1 ); //配置AHB頻率和系統時鐘一致(即系統時鐘1分頻)
5.RCC_PCLK1Config
函式原型:void RCC_PCLK1Config (u32 RCC_PCLK1)
功能:設定低速APB時鐘(PCLK1)
引數:RCC_PCLK1:定義PCLK1,該時鐘源自AHB時鐘(HCLK)
返回值:無
引數:RCC_PCLK1
RCC_HCLK_Div1 :APB1時鐘=HCLK
RCC_HCLK_Div2 :APB1時鐘=HCLK /2
RCC_HCLK_Div4 :APB1時鐘=HCLK /4
RCC_HCLK_Div8 :APB1時鐘=HCLK /8
RCC_HCLK_Div16 :APB1時鐘=HCLK /16
例子:RCC_PCLK1Config (RCC_HCLK_Div2 ); //設定PCLK1為HCLK 2分頻
6.RCC_PCLK2Config
函式原型:void RCC_PCLK1Config (u32 RCC_PCLK2)
功能:設定高速APB時鐘(PCLK2)
引數:RCC_PCLK2:定義PCLK2,該時鐘源自AHB時鐘(HCLK)
返回值:無
引數:RCC_PCLK2
RCC_HCLK_Div1 :APB1時鐘=HCLK
RCC_HCLK_Div2 :APB1時鐘=HCLK /2
RCC_HCLK_Div4 :APB1時鐘=HCLK /4
RCC_HCLK_Div8 :APB1時鐘=HCLK /8
RCC_HCLK_Div16 :APB1時鐘=HCLK /16
例子:RCC_PCLK2Config (RCC_HCLK_Div1); //設定PCLK2為HCLK 1分頻
7.FLASH_SetLatency
函式原型:void FLASH_SetLatency (u32 FLASH_Latency )
功能:設定程式碼延時值
引數:FLASH_Latency:用來設定Flash儲存器延時時鐘週期
返回值:無
引數:FLASH_Latency
FLASH_Latency _0 :0個延時週期
FLASH_Latency _1 :1個延時週期
FLASH_Latency _2 :2個延時週期
例子: FLASH_SetLatency (FLASH_Latency _2 ); //設定Flash延時事件為2個週期
8.FLASH_PrefetchBufferCmd
函式原型:void FLASH_PrefetchBufferCmd (u32 FLASH_PrefetchBuffer)
功能:使能或者失能預取指緩
引數:FLASH_PrefetchBuffer:選擇Flash預取指快取的模式
返回值:無
引數:FLASH_PrefetchBuffer
FLASH_PrefetchBuffer_Enablce:預取指快取使能
FLASH_PrefetchBuffer_Disable:預取指快取失能
例子: FLASH_PrefetchBufferCmd (FLASH_PrefetchBuffer_Enablce); //使能Flash預取快取
9.RCC_PLLConfig
函式原型:void RCC_PLLConfig (u32 RCC_PLLSource, u32 RCC_PLLMul);
功能:設定PLL時鐘源及倍頻係數
引數: RCC_PLLSource:PLL的輸入時鐘源
RCC_PLLMul:PLL的倍頻係數
引數:RCC_PLLSource
RCC_PLLSource_HSI_Div2 :PLL的輸入時鐘=HSI時鐘頻率除以2
RCC_PLLSource_HSE_Div1 :PLL的輸入時鐘=HSE時鐘頻率除以1
RCC_PLLSource_HSE_Div2 :PLL的輸入時鐘=HSE時鐘頻率除以2
引數: RCC_PLLMul
RCC_PLLMul_2:PLL輸入時鐘*2
RCC_PLLMul_3:PLL輸入時鐘*3
RCC_PLLMul_4:PLL輸入時鐘*4
……
RCC_PLLMul_16:PLL輸入時鐘*16
例子://選擇HSE(8MHz)為PLL的時鐘源,9倍頻,於是得到72MHz輸出
RCC_PLLConfig (RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
10.RCC_PLLCmd
函式原型:void RCC_PLLCmd (FunctionalState NewState)
功能:使能或失能PLL
引數:NewState:PLL的新狀態。這個引數可以取:ENABLE或者DISABLE
返回值:無
例子:RCC_PLLCmd (ENABLE); //使能PLL
11.RCC_SYSCLKConfig
函式原型:void RCC_SYSCLKConfig (u32 RCC_SYSCLKSource)
功能:設定系統時鐘(SYSCLK)
引數:RCC_SYSCLKSource:用作系統時鐘的時鐘源
引數:RCC_SYSCLKSource
RCC_SYSCLKSource_HSI :選擇HSI作為系統時鐘
RCC_SYSCLKSource_HSE :選擇HSE作為系統時鐘
RCC_SYSCLKSource_PLLCLK :選擇PLL作為系統時鐘
例子:RCC_SYSCLKConfig (RCC_SYSCLKSource_PLLCLK); //選擇PLL為系統時鐘源。
12.RCC_GetSYSCLKSource
函式原型:u8 RCC_GetSYSCLKSource (void)
功能:返回用作系統時鐘的時鐘源
引數:無
返回值:用作系統時鐘的時鐘源。
0x00:HSI作為系統時鐘;
0x04:HSE作為系統時鐘;
0x08:PLL作為系統時鐘;
例子:if (RCC_GetSYSCLKSource()==0x04)
{
} //是
else //否
{
}
13.RCC_APB2PeriphClockCmd
函式原型:void RCC_APB2PeriphClockCmd (u32 RCC_APB2Periph, FunctionalState NewState)
功能:使能或者失能APB2外設時鐘
引數:RCC_APB2Periph:ABP2的外設時鐘
NewState:指定外設時鐘的新狀態。可取ENABLE或DISABLE。
引數:RCC_APB2Periph
RCC_APB2Periph_AFIO :功能複用I/O時鐘
RCC_APB2Periph_GPIOA :GPIOA時鐘
……
RCC_APB2Periph_GPIOE :GPIOE時鐘
RCC_APB2Periph_ADC1 :ADC1時鐘
RCC_APB2Periph_ADC2 :ADC2時鐘
RCC_APB2Periph_TIM1 :TIM1時鐘
RCC_APB2Periph_SPI1 :SPI1時鐘
RCC_APB2Periph_USART1 :USART1時鐘
RCC_APB2Periph_ALL :全部APB2外設時鐘
例子://開啟GPIOA,SPI1的時鐘
RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1, ENABLE);
14.GPIO_Init
函式原型:void GPIO_Init (GPIO_TypeDef*GPIOx .GPIO_Init TypeDef*GPIO_InitStruct)
功能:根據GPIO_InitStruct 中指定的引數初始化外設GPIOx
引數:GPIOx:x可以是A、B、C、D、E
GPIO_InitStruct:指向結構GPIO_Init TypeDef的指標,包含了外設GPIO的配置資訊。
例子://設定GPIOA所有的I/O為浮空輸入模式
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_ALL;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init (GPIOA,&GPIO_InitStructure);
(更詳細的介紹看我的另一篇stm32庫函式---GPIO篇)