GPIO输出

可容忍5V:即输入为5V时,单片机将输入仍视为高电平

通过总线对寄存器进行数据操作,然后输出数据通过驱动器增强驱动能力,最后输出到PA0-PA15这16个引脚。

保护二极管:I/O引脚电压大于Vdd时,二极管导通,电流流向Vdd而不是流入单片机内部。I/O引脚电压小于-Vss时,二极管导通,电流由Vss流出到引脚,而不会从单片机内部汲取电流。只有当引脚电压处于Vss~Vdd时,两个二极管都不导通,电流才会流入单片机。

上拉下拉电阻:给程序提供默认输入电平。通过程序配置两个开关的的闭合,可配置成上拉输入模式,下拉输入模式,浮空输入模式。上拉:输入默认高电平。下拉:输入默认低电平。浮空:输入电平不稳定(慎重)。

TTL施密特触发器:对输入进行波形整形,将模拟量转为数字量。也可以不通过触发器直接作为模拟量输入。

输出控制:片上外设通过输出寄存器控制输出数据完成对输出模式的配置,可配置为推挽(高低电平),开漏,和关闭模式。

LED闪烁

#include "stm32f10x.h"                  // Device header
#include"Delay.h"

int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//设置GPIOA外设的时钟
	GPIO_InitTypeDef GPIO_InitStructure;//定义初始化结构体参数
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//设置引脚输出模式为推挽输出
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;//打开0号引脚输出
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//设置引脚翻转速度
	GPIO_Init(GPIOA,&GPIO_InitStructure);//读取结构体参数,将数据写入内部寄存器
	
	while(1)
	{
		GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET );
		Delay_ms(500);
		GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET );
		Delay_ms(500);
	}
}

LED流水灯

#include "stm32f10x.h"                  // Device header
#include"Delay.h"

int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//设置GPIOA外设的时钟
	GPIO_InitTypeDef GPIO_InitStructure;//设置结构体变量
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//一般输出用推挽输出即可
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;//输出设置为所有引脚
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);//读取结构体参数,进行初始化
	
	while(1)
	{
		
		for(i=0;i<8;i++)
		{
			GPIO_Write(GPIOA ,~0x0001);
			Delay_ms (100);
			GPIO_Write(GPIOA ,~0x0002);
			Delay_ms (100);
			GPIO_Write(GPIOA ,~0x0004);
			Delay_ms (100);
			GPIO_Write(GPIOA ,~0x0008);
			Delay_ms (100);
			GPIO_Write(GPIOA ,~0x0010);
			Delay_ms (100);
			GPIO_Write(GPIOA ,~0x0020);
			Delay_ms (100);
			GPIO_Write(GPIOA ,~0x0040);
			Delay_ms (100);
			GPIO_Write(GPIOA ,~0x0080);
			Delay_ms (100);
		}
		
	}
}

蜂鸣器

#include "stm32f10x.h"                  // Device header
#include"Delay.h"

int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//设置GPIOA外设的时钟
	GPIO_InitTypeDef GPIO_InitStructure;//设置结构体变量
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//一般输出用推挽输出即可
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2 ;//输出设置为所有引脚
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);//读取结构体参数,进行初始化
	
	while(1)
	{
		 GPIO_SetBits(GPIOA ,GPIO_Pin_2);//高电平
		 Delay_ms(500);//延时
		 GPIO_ResetBits(GPIOA ,GPIO_Pin_2);//低电平发出声音
		 Delay_ms(500);//延时
		
	}
}

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值