1简单的输出模式

 GPIO:

  • GPIO(General Purpose Input Output)通用输入输出口,可配置为8种输入输出模式
  • 引脚电平:0V~3.3V,部分引脚可容忍5V
  • 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等
  • 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等

 

 

1.1 点亮一个LED

接线图:

 低电平点亮

主函数:

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

int main()
{
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    
    GPIO_InitTypeDef GPIO_InitLED;
    GPIO_InitLED.GPIO_Mode=GPIO_Mode_Out_PP;
    GPIO_InitLED.GPIO_Pin=GPIO_Pin_0;
    GPIO_InitLED.GPIO_Speed=GPIO_Speed_50MHz;
    
    GPIO_Init(GPIOA,&GPIO_InitLED);
    GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);

        while(1)
        {
            GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);
            Delay_ms(500);
            GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);
            Delay_ms(500);
        }
}

备注: 

  1. RCC_APB2PeriphClockCmd:打开GPIOA的时钟
  2. GPIO_InitTypeDef:宏定义的GPIO_Init结构体
  3. GPIO_InitLED.GPIO_Mode=GPIO_Mode_Out_PP:
        输出模式推挽输出
    GPIO_InitLED.GPIO_Pin=GPIO_Pin_0:
        开启引脚A0
    GPIO_InitLED.GPIO_Speed=GPIO_Speed_50MHz:
        速度50MHz
  4. GPIO_Init:初始化
  5. GPIO_WriteBit:对单个IO口置0或1,Bit_SET即高电平
    GPIO_SetBits:对多个IO口置0或1

1.2流水灯 

接线图类似,3个LED分别接A0、A1、A6

主函数:

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

int main()
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitLED;
	GPIO_InitLED.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitLED.GPIO_Pin=GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_6;
	GPIO_InitLED.GPIO_Speed=GPIO_Speed_50MHz;
	
	GPIO_Init(GPIOA,&GPIO_InitLED);
	GPIO_Write(GPIOA,0xffff);

		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,~0x0040);//0000 0000 0100 0000
			Delay_ms(500);
		}
}

 库函数配置寄存器采用枚举enum方式,所以可以用 | 设置IO口

1.3蜂鸣器

原理

低电平点亮

接线图

 主函数

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

int main()
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitBuzzer;
	GPIO_InitBuzzer.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitBuzzer.GPIO_Pin=GPIO_Pin_12;
	GPIO_InitBuzzer.GPIO_Speed=GPIO_Speed_50MHz;
	
	GPIO_Init(GPIOB,&GPIO_InitBuzzer);

		while(1)
		{
			GPIO_ResetBits(GPIOB,GPIO_Pin_12);
			Delay_s(1);
			GPIO_SetBits(GPIOB,GPIO_Pin_12);
			Delay_s(3);
		}
}


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值