STMF库函数笔记文档格式.docx
- 文档编号:17126314
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:10
- 大小:17.93KB
STMF库函数笔记文档格式.docx
《STMF库函数笔记文档格式.docx》由会员分享,可在线阅读,更多相关《STMF库函数笔记文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
//普通输出模式
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
//推挽输出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
//100MHz
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
//上拉
GPIO_Init(GPIOF,&
GPIO_InitStructure);
//初始化GPIOF9,F10
}
2个读取输入电平函数:
uint8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);
作用:
读取某个GPIO的输入电平。
实际操作的是GPIOx_IDR寄存器。
例如:
GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5);
//读取GPIOA.5的输入电平
uint16_tGPIO_ReadInputData(GPIO_TypeDef*GPIOx);
读取某组GPIO的输入电平。
GPIO_ReadInputData(GPIOA);
//读取GPIOA组中所有io口输入电平
2个读取输出电平函数:
uint8_tGPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);
读取某个GPIO的输出电平。
实际操作的是GPIO_ODR寄存器。
GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_5);
//读取GPIOA.5的输出电平
uint16_tGPIO_ReadOutputData(GPIO_TypeDef*GPIOx);
读取某组GPIO的输出电平。
GPIO_ReadOutputData(GPIOA);
//读取GPIOA组中所有io口输出电平
4个设置输出电平函数:
voidGPIO_SetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);
设置某个IO口输出为高电平
(1)。
实际操作BSRRL寄存器
voidGPIO_ResetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);
设置某个IO口输出为低电平(0)。
实际操作的BSRRH寄存器。
voidGPIO_WriteBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,BitActionBitVal);
voidGPIO_Write(GPIO_TypeDef*GPIOx,uint16_tPortVal);
后两个函数不常用,也是用来设置IO口输出电平。
端口复用为复用功能配置过程
-以PA9,PA10配置为串口1为例
1、GPIO端口时钟使能。
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
2、复用外设时钟使能。
比如你要将端口PA9,PA10复用为串口,所以要使能串口时钟。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
3、端口模式配置为复用功能。
GPIO_Init()函数。
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;
//复用功能
中断优先级设置步骤
1、系统运行后先设置中断优先级分组。
调用函数:
voidNVIC_PriorityGroupConfig(uint32_tNVIC_PriorityGroup);
整个系统执行过程中,只设置一次中断分组。
2、针对每个中断,设置对应的抢占优先级和响应优先级:
voidNVIC_Init(NVIC_InitTypeDef*NVIC_InitStruct);
如果需要挂起/解挂,查看中断当前激活状态,分别调用相关函数即可。
独立看门狗操作步骤
1、取消寄存器写保护:
IWDG_WriteAccessCmd();
2、设置独立看门狗的预分频系数,确定时钟:
IWDG_SetPrescaler();
3、设置看门狗重装载值,确定溢出时间:
IWDG_SetReload();
4、使能看门狗
IWDG_Enable();
5、应用程序喂狗:
IWDG_ReloadCounter();
溢出时间计算:
Tout=((4×
2^prer)×
rlr)/32(M4)
在主函数,要设置中断优先级分组
NVIC_PriorityGroupConfig();
delay_init(168);
配置时钟
窗口看门狗配置过程
voidWWDG_Init(u8tr,u8wr,u32fprer)
1、使能看门狗时钟:
RCC_APB1PeriphClockCmd();
2、设置分频系数:
WWDG_SetPrescaler();
3、设置上窗口值:
WWDG_SetWindowValue();
4、开启提前唤醒中断并分组(可选):
WWDG_EnableIT();
NVIC_Init();
WWDG_ClearFlag();
//清除提前唤醒标志位
5、使能看门狗:
WWDG_Enable();
;
7、编写中断服务函数
WWDG_IRQHandler();
1)喂狗:
WWDG_SetCounter();
2)清除标志位
外部中断
STM32F4的每个IO都可以作为外部中断输入。
STM32F4的中断控制器支持22个外部中断/事件请求
EXTI线0~15:
对应外部IO口的输入中断。
EXTI线16:
连接到PVD输出。
EXTI线17:
连接到RTC闹钟事件。
EXTI线18:
连接到USBOTGFS唤醒事件。
EXTI线19:
连接到以太网唤醒事件。
EXTI线20:
连接到USBOTGHS(在FS中配置)唤醒事件。
EXTI线21:
连接到RTC入侵和时间戳事件。
EXTI线22:
连接到RTC唤醒事件。
外部中断的一般配置步骤:
1、使能SYSCFG时钟:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);
2、初始化IO口为输入。
GPIO_Init();
3、设置IO口与中断线的映射关系。
voidSYSCFG_EXTILineConfig();
4、初始化线上中断,设置触发条件等。
EXTI_Init();
5、配置中断分组(NVIC),并使能中断。
6、编写中断服务函数。
EXTIx_IRQHandler();
1)清除中断标志位
EXTI_ClearITPendingBit();
串口配置的一般步骤
1、串口时钟使能:
RCC_APBxPeriphClockCmd();
GPIO时钟使能:
RCC_AHB1PeriphClockCmd();
2、引脚复用映射:
GPIO_PinAFConfig();
3、GPIO端口模式设置:
模式设置为GPIO_Mode_AF
4、串口参数初始化:
USART_Init();
5、开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)
USART_ITConfig();
6、使能串口:
USART_Cmd();
7、编写中断处理函数:
USARTx_IRQHandler();
8、串口数据收发:
voidUSART_SendData();
//发送数据到串口,DR
uint16_tUSART_ReceiveData();
//接受数据,从DR读取接受到的数据
9、串口传输状态获取:
FlagStatusUSART_GetFlagStatus();
voidUSART_ClearITPendingBit();
串口中断服务函数不用清除中断
定时器中断实现步骤
voidTimx_init(u8arr,psc);
1、能定时器时钟。
2、初始化定时器,配置ARR,PSC。
TIM_TimeBaseInit();
TIM_TIConfig();
//使能更新中断
3、开启定时器中断,配置NVIC。
4、使能定时器。
TIM_Cmd();
5、编写中断服务函数。
TIMx_IRQHandler();
1)判断中断模式
TIM_GetTIStatus(TIMx,中断模式);
2)清除标志
TIM_ClearITPendingBit();
PWM输出配置步骤:
voidTIM14_PWM_Init(u32arr,u32psc);
1、使能定时器14和相关IO口时钟。
使能定时器14时钟:
使能GPIOF时钟:
2、初始化IO口为复用功能输出。
函数:
3、GPIOF9复用映射到定时器14
GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14);
4、初始化定时器:
ARR,PSC等:
5、初始化输出比较参数:
TIM_OC1Init();
6、使能预装载寄存器:
TIM_OC1PreloadConfig(TIM14,TIM_OCPreload_Enable);
7、使能自动重装载的预装载寄存器允许位TIM_ARRPreloadConfig(TIM14,ENABLE);
8、使能定时器TIM_Cmd(TIM14,ENABLE);
//TIM14
9、不断改变比较值CCRx,达到不同的占空比效果:
TIM_SetCompare1();
输入捕获的一般配置步骤:
1、初始化定时器和通道对应IO的时钟。
2、初始化IO口,模式为复用:
3、设置引脚复用映射:
4、初始化定时器ARR,PSC
5、初始化输入捕获通道
TIM_ICInit();
6、如果要开启捕获中断,
TIM_ITConfig();
7、使能定时器:
8、编写中断服务函数:
RTC
RTC日历配置一般步骤
1、使能PWR时钟:
2、使能后备寄存器访问:
PWR_BackupAccessCmd();
RCC_LSEConfig(RCC_LSE_ON);
//LSE开启
3、配置RTC时钟源,使能RTC时钟:
RCC_RTCCLKConfig();
RCC_RTCCLKCmd();
如果使用LSE,要打开LSE:
4、初始化RTC(同步/异步分频系数和时钟格式):
RTC_Init();
5、设置时间:
RTC_SetTime();
6、置日期:
RTC_SetDate();
RTC闹钟配置一般步骤
1、RTC已经初始化好相关参数。
2、关闭闹钟:
RTC_AlarmCmd(RTC_Alarm_A,DISABLE);
3、配置闹钟参数:
RTC_SetAlarm();
4、开启闹钟:
RTC_AlarmCmd(RTC_Alarm_A,EABLE);
5、清除标志位
RTC_ClearITPendingBit(RTC_IT_ALRA);
//清除闹钟(A)中断
EXTI_ClearITPendingBit(EXTI_Line17);
//清除LINE17上的中断标志位
6、开启配置闹钟中断:
RTC_ITConfig();
//开启闹钟(A)中断
RTC_AlarmCmd();
//开启闹钟(A)
7、写中断服函数:
RTC_Alarm_IRQHandler();
RTC周期性自动唤醒配置一般步骤
2、关闭WakeUp:
RTC_WakeUpCmd(DISABLE);
3、配置WakeUp时钟分频系数/来源:
RTC_WakeUpClockConfig();
4、设置WakeUp自动装载寄存器:
RTC_SetWakeUpCounter();
RTC_ClearITPendingBit(RTC_IT_WUT);
//清除RTCWAKEUP的标志位
EXTI_ClearITPendingBit(EXTI_Line22);
//清除LINE22上的中断标志位
6、使能WakeUp:
RTC_WakeUpCmd(ENABLE);
7、开启配置闹钟中断:
//开启WAKEUP定时器中断RTC_WakeUpCmd(ENABLE);
//开启8、8、WAKEUP定时器
9、写中断服务函数:
RTC_WKUP_IRQHandler();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STMF 库函数 笔记