嵌入式单片机基础篇(二)之stm32F1控制LED指示灯以及蜂鸣器详解

嵌⼊式单⽚机基础篇(⼆)之stm32F1控制LED指⽰灯以及蜂鸣器详解
嵌⼊式单⽚机基础篇(⼆)
stm32F1控制LED指⽰灯以及蜂鸣器详解
下⾯以stm32f103zet6以及51单⽚机为例,讲解单⽚机基础知识LED指⽰灯以及蜂鸣器的控制
第⼀部分:stm32
1、⾸先我们先介绍LED指⽰灯以及蜂鸣器的电路图以及控制原理,电路图如下:
蜂鸣器电路图如下:
LED原理图如下:
由上图可以分析出蜂鸣器⾼电平有效(发声),LED指⽰灯低电平有效(发光)。
2、硬件部分介绍完了之后我们就可以写代码控制蜂鸣器发声或者LED指⽰灯发光了
(1)我们先介绍LED以及蜂鸣器的初始化函数:
血压袖带void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);//使能 PB,PE 端⼝时钟雨污分流器
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//LED0-->PB.5 推挽输出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_5);//PB.5 输出⾼
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//LED1-->PE.5 推挽输出mir162
GPIO_Init(GPIOE,&GPIO_InitStructure);
GPIO_SetBits(GPIOE,GPIO_Pin_5);/PE.5输出⾼
}
该函数的功能就是⽤来实现配置 PB5和 PE5 为推挽输出,传输速度为50MHz,并将PB5和 PE5引脚置为⾼电平状态。***注意:***在配置STM32 外设的时候,任何时候都要先使能该外设的时钟。GPIO 是挂载在 APB2 总线上的外设,在固件库中对挂载在 APB2 总线上的外设时钟使能是通过函数 RCC_APB2PeriphClockCmd()来实现的。代码:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);
脉动测速中心这⾏代码的作⽤是使能 APB2 总线上的 GPIOB 和 GPIOE 的时钟。
***说明:***因为 GPIOB 和 GPIOE 的 IO ⼝的初始化参数都是设置在结构体变量GPIO_InitStructure 中,因为两个 IO ⼝的模式和速度都⼀样,所以我们只⽤初始化⼀次,在
GPIOE.5 的初始化的时候就不需要再重复初始化速度和模式了。最后⼀⾏代码:
GPIO_SetBits(GPIOE,GPIO_Pin_5);的作⽤是在初始化中将 GPIOE.5 输出设置为⾼。
***如何设置某个引脚的⾼低电平状态?***⽤以下代码:
GPIO_SetBits(GPIOB, GPIO_Pin_5); //设置 GPIOB.5 输出 1,也就是⾼电平
GPIO_ResetBits (GPIOB, GPIO_Pin_5); //设置 GPIOB.5 输出 0,也就是低电平
讲完以上的知识我们再看蜂鸣器的初始化代码就⼀⽬了然了:
void BEEP_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
//使能 GPIOB 端⼝时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//BEEP-->GPIOB.8 端⼝配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度为 50MHz
GPIO_Init(GPIOB,&GPIO_InitStructure);//根据参数初始化 GPIOB.8
GPIO_ResetBits(GPIOB,GPIO_Pin_8);//输出 0,关闭蜂鸣器输出
}
我们来总结⼀下如何初始化stm32的⼀个引脚:
1、使能端⼝时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);
2、设置某个具体引脚(PB5)
年龄识别GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_Init(GPIOB, &GPIO_InitStructure);
3、设置IO⼝具体模式(⼀共8种,举例为推挽输出)
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
4、设置IO⼝的传输速度(50Hz)
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
5、设置引脚的电平状态
GPIO_SetBits(GPIOB, GPIO_Pin_5); //设置 GPIOB.5 输出 1,也就是⾼电平
GPIO_ResetBits (GPIOB, GPIO_Pin_5); //设置 GPIOB.5 输出 0,也就是低电平
第⼆部分:51单⽚机
51单⽚机的引脚状态设置:
P1^2=0; //将p1.2引脚置低电平
浏阳霉素
P1^2=1;//将p1.2引脚置⾼电平

本文发布于:2024-09-21 14:34:37,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/126490.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:蜂鸣器   设置   引脚
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议