蜂鸣器实验

硬件连接

用一个 NPN 三极管(S8050)来驱动蜂鸣器,R61 主要用于防止蜂鸣器的误发声。当 PF8 输出高电平的时候,蜂鸣器将发声,当 PF8 输出低电平的时候,蜂鸣器停止发声。

编写程序

蜂鸣器实验也是GPIO的输出实验和上一篇的笔记都差不多,首先要先写beep.h和beep.c中的程序。

beep.h :

#ifndef BEEP_H
#define BEEP_H
void BEEP_Init(void);
#endif

beep.c :

#include "stm32f4xx.h"
#include "beep.h"
void BEEP_Init(void)
{GPIO_InitTypeDef GPIO_InitStruct;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);GPIO_InitStruct.GPIO_Mode=GPIO_Mode_OUT;GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;//为了操作led所以也初始化了PF9GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_100MHz;GPIO_Init(GPIOF,&GPIO_InitStruct);GPIO_ResetBits(GPIOF,GPIO_Pin_8);GPIO_SetBits(GPIOF,GPIO_Pin_9);
}

编写main.c中的代码使led亮点时候蜂鸣器响

#include "beep.h"
#include "delay.h"
#include "stm32f4xx.h"
int main(void)
{delay_init(168);BEEP_Init();while(1){PFout(8)=0;PFout(9)=1;delay_ms(500);PFout(8)=1;PFout(9)=0;delay_ms(500);}
}

运行效果:

BEEP

按键输入实验

硬件连接

因为当按下KEY_UP时会输入高电压所以在设置上下拉时应设置下拉使其未按下按键时为低电压,KEY0,1,2则与之相反。

编写代码

初始化代码和上面类似,但会多加一个读取按键输入函数。

key.h :

#ifndef KEY_H
#define KEY_H
void KEY_Init(void);
int KEY_Scan(int mode);
#endif

key.c 中初始化函数:

#include "stm32f4xx.h"
#include "key.h"
#include "delay.h"
void KEY_Init(void)
{GPIO_InitTypeDef  GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOE, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;GPIO_Init(GPIOE, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN ;GPIO_Init(GPIOA, &GPIO_InitStructure);
}

按键的输入有两种模式,长时间按读取一次,长时间按读取多次,下面是读取按键输入函数:

int KEY_Scan(int mode)//输入参数1支持连续按,0不支持连续按
{static int key_up=1;if(mode)key_up=1;if(key_up&&(PAin(0)==1||PEin(2)==0||PEin(3)==0||PEin(4)==0)){delay_ms(10);//防抖key_up=0;if(PAin(0)==1)return 1;else if(PEin(2)==0)return 2;else if(PEin(3)==0)return 3;else if(PEin(4)==0)return 4;}else if((PAin(0)==0&&PEin(2)==1&&PEin(3)==1&&PEin(4)==1))key_up=1;return 0;
}

接下来是main.c中的代码,设计为按下KEY2红led灯转换状态,按下KEY1绿led灯转换状态,按下KEY0两个led灯都转化状态,按下KEY_UP蜂鸣器响一下。

#include "stm32f4xx.h"
#include "led.h"
#include "beep.h"
#include "delay.h"
#include "key.h"
int main(void)
{delay_init(168);LED_Init();BEEP_Init();KEY_Init();PFout(9)=0;while(1){int key=KEY_Scan(0);if(key)switch(key){case 1:PFout(8)=1;delay_ms(300);PFout(8)=0;break;case 2:PFout(9)=!PFout(9);PFout(10)=!PFout(10);break;case 3:PFout(10)=!PFout(10);break;case 4:PFout(9)=!PFout(9);break;}     }   }

运行结果:

按键

学习笔记五(蜂鸣器实验按键输入实验)相关推荐

  1. stm32按键输入实验c语言,stm32f103学习笔记(三)按键输入(IO口输入)

    学stm32第三天了,才学到按键输入,这进度也是醉了...谁叫俺c语言基础不行,还没有学过模数电呢.. 开发板上有4个按键:key0,key1,key2和wk_up,分别接在PE4,PE3,PE2和P ...

  2. 【STM32学习笔记】(11)——按键输入实验详解

    按键输入实验 实验内容:通过 ALIENTEK 精英 STM32F103 上已有的 3 个按键(KEY_UP.KEY0 和 KEY1),来控制板上的 2 个 LED(DS0 和 DS1)和蜂鸣器,其中 ...

  3. 【正点原子STM32连载】 第十五章 按键输入实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

    1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视 ...

  4. NRF51822开发笔记-6.nRF51822裸机实验按键输入控制LED输出

    NRF51822开发笔记-6.nRF51822裸机实验按键输入控制LED输出 一.设计思路 二.程序代码 三.总结 单个GPIO输入配置函数 多个GPIO输入配置函数 一.设计思路 用一个按键控制LE ...

  5. (实验55)单片机,STM32F4学习笔记,代码讲解【网络通信实验】【正点原子】【原创】

    文章目录 其它文章链接,独家吐血整理 实验现象 主程序 LWIP初始化程序 代码讲解 其它文章链接,独家吐血整理 (实验3)单片机,STM32F4学习笔记,代码讲解[按键输入实验][正点原子][原创] ...

  6. stm32 工业按键检测_「正点原子STM32Mini板资料连载」第七章 按键输入实验

    1)实验平台:正点原子STM32mini开发板 2)摘自<正点原子STM32 不完全手册(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第七章 按键输入实验 上一章,我们介 ...

  7. (实验39)单片机,STM32F4学习笔记,代码讲解【FATFS实验】【正点原子】【原创】

    文章目录 其它文章链接,独家吐血整理 实验现象 主程序 FATFS初始化程序 代码讲解 其它文章链接,独家吐血整理 (实验3)单片机,STM32F4学习笔记,代码讲解[按键输入实验][正点原子][原创 ...

  8. (实验4)单片机,STM32F4学习笔记,代码讲解【串口实验】【正点原子】【原创】

    文章目录 其它文章链接,独家吐血整理 实验现象 主程序 串口中断程序 代码讲解 其它文章链接,独家吐血整理 (实验3)单片机,STM32F4学习笔记,代码讲解[按键输入实验][正点原子][原创] (实 ...

  9. 判断按键值_ALIENTEK 阿波罗 STM32F767 开发板资料连载第七章 按键输入实验

    1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第七章 按键输入实验 上 ...

  10. ARM(IMX6U)裸机按键输入实验(BSP+SDK、GPIO输入与输出、按键消抖)

    参考:Linux之ARM(IMX6U)裸机按键输入实验(GPIO的输出与输入) 作者:一只青木呀 发布时间: 2020-08-17 21:43:37 网址:https://blog.csdn.net/ ...

最新文章

  1. centerface
  2. boost::regex模块在 cpp 文件中搜索类定义,使用全局回调函数的测试程序
  3. 定时器和promise_分析 Promise 内部实现
  4. IOCP加Windows线程池打造高伸缩性高性能的服务器应用
  5. InceptionNet V2整理总结
  6. 社群数据分析:你运营的社群是好社群吗?
  7. 用科学数据求真:地月之间不可能电视直播
  8. thinkphp与传统php,老生常谈php中传统验证与thinkphp框架(必看篇)
  9. HZK16汉字16*16点阵字库的使用及实例程序
  10. 85篇精彩的经典古文
  11. 苹果7pnfc功能门禁卡_苹果7手机nfc怎么开启 苹果手机门禁卡nfc功能
  12. 从word中复制图片到ckeditor编辑器中
  13. 编程游戏开发【飞翔的小鸟】
  14. 面试-android
  15. html设置幼圆字体,CSS font-family中文字体设置方法
  16. varchar可以设置唯一吗_微信可以设置特效主题皮肤了,满屏幕的小爱心,你心动了吗?...
  17. Word基础(三十三)脚注与尾注的转换
  18. MSRA提出通用文档预训练模型LayoutLM,通往文档智能之路!
  19. PowerPoint 2010去掉了宏录制器
  20. centos搭建局域网DNS服务器及单服务器配置多域名

热门文章

  1. 黑客组织“洋葱狗”潜伏3年终曝光 定期偷袭能源及交通行业
  2. 现在流行的少儿编程是不是再收大家的智商税?来看看最中肯的回答
  3. BMS专题之BMS的分类与功能
  4. web版的在线绘图工具
  5. .NET报表设计器ActiveReports入门:操作界面详解
  6. 易宝支付回调不成功问题解决
  7. wp手机 htc x310e
  8. openssl的x509命令简单入门
  9. 有文化的人吟了一句诗
  10. css写七步诗,《七步诗》改写550字