ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:17.93KB ,
资源ID:4210308      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4210308.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(STMF库函数笔记.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

STMF库函数笔记.docx

1、STMF库函数笔记 文件管理序列号:K8UY-K9IO69-O6M243-OL889-F88688STMF库函数笔记(1)GPIO_Mode_AIN模拟输入(2)GPIO_Mode_IN_FLOATING浮空输入(3)GPIO_Mode_IPD下拉输入(4)GPIO_Mode_IPU上拉输入(5)GPIO_Mode_Out_OD开漏输出(6)GPIO_Mode_Out_PP推挽输出(7)GPIO_Mode_AF_OD复用开漏输出(8)GPIO_Mode_AF_PP复用推挽输出平时接触的最多的也就是推挽输出、开漏输出、上拉输入这三种推挽输出:可以输出高,低电平,连接数字器件;开漏输出:输出端相当

2、于三极管的集电极.要得到高电平状态需要上拉电阻才行,一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平。浮空输入:由于浮空输入一般多用于外部按键输入,结合图上的输入部分电路,我理解为浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。GPIOGPIO_Init函数初始化GPIO_InitTypeDefGPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);/使能GPIOF时钟/GPIOF9,F

3、10初始化设置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10;/LED0和LED1对应IO口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;/普通输出模式GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;/推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;/100MHzGPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;/上拉GPIO_Init(GPIOF,&GPIO_InitSt

4、ructure);/初始化GPIOF9,F102个读取输入电平函数: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的输入电平。实际操作的是GPIOx_IDR寄存器。例如:GPIO_ReadInputData(G

5、PIOA);/读取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_ODR寄存器。例如:GPIO_ReadOutputDa

6、ta(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_Writ

7、e(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.G

8、PIO_Mode=GPIO_Mode_AF;/复用功能中断优先级设置步骤1、系统运行后先设置中断优先级分组。调用函数:voidNVIC_PriorityGroupConfig(uint32_tNVIC_PriorityGroup);整个系统执行过程中,只设置一次中断分组。2、针对每个中断,设置对应的抢占优先级和响应优先级:voidNVIC_Init(NVIC_InitTypeDef*NVIC_InitStruct);如果需要挂起/解挂,查看中断当前激活状态,分别调用相关函数即可。独立看门狗操作步骤1、取消寄存器写保护:IWDG_WriteAccessCmd();2、设置独立看门狗的预分频系数,

9、确定时钟:IWDG_SetPrescaler();3、设置看门狗重装载值,确定溢出时间:IWDG_SetReload();4、使能看门狗IWDG_Enable();5、应用程序喂狗:IWDG_ReloadCounter();溢出时间计算:Tout=(42prer)rlr)/32(M4)在主函数,要设置中断优先级分组NVIC_PriorityGroupConfig();delay_init(168);配置时钟窗口看门狗配置过程voidWWDG_Init(u8tr,u8wr,u32fprer)1、使能看门狗时钟:RCC_APB1PeriphClockCmd();2、设置分频系数:WWDG_SetP

10、rescaler();3、设置上窗口值:WWDG_SetWindowValue();4、开启提前唤醒中断并分组(可选):WWDG_EnableIT();NVIC_Init();WWDG_ClearFlag();/清除提前唤醒标志位5、使能看门狗:WWDG_Enable();7、编写中断服务函数WWDG_IRQHandler();1)喂狗:WWDG_SetCounter();2)清除标志位WWDG_ClearFlag();在主函数,要设置中断优先级分组NVIC_PriorityGroupConfig();delay_init(168);配置时钟外部中断STM32F4的每个IO都可以作为外部中断输

11、入。STM32F4的中断控制器支持22个外部中断/事件请求EXTI线015:对应外部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_I

12、nit();3、设置IO口与中断线的映射关系。voidSYSCFG_EXTILineConfig();4、初始化线上中断,设置触发条件等。EXTI_Init();5、配置中断分组(NVIC),并使能中断。NVIC_Init();6、编写中断服务函数。EXTIx_IRQHandler();1)清除中断标志位EXTI_ClearITPendingBit();在主函数,要设置中断优先级分组NVIC_PriorityGroupConfig();delay_init(168);配置时钟串口配置的一般步骤1、串口时钟使能:RCC_APBxPeriphClockCmd();GPIO时钟使能:RCC_AHB1

13、PeriphClockCmd();2、引脚复用映射:GPIO_PinAFConfig();3、GPIO端口模式设置:GPIO_Init();模式设置为GPIO_Mode_AF4、串口参数初始化:USART_Init();5、开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)NVIC_Init();USART_ITConfig();6、使能串口:USART_Cmd();7、编写中断处理函数:USARTx_IRQHandler();8、串口数据收发:voidUSART_SendData();/发送数据到串口,DRuint16_tUSART_ReceiveData();/接受数据,从DR读

14、取接受到的数据9、串口传输状态获取:FlagStatusUSART_GetFlagStatus();voidUSART_ClearITPendingBit();串口中断服务函数不用清除中断在主函数,要设置中断优先级分组NVIC_PriorityGroupConfig();定时器中断实现步骤voidTimx_init(u8arr,psc);1、能定时器时钟。RCC_APB1PeriphClockCmd();2、初始化定时器,配置ARR,PSC。TIM_TimeBaseInit();TIM_TIConfig();/使能更新中断3、开启定时器中断,配置NVIC。NVIC_Init();4、使能定时器

15、。TIM_Cmd();5、编写中断服务函数。TIMx_IRQHandler();1)判断中断模式TIM_GetTIStatus(TIMx,中断模式);2)清除标志TIM_ClearITPendingBit();在主函数,要设置中断优先级分组NVIC_PriorityGroupConfig();delay_init(168);配置时钟PWM输出配置步骤:voidTIM14_PWM_Init(u32arr,u32psc);1、使能定时器14和相关IO口时钟。使能定时器14时钟:RCC_APB1PeriphClockCmd();使能GPIOF时钟:RCC_AHB1PeriphClockCmd();2

16、、初始化IO口为复用功能输出。函数:GPIO_Init();GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;/复用功能3、GPIOF9复用映射到定时器14GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14); 4、初始化定时器:ARR,PSC等:TIM_TimeBaseInit();5、初始化输出比较参数:TIM_OC1Init();6、使能预装载寄存器:TIM_OC1PreloadConfig(TIM14,TIM_OCPreload_Enable);7、使能自动重装载的预装载寄存器允许位TIM_ARRP

17、reloadConfig(TIM14,ENABLE);8、使能定时器TIM_Cmd(TIM14,ENABLE);/TIM149、不断改变比较值CCRx,达到不同的占空比效果:TIM_SetCompare1();在主函数,要设置中断优先级分组NVIC_PriorityGroupConfig();delay_init(168);配置时钟输入捕获的一般配置步骤:1、初始化定时器和通道对应IO的时钟。2、初始化IO口,模式为复用:GPIO_Init();GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;3、设置引脚复用映射:GPIO_PinAFConfig();4、初

18、始化定时器ARR,PSCTIM_TimeBaseInit();5、初始化输入捕获通道TIM_ICInit();6、如果要开启捕获中断,TIM_ITConfig();NVIC_Init();7、使能定时器:TIM_Cmd();8、编写中断服务函数:TIMx_IRQHandler();RTCRTC日历配置一般步骤1、使能PWR时钟:RCC_APB1PeriphClockCmd();2、使能后备寄存器访问:PWR_BackupAccessCmd();RCC_LSEConfig(RCC_LSE_ON);/LSE开启3、配置RTC时钟源,使能RTC时钟:RCC_RTCCLKConfig();RCC_RT

19、CCLKCmd();如果使用LSE,要打开LSE:RCC_LSEConfig(RCC_LSE_ON);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)

20、;/清除闹钟(A)中断EXTI_ClearITPendingBit(EXTI_Line17);/清除LINE17上的中断标志位6、开启配置闹钟中断:RTC_ITConfig();/开启闹钟(A)中断RTC_AlarmCmd();/开启闹钟(A)EXTI_Init();NVIC_Init();7、写中断服函数:RTC_Alarm_IRQHandler();RTC周期性自动唤醒配置一般步骤1、RTC已经初始化好相关参数。2、关闭WakeUp:RTC_WakeUpCmd(DISABLE);3、配置WakeUp时钟分频系数/来源:RTC_WakeUpClockConfig();4、设置WakeUp自动

21、装载寄存器:RTC_SetWakeUpCounter();5、清除标志位RTC_ClearITPendingBit(RTC_IT_WUT);/清除RTCWAKEUP的标志位EXTI_ClearITPendingBit(EXTI_Line22);/清除LINE22上的中断标志位6、使能WakeUp:RTC_WakeUpCmd(ENABLE);7、开启配置闹钟中断:RTC_ITConfig();/开启WAKEUP定时器中断 RTC_WakeUpCmd(ENABLE);/开启8、8、WAKEUP定时器EXTI_Init();NVIC_Init();9、写中断服务函数:RTC_WKUP_IRQHandler();在主函数,要设置中断优先级分组NVIC_PriorityGroupConfig();delay_init(168);配置时钟

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1