stm32f407 GPIO、TIM、ADC、DAC、ETH、SPI、CAN、US(A)RT、DMA、看门狗等配置函数总结 整理了一下STM32F407单片机各个功能模块的配置函数,有时候初始化的时候会忘记该初始化哪些内容,整理一下以备以后查阅。 GPIO配置需要用到的函数: - RCC_AHB1PeriphClockCmd //时钟配置
- GPIO_Init //端口初始化
- GPIO_PinAFConfig //引脚重映射
复制代码
ADC配置需要用到的函数: - GPIO配置相关函数
- RCC_APB2PeriphClockCmd //时钟配置
- ADC_CommonInit //ADC公共配置
- ADC_Init //ADC初始化
- ADC_RegularChannelConfig //ADC通道配置
- ADC_SoftwareStartConv //ADC转换启动
- ADC_Cmd //ADC使能
- //如果使用DMA传输数据,需要添加以下两个函数
- ADC_DMARequestAfterLastTransferCmd //使能ADC的DMA功能
- ADC_DMACmd //使能DMA
复制代码
DMA配置需要用到的函数: - RCC_AHB1PeriphClockCmd //时钟配置
- DMA_Init //DMA初始化
- DMA_ClearFlag //清除DMA相关标志位
- DMA_ITConfig //DMA中断配置
- DMA_Cmd //使能DMA通道
复制代码
CAN配置需要用到的函数: - GPIO相关函数
- RCC_APB1PeriphClockCmd //时钟配置
- GPIO_PinAFConfig //引脚复用
- CAN_Init //CAN初始化
- CAN_FilterInit //CAN滤波器设置(can2滤波器从14开始)
- CAN_ITConfig //CAN中断配置
- CAN_ClearITPendingBit //清除CAN中断等待信号
- CAN_Transmit //CAN发送数据函数(发送数据前需要配置数据帧CanTxMsg)
- CAN_Receive //CAN接收数据函数,一般在中断中调用
复制代码
US(A)RT串口通讯需要配置的函数: - GPIO相关函数
- RCC_APB2PeriphClockCmd //USART1和6的时钟配置
- RCC_APB1PeriphClockCmd //外其它USART的时钟配置
- USART_Init //串口初始化
- USART_ClearFlag //清除标志位
- USART_ITConfig //串口中断配置
- USART_Cmd //使能串口
- USART_GetFlagStatus //串口标志位查询
- USART_SendData //串口发送数据(调用数据发送时需要先调用USART_GetFlagStatus判断USART_FLAG_TC)
- USART_ReceiveData //串口接收数据,一般在中断
复制代码
systick需要配置的函数: - SysTick_CLKSourceConfig //配置系统嘀嗒的时钟
- SysTick_Config //配置定时时间
复制代码
DAC功能需要配置的函数: - GPIO相关函数
- RCC_APB1PeriphClockCmd //时钟配置
- DAC_Init //DAC初始化
- DAC_Cmd //使能DAC通道
- DAC_SetChannel1Data
- DAC_SetChannel2Data
- DAC_SetDualChannelData //通道写数据
复制代码
TIM功能需要配置的函数: - GPIO相关函数 //有输入输出时配置,单纯的定时器不需要GPIO配置
- RCC_APB1PeriphClockCmd //时钟配置,根据定时器不同选择不同的时钟配置
- TIM_TimeBaseInit //定时器初始化
- TIM_ARRPreloadConfig //使能重装载
- TIM_ClearFlag //清除标志位
- TIM_ITConfig //中断配置
- TIM_DMACmd //使能DMA功能(根据需要选择)
- TIM_Cmd //定时器使能
- TIM_TIxExternalClockConfig //计数器模式需要配置的函数
- TIM_ICInit //输入捕获初始化,计数器模式,频率输入模式需要配置
- TIM_OCxInit //输出比较初始化,PWM输出,
- TIM_CtrlPWMOutputs //PWM输出使能,定时器1和8特
复制代码
FSMC功能需要配置的函数: - GPIO相关函数
- RCC_AHB3PeriphClockCmd //时钟配置
- FSMC_NORSRAMInit //NORFlash配置函数
- FSMC_NANDInit //NANDFlash配置函数
- FSMC_NORSRAMCmd //使能FSMC
- FSMC_NANDCmd //使能FSMC
复制代码
SPI功能需要配置的函数: - GPIO相关函数
- RCC_APB2PeriphClockCmd //时钟配置
- SPI_Init //SPI功能初始化
- SPI_Cmd //使能SPI功能
- SPI_I2S_GetFlagStatus //查询SPI收发状态
- SPI_I2S_SendData //发送数据
- SPI_I2S_ReceiveData //接收数据
复制代码
外部中断需要配置的函数:
- GPIO相关函数
- RCC_APB2PeriphClockCmd //时钟配置,RCC_APB2Periph_SYSCFG
- SYSCFG_EXTILineConfig //中断源配置
- EXTI_ClearITPendingBit //清除中断标志位
- EXTI_Init //初始化外部中断
- NVIC_Init //中断配置
复制代码 独立看门狗需要配置的函数: - IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //写入0x5555,用于允许狗狗寄存器写入功能
- IWDG_SetPrescaler(IWDG_Prescaler_256); //狗狗时钟分频,40K/256=156HZ(6.4ms)
- IWDG_SetReload(315); //喂狗时间2s/6.4MS=313 .注意不能大于0xfff,计数器数值
- IWDG_ReloadCounter(); //喂狗函数,重启计数器
- IWDG_Enable();
复制代码
窗口看门狗需要配置的函数: - /* WWDG 配置函数
- * tr :递减计时器的值, 取值范围为:0x7f~0x40,超出范围会直接复位
- * wr :窗口值,取值范围为:0x7f~0x40
- * prv:预分频器值,取值可以是
- * @arg WWDG_Prescaler_1: WWDG counter clock = (PCLK1(42MHz)/4096)/1 约10253Hz 97us
- * @arg WWDG_Prescaler_2: WWDG counter clock = (PCLK1(42MHz)/4096)/2 约5126Hz 195us
- * @arg WWDG_Prescaler_4: WWDG counter clock = (PCLK1(42MHz)/4096)/4 约2563Hz 390us
- * @arg WWDG_Prescaler_8: WWDG counter clock = (PCLK1(42MHz)/4096)/8 约1281Hz 780us
- *
- * 例:tr = 127(0x7f,tr的最大值) wr = 80(0x50, 0x40为最小wr最小值) prv = WWDG_Prescaler_8
- * ~780 * (127-80) = 36.6ms < 刷新窗口 < ~780 * 64 = 49.9ms
- * 也就是说调用WWDG_Config进行这样的配置,若在之后的36.6ms前喂狗,系统会复位,在49.9ms后没有喂狗,系统也会复位。
- * 需要在刷新窗口的时间内喂狗,系统才不会复位。
- */
- RCC_APB1PeriphClockCmd //时钟配置
- WWDG_SetPrescaler( prv ); //预分频器配置
- WWDG_SetWindowValue( wr ); //设置上窗口值
- WWDG_Enable(tr); //使能看门狗
- WWDG_ClearFlag(); //清看门狗标志
- WWDG_EnableIT(); //使能看门狗中断
- WWDG_SetCounter( tr ); //喂狗函数
复制代码
Ethernet需要配置的函数: - GPIO相关函数
- RCC_AHB1PeriphClockCmd //时钟配置
- ETH_SoftwareReset //软件复位
- ETH_GetSoftwareResetStatus //获取复位状态
- ETH_Init //初始化
- ETH_DMAITConfig //DMA中断配置
- SYSCFG_ETH_MediaInterfaceConfig(SYSCFG_ETH_MediaInterface_RMII);//定义RMII接口
复制代码
可能不是特别的全面,但是大部分功能应该都包含了,根据这些函数去初始化各个模块,就可以实现相应的功能。这里记录的只是各个模块初始化用到的函数,没有细节,细节部分之前有整理,后续还会根据需要随时记录一些函数配置。 记录整理一下,不知道哪天不小心又把记事本给删了。 文章出处: 单片机学习点滴
|