【江科大STM32单片机】day1点亮LED灯流水灯蜂鸣器

知识点

推挽模式:高-》低、低-》高电平都能驱动
开漏模式:只能低-》高电平能驱动,高电平相当于高阻态
GPIO_WriteBit 操作单个
GPIO_ResetBits 操作同组

3-2 led闪烁

配置相关驱动

USE_STDPERIPH_DRIVER
在这里插入图片描述

配置输出文件格式+debug配置slink+勾选闪存自动复位

在这里插入图片描述
在这里插入图片描述

添加批处理

点灯三个步骤

第一步使用RCC开启 GPIO的时钟
第二步使用GPIO_init函数初始化GPIO
第三步使用输入或者输出的函数控制GPIO口

使用APB2设备2控制各种GPIO外设

在这里插入图片描述

在这里插入图片描述

实验结果

运行备注灯泡结果
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;开启推挽模式低-》高正常
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;开启推挽模式小灯泡改为高电平转低电平不亮
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;开启开漏模式小灯泡改为高电平转低电平不亮
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;开启开漏模式低-》高正常
#include "stm32f10x.h" // Device header
#include "delay.h"
int main(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽模式 0x10,最大输出速度为2MHz
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;         //使用GPIOA外设0号引脚 ((uint16_t)0x0001)
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度为50MHz
/**
*
*给GPIO配置结构体,初始化GPIO对象 给
*&GPIO_InitStructure 取地址
*
*/
	GPIO_Init(GPIOA,&GPIO_InitStructure); //给GPIO配置结构体,初始化GPIO对象 给
	
	
	while(1)
	{
		GPIO_ResetBits(GPIOA,GPIO_Pin_0);
		
		Delay_ms(500);
		GPIO_ResetBits(GPIOA,GPIO_Pin_0);
		Delay_ms(500);
		
		GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);
		
		Delay_ms(500);
		GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);
		Delay_ms(500);
		
		GPIO_WriteBit(GPIOA,GPIO_Pin_0, (BitAction)0);
		Delay_ms(500);

		GPIO_WriteBit(GPIOA,GPIO_Pin_0, (BitAction)1);
		Delay_ms(500);

	}
	
}

3-3流水灯

#include "stm32f10x.h" // Device header
#include "delay.h"
int main(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽模式 0x10,最大输出速度为2MHz
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;         //使用GPIOA所有引脚 
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度为50MHz
/**
*
*给GPIO配置结构体,初始化GPIO对象 给
*&GPIO_InitStructure 取地址
*
*/
	GPIO_Init(GPIOA,&GPIO_InitStructure); //给GPIO配置结构体,初始化GPIO对象 给
	
	
	while(1)
	{
		

		GPIO_Write(GPIOA,~0x0001);//0000 0000 0000 0001
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0002);//0000 0000 0000 0010
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0004);//0000 0000 0000 0100
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0008);//0000 0000 0000 1000
		Delay_ms(500);
		
		
		GPIO_Write(GPIOA,~0x0010);//0000 0000 0001 0000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0020);//0000 0000 0010 0000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0040);//0000 0000 0100 0000
		Delay_ms(500);
		GPIO_Write(GPIOA,~0x0080);//0000 0000 1000 0000
		Delay_ms(500);


	}
	
}

3-3蜂鸣器

#include "stm32f10x.h" // Device header
#include "delay.h"
int main(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//RCC_APB2Periph_GPIOB
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽模式 0x10,最大输出速度为2MHz
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;         //使用GPIOA12引脚 
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度为50MHz
/**
*
*给GPIOB配置结构体,初始化GPIO对象 给
*&GPIO_InitStructure 取地址
*
*/
	GPIO_Init(GPIOB,&GPIO_InitStructure); //给GPIOB配置结构体,初始化GPIO对象 给
	
	
	while(1)
	{
		

		GPIO_ResetBits(GPIOB,GPIO_Pin_12);//
		Delay_ms(100);
		GPIO_SetBits(GPIOB,GPIO_Pin_12);//		
		Delay_ms(100);
	}
	
}

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值