当前位置: 首页 > news >正文

常州建网站公司厦门网站建设公司排行榜

常州建网站公司,厦门网站建设公司排行榜,中国建设厅官网,深圳市市场监督管理局官网【stm32】hal库学习笔记-GPIO按键控制LED和蜂鸣器 注#xff1a;本学习笔记基于stm32f4系列 使用的开发板为正点原子stmf407ZGT6探索者开发板 GPIO引脚使用时#xff0c;可输入或输出数字信号 例如: 检测按键输入信号#xff08;Read_Pin#xff09;输出信号#xff08;W…【stm32】hal库学习笔记-GPIO按键控制LED和蜂鸣器 注本学习笔记基于stm32f4系列 使用的开发板为正点原子stmf407ZGT6探索者开发板 GPIO引脚使用时可输入或输出数字信号 例如: 检测按键输入信号Read_Pin输出信号Write_Pin 输出信号点亮或熄灭LED 硬件特点 GPIO引脚内部结构图 GPIO状态 输入浮空状态上拉下拉电阻均不使用复位时状态输入上拉状态只使用上拉电阻-引脚外部无输入时读到的电平为高电平输入下拉状态只使用下拉电阻-引脚外部无输入时读到的电平为低电平模拟状态不使用任何内部的上拉下拉电阻-用于ADC输入/DAC输出引脚开漏输出Output Open Drain推挽输出输出1时引脚为高电平输出0时引脚为低电平 若要增强引脚的输出驱动能力则可使用上拉-如GPIO输出高电平点亮LED复用功能推挽复用功能开漏 涉及到的函数 重要函数 HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)按键控制LED LED部分原理图 按键部分原理图 实现功能 按下KEY0时使LED1的输出翻转 按下KEY1时使LED2的输出翻转 按下KEY2时使LED1与LED2的状态都翻转 MCU图形化配置 连接按键的引脚选择GPIO_Input 连接LED的引脚选择GPIO_Output 并设置相应的用户标签 KEY0,KEY1,KEY2配置为上拉Pull-upPF9,PF10设置为推挽输出Output Push Pull调试引脚设为串行调试引脚WSD 在RCC里将HSE改为晶振 在时钟树界面将HSE改为8MHz主锁相环选择HSE作为时钟源设置HCLK为168 代码部分 编写驱动程序 keyled.c #include keyled.h //编写函数扫描被按下的按键 KEYS ScanPressedKey(uint32_t timeout) {uint32_t tickstart HAL_GetTick();const uint32_t btnDelay 20;//延时时间while (1){ #ifdef KeyRight_Pinif (HAL_GPIO_ReadPin(Key0_GPIO_Port, Key0_Pin) GPIO_PIN_RESET){HAL_Delay(btnDelay);//延时消除前抖动if (HAL_GPIO_ReadPin(Key0_GPIO_Port, Key0_Pin) GPIO_PIN_RESET)return KEY_0;} #endif #ifdef KeyDown_Pinif (HAL_GPIO_ReadPin(Key1_GPIO_Port, Key1_Pin) GPIO_PIN_RESET){HAL_Delay(btnDelay);if (HAL_GPIO_ReadPin(Key1_GPIO_Port, Key1_Pin) GPIO_PIN_RESET)return KEY_1;} #endif #ifdef KeyLeft_Pinif (HAL_GPIO_ReadPin(Key2_GPIO_Port, Key2_Pin) GPIO_PIN_RESET){HAL_Delay(btnDelay);if (HAL_GPIO_ReadPin(Key2_GPIO_Port, Key2_Pin) GPIO_PIN_RESET)return KEY_2;} #endif #ifdef KeyUp_Pinif (HAL_GPIO_ReadPin(KeyUp_GPIO_Port, KeyUp_Pin) GPIO_PIN_SET){HAL_Delay(btnDelay);if (HAL_GPIO_ReadPin(KeyUp_GPIO_Port, KeyUp_Pin) GPIO_PIN_SET)return KEY_UP;} #endifif (timeout ! KEY_WAIT_ALWAYS) {if ((HAL_GetTick() - tickstart) timeout)break;}}return KEY_NONE; }//若没有按键被按下超时后跳出循环keyled.h #include main.h //创建枚举类型 typedef enum {KEY_NONE 0,KEY_1,KEY_2,KEY_UP,KEY_NONE } KEYS; //定义参数-表示一直等待按键按下 #define KEY_WAIT_ALWAYS 0KEYS ScanPressedKey(uint32_t timeout); //LED1的宏定义函数 #ifdef LED1_Pin#define LED1_Toggle() HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin)//实现翻转#define LED1_OFF() HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET)//实现打开#define LED1_ON() HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET)//实现关闭 #endif //LED2的宏定义函数 #ifdef LED2_Pin#define LED2_Toggle() HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin)#define LED2_OFF() HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET)#define LED2_ON() HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET) #endif //蜂鸣器的宏定义函数 #ifdef Buzzer_Pin#define Buzzer_Toggle() HAL_GPIO_TogglePin(Buzzer_GPIO_Port, Buzzer_Pin)#define Buzzer_ON() HAL_GPIO_WritePin(Buzzer_GPIO_Port, Buzzer_Pin, GPIO_PIN_SET)#define Buzzer_OFF() HAL_GPIO_WritePin(Buzzer_GPIO_Port, Buzzer_Pin, GPIO_PIN_RESET) #endif应用驱动程序 编写主程序 while (1){KEYS curKeyScanPressedKey(KEY_WAIT_ALWAYS);switch (curKey){case KEY_0:LED1_Toggle();break;case KEY_1:LED2_Toggle();break;case KEY_2:LED1_Toggle();LED2_Toggle();break;case KEY_UP:Buzzer_Toggle();break;default:break;}HAL_Delay(200);//消除按键弹起时的的抖动影响按键控制蜂鸣器 有源蜂鸣器原理图 有源蜂鸣器是指自带了震荡电路的蜂鸣器这种蜂鸣器一接上电就会自己震荡发声。而如 果是无源蜂鸣器则需要外加一定频率2~5Khz的驱动信号才会发声。 图中 Q4 是用来扩流R65 则是一个下拉电阻避免 MCU 复位的时候蜂鸣器可能发声的 现象。BEEP 信号直接连接在 MCU 的 PF8 上面PF8 可以做 PWM 输出可使用 PWM 来控制蜂鸣器实现“唱歌”。 实现功能: 按下KEY_UP按键时蜂鸣器输出翻转 MCU图形化配置 连接蜂鸣器的引脚选择GPIO_Output 并设置相应的用户标签 KEY_UP配置为下拉Pull-downPF8设置为下拉推挽输出Output Push Pull将初始状态改为High防止一复位蜂鸣器就响最大输出频率-若为无源蜂鸣器则改为High有源滤波器都可 成果演示 上键翻转蜂鸣器状态 KEY0翻转红灯KEY1翻转绿灯 KEY2同时翻转两个灯状态
http://www.zqtcl.cn/news/927405/

相关文章:

  • 乐清门户网站建设网络推广关键词优化公司
  • 自己做的网站被攻击了企业展厅方案设计公司
  • 可信赖的郑州网站建设公司网站怎样实名认证
  • 创建一个网站的步骤是中国机械加工网招聘信息
  • 做电影解析网站烟台网站建设外贸
  • 做网站 网上接单汽车网站开发流程
  • 2017网站开发发展前景主页网站建设
  • 苏州手机网站建设费用上海企业制作网站
  • 网站上怎样做轮播图网站后台乱码怎么办
  • 专业网站建设品牌策划商务网站建设与维护考试
  • 网站开发手机版WordPress如何清空评论
  • 公司怎么建立网站吗010网站建设
  • 网站制作找哪家公司好湖北专业网站建设大全
  • 广州建设网站是什么关系wordpress 插件位置
  • 网站建设工作室 怎么样做一个网站需要多少钱
  • 北京网站制作人才免费企业网站源码
  • 微信商城网站怎么做网站备案是先做网站还是做完了备案
  • 工商局网站查询入口wordpress 文章列表顺序
  • 可以做平面设计兼职的网站模板商城建站
  • 织梦网站如何做301跳转畅销营销型网站建设电话
  • 新网企业邮箱保定seo
  • 河南国控建设集团招标网站网上注册公司核名流程
  • 推推蛙网站建设云南网站开发费用
  • 网站没服务器行吗价格低廉怎么换个说法
  • 用wordpress编写网站完整网站开发视频教程
  • 电商型网站建设价格ppt制作网站
  • 东莞做个网站查询工商营业执照
  • 从网址怎么看网站的域名租用云服务器多少钱
  • 网站开发技术有个人网页首页设计图片
  • 一站式网站建设平台做电商网站需要做什么准备