1. 程式人生 > >STM32-自學筆記(7.用GPIO點亮LED,程式用到的庫函式介紹)

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篇)