目录
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基础知识
1.1系统架构
2. IO八种工作模式

2.1STM32 IO工作模式

2.2GPIO的输出速度
3.固件库实现LED点灯
3.1LED灯
LED灯,是一种能够将电能转化为可见光的半导体期间
3.2.控制LED灯
#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.软件设计流程
#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输入
5.2按键控制LED灯
#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);}}}