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

基础微网站开发代理商wordpress图文模板

基础微网站开发代理商,wordpress图文模板,泗洪企业网站建设,南京网站建设服务公司目录 1.GPIO基础知识 1.1系统架构 2. IO八种工作模式 2.1STM32 IO工作模式 2.2GPIO的输出速度 3.固件库实现LED点灯 3.1LED灯 LED灯,是一种能够将电能转化为可见光的半导体期间 3.2.控制LED灯 4.STM32控制蜂鸣器 1.蜂鸣器的种类 2.蜂鸣器的控制方式 3.软…

目录

1.GPIO基础知识

1.1系统架构

2. IO八种工作模式

2.1STM32 IO工作模式

2.2GPIO的输出速度

3.固件库实现LED点灯

3.1LED灯

LED灯,是一种能够将电能转化为可见光的半导体期间

3.2.控制LED灯

4.STM32控制蜂鸣器

1.蜂鸣器的种类

2.蜂鸣器的控制方式

3.软件设计流程

5 按键基础知识

5.1.深入理解GPIO输入

5.2按键控制LED灯

6 继电器

6.1.继电器的工作原理

6.2.继电器的引脚说明

6.3.单片机控制继电器软件开发流程

7.震动传感器

7.1.震动传感器工作原理

7.2.震动传感器硬件引脚接线

7.3.震动传感器控制灯

8.433无线模块

1.433M无线模块工作原理

2.引脚接线

3.433M控制灯软件开发流程


1.GPIO基础知识

GPIO(General-Purpose input/output,通用输入/输出接口)
用于感知外部信号(输入模式)和控制外部设备(输出模式)
简单模块: LED, 按键,蜂鸣器,温度传感器,使用一个 GPIO 就可以完成数据的传输 / 控制
复杂一点的模块 OLED FLASH, 六轴传感器需要多个引脚组成 协议 传输数据,USART,IIC,SPI等协议
MCU 单片机大都采用引脚复用模式也就是一个 GPIO ,可以直接控制它输出高低电平,也可以设置为某个协议的引脚之一。此外,一些MCU 的引脚,还能设置为 ADC 模式读取模拟信号,或者设置为DAC 模式输出模拟信号。

1.1系统架构

2. IO八种工作模式

GPIO结构图

2.1STM32 IO工作模式

输出模式有四种:推挽输出,开漏输出,复用开漏,复用推挽
输入模式有四种 : 上拉输入,下拉输入,浮空输入,模拟输入
输出模式:
1. 推挽输出( Push-Pull,pp
让输出控制变成了VDD/VSS输出,使得输出电流增大
提高了输出引脚的驱动能力,提高了电路的负载能力和开关的动作速度
2.开漏输出(Open-Drain,OD)
推挽输出模式可以直接输出高电平,开漏输出需要外接上拉电阻才能输出高电平
开漏输出的特性:
利用外部电路驱动能力
实现电平转换
方便实现“逻辑与” 功能
3.复用推挽/开漏输出(Alternate Funtion,AF)
GPIO除了作为通用输入输出引脚使用以外,还可以作为片上外设(USART,IIC,SPI) 专用引脚,即一个引脚可以有多种用途,但是同一时刻一个引脚只能使用复用功能中的一个
当引脚设置为复用功能的时候,可选择推挽复用模式或者复用开漏模式,在设置为复用开漏模式时,需要外接上拉电阻。
输入模式:
1. 上拉输入 (Input Pull-up)
VDD 经过开关、上拉电阻,连接外部 I/O 引脚。当开关闭合时,外部 I/O 输入信号时,默认
输入高电平。
2. 下拉输入 (Input Pull-down)
VSS经过开关,下拉电阻,连接外部I/O引脚,当开关闭合时,外部I/O无输入信号时,默认输入低电平
3. 浮空输入 (Floating Input)
两个上下拉电阻开关均断开,没有上拉也没有下拉,I/O引脚直接连接TTL肖特基触发器,此时,I/O引脚浮空,读取的电平是不确定的,外部信号是什么电平,MCU引脚就输入什么电平 ,MCU复位上电后,默认为浮空输入模式
4.模拟输入(Analoge mode)
两个上下拉电阻开关均断开,同事TTL肖特基触发器也断开,引脚信号直接连接模拟输入,实现对外部信号的采集。

2.2GPIO的输出速度

STM32 I/O 引脚工作再输出模式下时,需要配置 I/O 引脚的输出速度,该输出速度不是输出信号的速度,而是I/O 口驱动电路的响应速度。
STM32 提供了三个速度, 2MHZ,10MHZ,50MHZ
实际开发过程中需要结合实际情况选择合适的响应速度,以兼顾信号的稳定性和低功耗
当设备为高速时,功耗大,噪声大,电磁干扰强
当设备为低速时,功耗低,噪声小,电磁干扰弱
简单外设,比如 LED 灯,蜂鸣器建议使用 2MHZ 的输出速度。
而复用为 IIC SPI 等通信信号时,建议使用 10MHZ 50MHZ 以提高响应速度。

3.固件库实现LED点灯

3.1LED灯

LED灯,是一种能够将电能转化为可见光的半导体期间

原理:当给P极施加正向电压时,空穴和自由电子在P-N结复合,辐射出光子而发光。

3.2.控制LED

LED 灯的正极接到了 3.3V LED 灯的负极接到了 PA1 ,也就是 GPIOA1 引脚,只需要控制PA1 为相对应的低电平,即可点亮对饮的 LED 灯,输出高电平则熄灭对应的 LED灯。
软件设计流程:
1.初始化系统:
        初始化GPIO 外设时钟
        初始化LED 引脚
2.输出电平
实现代码:
led.c文件
#include "led.h"
#include "stm32f10x.h"void LED_Init()
{//³õʼ»¯LEDÒý½ÅGPIOGPIO_InitTypeDef led_initstruct;//³õʼ»¯Ê±ÖÓRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE );led_initstruct.GPIO_Pin=GPIO_Pin_1;            led_initstruct.GPIO_Speed=GPIO_Speed_50MHz;  led_initstruct.GPIO_Mode=GPIO_Mode_Out_PP;  GPIO_Init(GPIOA, &led_initstruct);}

main.c文件

#include "stm32f10x.h"
#include "main.h"
#include "led.h"int  main()
{//初始化等的引脚GPIOLED_Init();while(1){
//让GPIO1输出低电平 灯就亮了GPIO_ResetBits(GPIOA,GPIO_Pin_1);}}

如果要让灯实现一秒闪烁:

main.c文件:

#include "stm32f10x.h"
#include "main.h"
#include "led.h"
void delay(uint16_t time)
{uint16_t i=0;while(time--){i=12000;while(i--);}
}
int  main()
{//初始化等的引脚GPIOLED_Init();while(1){GPIO_ResetBits(GPIOA,GPIO_Pin_1);//GPIO1输出低电平灯亮delay(1000);GPIO_SetBits(GPIOA,GPIO_Pin_1);//GPIO1输出高电平灯灭delay(1000);}}

4.STM32控制蜂鸣器

1.蜂鸣器的种类

蜂鸣器是一种常用的电子发声元器件,采用直流电压供电。广泛应用于计算机,打印
机,报警器,电子玩具,汽车电子设备灯等产品中常见的蜂鸣器可分为有源蜂鸣器和
无源蜂鸣器。

2.蜂鸣器的控制方式

有源蜂鸣器:内部有震荡源,只要通电即可自动发出固定频率的声音。(频率固定无
法控制音色)
无源蜂鸣器:内部无震荡源,需要外部脉冲信号驱动发声,声音频率可变。(可改变
频率来改变音色)

3.软件设计流程

初始化系统
        初始化GPIO外设时钟
        初始化蜂鸣器的引脚
输出电平控制蜂鸣器
bear.c文件
#include "bear.h"
#include "stm32f10x.h"void Bear_Init(void)
{//1.初始化蜂鸣器引脚GPIO_InitTypeDef bear_initstruct;//2.初始化时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);bear_initstruct.GPIO_Pin=GPIO_Pin_3;bear_initstruct.GPIO_Speed=GPIO_Speed_10MHz;bear_initstruct.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOA,&bear_initstruct);}

main.c文件

#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"int  main()
{//初始化蜂鸣器的引脚CPIOA3Bear_Init();//GPIO3输出低电平 蜂鸣器响GPIO_ResetBits(GPIOA,GPIO_Pin_3);while(1){}}

5 按键基础知识

5.1.深入理解GPIO输入

GPIO 的特点:
具有内部上拉或下拉的功能
可以使用外部下拉或上拉

按键连接示意图 :

5.2按键控制LED灯

初始化系统
初始化 GPIO 外设时钟
初始化按键和 LED 的引脚
检测按键输入电平来控制 LED
key.c
#include "key.h"
#include "stm32f10x.h"void Key_Init(void)
{//³õʼ»¯°´¼üÍâÉèGPIO_InitTypeDef key_initstruct;//³õʼ»¯Ê±ÖRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);key_initstruct.GPIO_Pin=GPIO_Pin_0;key_initstruct.GPIO_Mode=GPIO_Mode_IPU;GPIO_Init(GPIOA, &key_initstruct);key_initstruct.GPIO_Pin=GPIO_Pin_13;key_initstruct.GPIO_Mode=GPIO_Mode_IPU;GPIO_Init(GPIOC, &key_initstruct);}

main.c

#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"
#include "key.h"int  main()
{LED_Init();Key_Init();GPIO_SetBits(GPIOA,GPIO_Pin_1);while(1){if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1){					GPIO_ResetBits(GPIOA,GPIO_Pin_1);}if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)==1){					GPIO_ResetBits(GPIOA,GPIO_Pin_1);}}}

6 继电器

6.1.继电器的工作原理


继电器是一个电控开关,工作原理基于电磁感应,继电器包括一个电磁线圈和一组触点。常用于控制高电流或高电压的电路,例如自动控制原理,电力系统和自动化设备中,由于可靠性和电气隔离的特性可以实现小电流实现大电流,继电器在各种应用中都有广泛的用途。

6.2.继电器的引脚说明


1.VCC(+):供电正极,连接此引脚到电源,以提供继电器所需的电流
2.GND(-):地,连接此引脚到电源的负极或者地。
3.IN:控制输入信号,通常用于连接控制信号,当该信号变化,继电器切换状态。
4.COM(common):公共端,通常是中间的触点,与常开或常闭触点相连。
5.NO(Normally Open):常开接口,继电器吸合前悬空,吸合后于COM连接.6.NC(Normally Closed):常闭接口,继电器吸合前与COM连接,吸合后悬空

 

6.3.单片机控制继电器软件开发流程

初始化系统
        初始化继电器IN引脚对应的GPIO外设时钟
        初始化继电器IN的引脚

输出电平控制继电器开和关

relay.c文件

#include "stm32f10x.h"
#include "relay.h"void Relay_Init(void)
{GPIO_InitTypeDef GPIO_Initstruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_Initstruct.GPIO_Pin=GPIO_Pin_0;GPIO_Initstruct.GPIO_Speed=GPIO_Speed_10MHz;GPIO_Initstruct.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOA,&GPIO_Initstruct);}

main.c文件

#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"
#include "key.h"
#include "relay.h"void delay(uint16_t time)
{uint16_t i=0;while(time--){i=12000;while(i--);}
}int  main()
{Relay_Init();GPIO_SetBits(GPIOA,GPIO_Pin_0);while(1){delay(1000);GPIO_ResetBits(GPIOA,GPIO_Pin_0);delay(1000);GPIO_SetBits(GPIOA,GPIO_Pin_0);		 }}

7.震动传感器

7.1.震动传感器工作原理

震动传感器黑色震动检测传感器,工作时电源LED灯常量,震动信号检测LED灯发生震动的时候会保持亮的过程。正常工作模块DO口输出高电平震动瞬间D0口输出低电平,用于各种震动触发作用,防盗报警,智能小车,电子积木灯等。

7.2.震动传感器硬件引脚接线


1.VCC:接到板子电源的5V或者3.3V。
2.GND:地,连接到板子电源的负极或者GND。
3.DO: 数字信号输出口,可以与单片机相连检测环境是否发生震动。

7.3.震动传感器控制灯


初始化系统
        初始化震动传感器D0相连的单片机引脚时钟。

        初始化震动传感器DO相连的单片机引脚输入

配置检测震动控制LED灯

shake.c文件

#include "shake.h"
#include "stm32f10x.h"void Shake_Init(void)
{GPIO_InitTypeDef Shake_Initstruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,  ENABLE);Shake_Initstruct.GPIO_Pin=GPIO_Pin_0;Shake_Initstruct.GPIO_Mode=GPIO_Mode_IPD;GPIO_Init(GPIOA,&Shake_Initstruct);}

main.c文件

#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"
#include "key.h"
#include "relay.h"
#include "shake.h"void delay(uint16_t time)
{uint16_t i=0;while(time--){i=12000;while(i--);}
}int  main()
{Led_Init();Shake_Init();GPIO_SetBits(GPIOA,GPIO_Pin_0);while(1){	 if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0){					GPIO_ResetBits(GPIOA,GPIO_Pin_1);delay(1000);GPIO_SetBits(GPIOA,GPIO_Pin_1);delay(1000);}else {GPIO_SetBits(GPIOA,GPIO_Pin_1);}}}

Led_Init同上.

8.433无线模块

1.433M无线模块工作原理


数据发射模块的工作频率为315M,采用声表谐振器SAW稳频,频率稳定度极高,当环境温度在-25~+85度之间变化时,频飘仅为3ppm。接收到信号,接收模块对应针脚输出高电平,有D0 D1D2 D3,可能对应遥控器的A/B/C/D。

2.引脚接线


1.供电正极,连接此引脚到电源,以提供433M无线模块所需的电流                        2.GND(-):地,连接此引脚到电源的负极或者地。
3. D0-D4:连接控制输入信号通常用于连接控制信号,当按键变换控制外设信号


3.433M控制灯软件开发流程


初始化系统
        初始化433M D0-D4引脚对应的GPIO外设时钟
        初始化433M DO-D4引脚配置
433M按键控制外设

yao.c文件

#include "yao.h"
#include "stm32f10x.h"void Yao_Init(void)
{GPIO_InitTypeDef Yao_initstruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);Yao_initstruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_2;Yao_initstruct.GPIO_Mode=GPIO_Mode_IPU;GPIO_Init(GPIOA,&Yao_initstruct);}

main.c文件

#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"
#include "key.h"
#include "relay.h"
#include "yao.h"
#include "Exit.h"int  main()
{LED_Init();Yao_Init();GPIO_SetBits(GPIOA,GPIO_Pin_1);//GPIO_ResetBits(GPIOA,GPIO_Pin_3);while(1){if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1){					GPIO_ResetBits(GPIOA,GPIO_Pin_1);}else if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==1){GPIO_SetBits(GPIOA,GPIO_Pin_1);}}}

http://www.dtcms.com/a/457252.html

相关文章:

  • bind,apply,call
  • 最新ECCV最新大感受野的小波卷积
  • 小迪web自用笔记59
  • Docker 容器核心知识总结
  • GIS+VR地理信息虚拟现实XR MR AR
  • K8s学习笔记(十四) DaemonSet
  • 视频网站建设应该注意什么北京建设网点地址查询
  • 面试技术栈 —— 简历篇
  • Python闭包内变量访问详解:从原理到高级实践
  • DNS隧道技术:隐秘通信的“毛细血管”通道
  • MySQL 性能监控与安全管理完全指南
  • 【Linux】进程控制(上)
  • 湖北省建设网站wordpress商务套餐
  • 网站建设推广的软文邢台建站企业邮箱
  • C++11并发支持库
  • 广东省省考备考(第一百一十八天10.8)——言语、资料分析、数量关系(强化训练)
  • 临沂网站制作页面如何查一个网站有没有做外链
  • 基于websocket的多用户网页五子棋(八)
  • Elastic 被评为 IDC MarketScape《2025 年全球扩展检测与响应软件供应商评估》中的领导者
  • 如何利用Python呼叫nexxim.exe执行电路模拟
  • APM学习(3):ArduPilot飞行模式
  • h5制作开发价目表常用seo站长工具
  • 忻州建设公司网站他达那非副作用太强了
  • pytest详细教程
  • 订单超时方案的选择
  • Redis 集群故障转移
  • 虚拟专用网络
  • 网站制作公司网站建设网站膳食管理东莞网站建设
  • Linux小课堂: 从零到上手的指南
  • DrissionPage防检测