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

猜你喜欢

转载自blog.csdn.net/niuyuce/article/details/84990994