版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目三
流水灯、蜂鸣器、I/O按键设计【知识目标】掌握STM32F4单片机IO端口的结构;掌握STM32F4单片机寄存器的功能;掌握STM32F4的标准库的IO端口库函数功能。【能力目标】能够根据端口功能设置IO端口寄存器;能够使用标准库函数完成IO端口的初始化设置;掌握IO端口的模块化程序方法与步骤。【素质目标】培养规范化程序设计习惯;培养分析问题解决问题的能力;培养阅读设计文档资料的能力。项目三基于STM32F407ZGT6的流水灯、蜂鸣器、I/O按键设计任务3.1LED单灯闪烁设计任务3.2蜂鸣器控制设计任务3.3按键控制LED和蜂鸣器设计任务3.1LED单灯闪烁设计学习目标:掌握STM32单片机控制LED闪烁程序设计调试过程;任务功能:实现发光二极管LED1周期为1秒,占空比为50%的连续闪烁功能;知识目标:掌握STM32F4单片机I/O端口结构、功能和功能设置;能力目标:掌握STM32F4单片机I/O端口应用项目的程序设计、调试过程;素质目标:规范程序设计过程,养成良好的程序设计习惯;1.STM32F407ZGT6单片机驱动发光二极管电路结构3.STM32F407ZGT6的I/O端口寄存器结构2.STM32F407ZGT6的I/O端口功能任务3.1LED单灯闪烁设计PC0~PC7驱动发放二极管LED1~LED8低电平点亮发光二极管1.STM32F407ZGT6单片机驱动发光二极管电路结构PH(PH0~PH1)PA(PA0~PA15)
PB(PB0~PB15)
PC(PC0~PC15)
PD(PD0~PD15)
PE(PE0~PE15)
PF(PF0~PF15)
PG(PG0~PG15)2.STM32F407ZGT6的I/O端口功能STM32F4单片机的I/O的端口可以设置为:输入模式输出模式模拟端口模式(AD输入端口、DA输出端口)复用功能模式2.STM32F407ZGT6的I/O端口功能输出模式复用输出复用输入输入模式模拟量出模式模式(MODE[1:0])输出模式(OTYPER)端口速度(OSPEEDR【B:A】)上拉/下来设置(PUPDR【1:0】)I/O端口模式00XX00I/O端口输入模式,浮空输入XX01I/O端口输入模式,上拉XX10I/O端口输入模式,下拉XX11I/O端口输入模式保留(浮空)010四种速度模式设置00I/O端口推挽输出001I/O端口推挽输出,电阻上拉010I/O端口推挽输出,电阻下拉011保留100I/O端口漏极开路输出101I/O端口漏极开路,电阻上拉110I/O端口漏极开路,电阻下拉111保留(I/O端口漏极开路输出)100四种速度模式设置00复用功能推挽001复用功能,推挽,电阻上拉010复用功能,推挽,电阻下拉011保留100复用功能,漏极开路101复用功能,漏极开路,电阻上拉110复用功能,漏极开路,电阻下拉111保留11XX00模拟量端口XX01保留XX10XX11输入STM32F407ZGT6的I/O端口功能总结3.端口设置:上拉、下拉、浮空模式1.工作模式:输入模式、输出模式、复用功能、模拟量模式2.输出模式:输出方式包括推挽输出、开漏输出
输出速度:四种速度选择模式4.设置方法:通过设置寄存器实现①GPIO端口模式寄存器(GPIOx_MODER)(x=A..I)3.STM32F407ZGT6的I/O端口的基本配置寄存器00:输入(复位状态)01:通用输出模式10:复用功能模式11:模拟模式②GPIO端口输出类型寄存器(GPIOx_OTYPER)(x=A..I)③GPIO端口输出速度寄存器(GPIOx_OSPEEDR)(x=A..I)④GPIO端口上拉/下拉寄存器(GPIOx_PUPDR)(x=A..I)⑤GPIO端口输入数据寄存器(GPIOx_IDR)(x=A..I)⑥GPIO端口输出数据寄存器(GPIOx_ODR)(x=A..I)⑦GPIO端口置位/复位寄存器(GPIOx_BSRR)(x=A..I)⑧GPIO端口配置锁定寄存器(GPIOx_LCKR)(x=A..I)⑨GPIO复用功能低位寄存器(GPIOx_AFRL)(x=A..I)⑩GPIO复用功能高位寄存器(GPIOx_AFRH)(x=A..I)GPIO设备文件:stm32f4xx_gpio.cSTM32GPIO端口操作的接口函数定义stm32f4xx_gpio.hSTM32GPIO端口数据定义STM32I/O端口操作的接口函数定义声明GPIO的几个重要函数1个初始化函数:voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);2个读取输入电平函数:uint8_tGPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);uint16_tGPIO_ReadInputData(GPIO_TypeDef*GPIOx);2个读取输出电平函数:uint8_tGPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);uint16_tGPIO_ReadOutputData(GPIO_TypeDef*GPIOx);4个设置输出电平函数:voidGPIO_SetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);voidGPIO_ResetBits(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);voidGPIO_WriteBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin,BitActionBitVal);voidGPIO_Write(GPIO_TypeDef*GPIOx,uint16_tPortVal);4.LED单灯闪烁项目设计【电路设计】4.LED单灯闪烁项目设计
(1)打开新建的模板项目,修改main.c文件内容,编译;
(2)新建LED驱动文件led.c和led.h,保存至HARDWARE/LED文件夹下;
(3)在MDK环境下添加led.h文件所在的路径;(4)在把各个源文件对应的头文件添加到sys.h中;(5)设计主程序main.c;(6)将led.c添加到工程(MDK工程目录下HARDWARE包内);【程序设计】(7)编译程序并下载调试;表3.1GPIO寄存器的参数配置模式寄存器MODER输出类型寄存器OTYPER输出速度寄存器OSPEEDR上拉/下拉寄存器PUPDR01:输出模式0:推挽模式1:开漏模式00:速度2MHz01:速度25MHz10:速度50MHz11:速度100MHz00:无上拉无下拉01:上拉10:下拉11:保留10:复用模式00:输入模式不可用不可用11:模拟功能不可用不可用00:无上拉无下拉01:保留10:保留11:保留RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE); //使能GPIOF时钟STM32的外设很多,为了降低功耗,每个外设都对应一个时钟,芯片上电时时钟都是关闭的,如果要想外设工作,必须把相应时钟打开。所有的GPIO都挂载到AHB1总线上
led.c编程要点1.使能GPIO端口时钟初始化结构体初始化GPIO的常用格式:GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9
//GPIOF9GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
//普通输出模式GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
//100MHzGPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
//推挽输出GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
//上拉GPIO_Init(GPIOF,&GPIO_InitStructure);
//初始化GPIO2.初始化GPIO目标引脚任务3.2LED流水灯程序设计【任务要求】采用TM32F407ZGT6单片机的引脚驱动蜂鸣器,蜂鸣器以100Hz的频率进行鸣叫。【实现过程】在任务3.1基础上,通过修改main()函数中的while语句功能,实现LED流水功能。任务3.3蜂鸣器控制程序设计【任务要求】采用STM32F407ZGT6单片机引脚驱动发光二极管LED1~LED8,实现8个发光二极管循环点亮的流水灯功能,每个LED灯循环点亮时间为0.2秒。【电路设计】
(1)打开新建的模板项目;
(2)新建蜂鸣器驱动文件beep.c和beep.h,保存至HARDWARE/BEEP文件夹下;
(3)在MDK环境下添加beep.h文件所在的路径;(4)在把各个源文件对应的头文件添加到sys.h中;(5)设计主程序main.c;(6)将beep.c添加到工程(MDK工程目录下HARDWARE包内);任务3.3蜂鸣器控制程序设计【程序设计】(7)编译程序并下载调试;任务3.4按键控制发光二极管状态设计【任务要求】采用STM32F407ZGT6单片机的端口驱动四个按键WK_UP,KEY1,KEY2,KEY3,通过四个按键驱动发光二极管,四个按键的功能分别设定为:WK_UP按键按下的首次功能为LED1的状态取反,WK_UP按键被连续按下后的循环执行功能为LED2的状态取反;KEY1按键按下首次功能为LED3的状态取反,KEY1按键被连续按下后的循环执行功能为LED4的状态取反;KEY2按键按下的首次功能为LED5的状态取反,KEY2按键被连续按下后的循环执行功能为LED6的状态取反;按下KEY3按键按下的首次功能为LED7的状态取反,KEY3按键被连续按下后循环执行功能为LED8的状态取反。1.I/O按键硬件电路结构WK_UP---PA0KEY1—PE4KEY2—PE3KEY3—PE2KEY1、KEY2、KEY3上拉WK_UP按键下拉如何判断PA0口有按键按下?未按下PA0口输入低电平;按下PA0口输入高电平如何判断PE2、PE3、PE4口有按键按下?未按下输入高电平按下输入低电平PA0初始化功能:输入浮空或下拉PE2、PE3、PE4初始化功能:输入浮空或上拉(1)按键电路结构:PA0下拉;PE2、PE3、PE4上拉;
(3)PA0、PE2、PE3、PE4的初始化参数(2)WK_UP的检测:按下为1,未按为0
KEY1,KEY2,KEY3检测:按下为0,未按为1按键设计总结:2.I/O按键硬件检测程序设计
(1)打开新建的模板项目;
(2)新建蜂鸣器驱动文件iokey.c和iokey.h,保存至HARDWARE/IOKEY文件夹下;
(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 微创手术联合免疫治疗对胶质瘤炎症微环境的影响
- 微创手术影像监护护理配合要点
- 微创入路下颅底肿瘤手术出血控制技巧
- 2025年国际陆运全程代理协议
- 康复医学中的康复人才培养策略
- 应急物资需求预测模型构建与应用
- 年龄分层跨境心理干预策略
- 小修保养安全培训课件
- 干眼症合并老视的屈光手术策略
- 干燥症唾液腺标志物检测的患者教育策略
- 铜陵市郊区2025年网格员笔试真题及答案解析
- 2026年广东省春季高考模拟数学试卷试题(含答案解析)
- 微带贴片天线基础知识
- GB/T 46561-2025能源管理体系能源管理体系审核及认证机构要求
- 物业保安主管年终述职报告
- 2025年国家开放大学《市场调研方法与实践》期末考试参考题库及答案解析
- 儿童心肺复苏操作要点与急救流程
- 水电解制氢设备运行维护手册
- 无人机专业英语 第二版 课件 6.1 The Basic Operation of Mission Planner
- 2025-2030中国生物炼制行业市场现状供需分析及投资评估规划分析研究报告
- 透析患者营养不良课件
评论
0/150
提交评论