一、库函数介绍
库函数与寄存器的区别
库函数:不需要自己写很多代码,可以利用软件生成代码。使用的时候必须添加库文件。库文件是芯片厂商写好了。占用空间大。
寄存器:自己写的代码量大,没有软件生成代码。使用的时候不需要库文件。占用空间小。
当一款芯片在库函数开发的情况下由于内存不够,可以使用寄存器开发。
库文件介绍
1、如何找到各个模块的库函数
二、新建库函数工程
1. 先保证寄存器版本的工程能用
2. 添加一个全局宏定义3.先建立包含对应的库函数的文件夹
4.把库函数的文件夹从官方的库函数文件夹里整个复制下来
5.包含库函数相应的头文件路径
初始化外设的小技巧:
一般都可以看到两种函数:
Init:初始化
Cmd:使能定时器
三、库函数的使用
使能/除能AHB1外设时钟
原形:void RCC_AHB1PeriphClockCmd ( uint32_t RCC_AHB1Periph, FunctionalState NewState )
作用:使能/除能AHB1外设时钟
参数:
RCC_AHB1Periph :要对AHB1那边外设进行时钟使能/除能操作(可以多个外设一起时钟使能、除能)
可取的值:
RCC_AHB1Periph_GPIOA: GPIOA clock
RCC_AHB1Periph_GPIOB: GPIOB clock
RCC_AHB1Periph_GPIOC: GPIOC clock
RCC_AHB1Periph_GPIOD: GPIOD clock
RCC_AHB1Periph_GPIOE: GPIOE clock
RCC_AHB1Periph_GPIOF: GPIOF clock
RCC_AHB1Periph_GPIOG: GPIOG clock
RCC_AHB1Periph_GPIOH: GPIOH clock
RCC_AHB1Periph_GPIOI: GPIOI clock
RCC_AHB1Periph_GPIOJ: GPIOJ clock (STM32F42xxx/43xxx devices)
RCC_AHB1Periph_GPIOK: GPIOK clock (STM32F42xxx/43xxx devices)
RCC_AHB1Periph_CRC: CRC clock
RCC_AHB1Periph_BKPSRAM: BKPSRAM interface clock
RCC_AHB1Periph_CCMDATARAMEN CCM data RAM interface clock
RCC_AHB1Periph_DMA1: DMA1 clock
RCC_AHB1Periph_DMA2: DMA2 clock
RCC_AHB1Periph_DMA2D: DMA2D clock (STM32F429xx/439xx devices)
RCC_AHB1Periph_ETH_MAC: Ethernet MAC clock
RCC_AHB1Periph_ETH_MAC_Tx: Ethernet Transmission clock
RCC_AHB1Periph_ETH_MAC_Rx: Ethernet Reception clock
RCC_AHB1Periph_ETH_MAC_PTP: Ethernet PTP clock
RCC_AHB1Periph_OTG_HS: USB OTG HS clock
RCC_AHB1Periph_OTG_HS_ULPI: USB OTG HS ULPI clock
NewState:可取值:ENABLE 或 DISABLE2、低功耗模式(睡眠模式)时AHB1外设时钟使能/除能
原形:void RCC_AHB1PeriphClockLPModeCmd ( uint32_t RCC_AHB1Periph, FunctionalState NewState );
3、AHB1外设模块进行复位----相关模块的寄存器值变成默认值原形:void RCC_AHB1PeriphResetCmd ( uint32_t RCC_AHB1Periph, FunctionalState NewState );
允许多个AHB外设同时进行复位操作
使用示例:(往往类型以下示例同时使用)
RCC_AHB1PeriphResetCmd (RCC_AHB1Periph_GPIOA, ENABLE ); //对端口A进行复位
RCC_AHB1PeriphResetCmd (RCC_AHB1Periph_GPIOA, DISABLE); //停止对端口A的复位4、APB1外设时钟使能
原形:void RCC_APB1PeriphClockCmd ( uint32_t RCC_APB1Periph, FunctionalState NewState ) ;
作用:对APB1总线外设时钟使能/除能 (可以多个外设同时操作)
参数:
APB1Periph:
RCC_APB1Periph_TIM2: TIM2 clock
RCC_APB1Periph_TIM3: TIM3 clock
RCC_APB1Periph_TIM4: TIM4 clock
RCC_APB1Periph_TIM5: TIM5 clock
RCC_APB1Periph_TIM6: TIM6 clock
RCC_APB1Periph_TIM7: TIM7 clock
RCC_APB1Periph_TIM12: TIM12 clock
RCC_APB1Periph_TIM13: TIM13 clock
RCC_APB1Periph_TIM14: TIM14 clock
RCC_APB1Periph_LPTIM1: LPTIM1 clock (STM32F410xx devices)
RCC_APB1Periph_WWDG: WWDG clock
RCC_APB1Periph_SPI2: SPI2 clock
RCC_APB1Periph_SPI3: SPI3 clock
RCC_APB1Periph_SPDIF: SPDIF RX clock (STM32F446xx devices)
RCC_APB1Periph_USART2: USART2 clock
RCC_APB1Periph_USART3: USART3 clock
RCC_APB1Periph_UART4: UART4 clock
RCC_APB1Periph_UART5: UART5 clock
RCC_APB1Periph_I2C1: I2C1 clock
RCC_APB1Periph_I2C2: I2C2 clock
RCC_APB1Periph_I2C3: I2C3 clock
RCC_APB1Periph_FMPI2C1: FMPI2C1 clock
RCC_APB1Periph_CAN1: CAN1 clock
RCC_APB1Periph_CAN2: CAN2 clock
RCC_APB1Periph_CEC: CEC clock (STM32F446xx devices)
RCC_APB1Periph_PWR: PWR clock
RCC_APB1Periph_DAC: DAC clock
RCC_APB1Periph_UART7: UART7 clock
RCC_APB1Periph_UART8: UART8 clock
NewState:ENABLE或 DISABLE
5、APB2外设时钟使能
原形:void RCC_APB2PeriphClockCmd ( uint32_t RCC_APB2Periph, FunctionalState NewState);
作用:对APB2总线外设时钟使能/除能 (可以多个外设同时操作)