1、配置步骤
GPIO
- 头文件:stm32f4xx_gpio.h
- 源文件:stm32f4xx_gpio.c
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
.....
GPIO_Init(GPIOF, &GPIO_InitStructure);
NVIC
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
UART 串口通讯
RCC_APBxPeriphClockCmd();
RCC_AHB1PeriphClockCmd();
GPIO_PinAFConfig();
GPIO_Init();
USART_Init();
NVIC_Init();
USART_ITConfig();
USART_Cmd();
USARTx_IRQHandler();
FlagStatus USART_GetFlagStatus();
void USART_ClearITPendingBit();
void USART_SendData();
uint16_t USART_ReceiveData();
EXTI
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
GPIO_Init();
void SYSCFG_EXTILineConfig();
EXTI_Init();
NVIC_Init();
EXTIx_IRQHandler();
EXTI_ClearITPendingBit();
TIMx 定时器
- 头文件:stm32f4xx_tim.h
- 源文件:stm32f4xx_tim.c
RCC_APB1PeriphClockCmd();
TIM_TimeBaseInit();
NVIC_Init();
TIM_Cmd();
TIMx_IRQHandler();
PWM输出
RCC_APB1PeriphClockCmd();
RCC_AHB1PeriphClockCmd ();
GPIO_Init();
GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14);
TIM_TimeBaseInit();
TIM_OC1Init();
TIM_OC1PreloadConfig(TIM14, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM14,ENABLE);
TIM_SetCompare1();
ADC
RCC_AHB1PeriphClockCmd (RCC_AHB1Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
GPIO_Init();
ADC_DeInit();
ADC_CommonInit();
void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);
ADC_Cmd(ADC1, ENABLE);
ADC_RegularChannelConfig();
ADC_SoftwareStartConvCmd(ADC1);
ADC_GetConversionValue(ADC1);
2、经常使用函数
GPIO
- 头文件:stm32f4xx_gpio.h
- 源文件:stm32f4xx_gpio.c
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
RCC
- 头文件:stm32f4xx_rcc.h
- 源文件:stm32f4xx_rcc.c
RCC_HSICmd, RCC_LSICmd, RCC_PLLCmd, RCC_PLLI2SCmd,
RCC_PLLSAICmd, RCC_RTCCLKCmd,RCC_AHBxPeriphClockCmd
RCC_APBxPeriphClockCmd
RCC_HSEConfig, RCC_LSEConfig, RCC_PLLConfig,
RCC_PLLI2SConfig, RCC_PLLSAIConfig, RCC_MCO1Config,
RCC_MCO2Config, RCC_SYSCLKConfig, RCC_HCLKConfig,
RCC_PCLK1Config,RCC_PCLK2Config,RCC_RTCCLKConfig,
RCC_I2SCLKConfig
RCC_AHB1PeriphResetCmd,RCC_AHB2PeriphResetCmd,
RCC_AHB3PeriphResetCmd,RCC_APB1PeriphResetCmd,
RCC_APB2PeriphResetCmd
RCC_GetSYSCLKSource,RCC_GetClocksFreq,
RCC_GetFlagStatus,RCC_ClearFlag
RCC_ITConfig,RCC_ClearITPendingBit,RCC_GetITStatus
NVIC
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
static __INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn);
static __INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn);
static __INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn);
static __INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn);
UART 串口
void USART_Init();
void USART_Cmd();
void USART_ITConfig();
void USART_SendData();
uint16_t USART_ReceiveData();
FlagStatus USART_GetFlagStatus();
void USART_ClearFlag();
ITStatus USART_GetITStatus();
void USART_ClearITPendingBit();
EXTI
void SYSCFG_EXTILineConfig(uint8_t EXTI_PortSourceGPIOx, uint8_t EXTI_PinSourcex);
exp: SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOE, EXTI_PinSource2);
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
TIMx 定时器
- 头文件:stm32f4xx_tim.h
- 源文件:stm32f4xx_tim.c
void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)
void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);
void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);
ADC
void ADC_CommonInit(ADC_CommonInitTypeDef* ADC_CommonInitStruct);
void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);
void ADC_DeInit(ADC_TypeDef* ADCx)
void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState);
void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);
uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx);