STM32 GPIO使用

STM32  IO端口工作模式

  GPIO_Mode_AIN      模拟输入
  GPIO_Mode_IN_FLOATING    输入浮空
  GPIO_Mode_IPD     输入下拉
  GPIO_Mode_IPU     输入上拉
  GPIO_Mode_Out_OD          开漏输出
  GPIO_Mode_Out_PP           推挽输出
  GPIO_Mode_AF_OD            开漏复用功能
  GPIO_Mode_AF_PP            推挽式复用功能


推挽输出高低电平均有驱动能力

开漏输出高电平相当于高阻态,没有驱动能力,低电平有驱动能力


案例

LED闪烁代码 

#include "stm32f10x.h"
#include "delay.h"


 int main(void)
 {
	 delay_init();
	 
	 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	 
	 GPIO_InitTypeDef GPIO_InitStruct;
	 GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	 GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;
	 GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	 GPIO_Init(GPIOB,&GPIO_InitStruct);
	  
	 while(1)
	 {
		 GPIO_ResetBits(GPIOB,GPIO_Pin_5);
		 delay_ms(500);
		 GPIO_SetBits(GPIOB,GPIO_Pin_5);
		 delay_ms(500);
	 }
 }

LED流水灯代码

#include "stm32f10x.h"
#include "delay.h"

 int main(void)
 {
	 delay_init();
	 
	 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	 
	 GPIO_InitTypeDef GPIO_InitStruct;
	 GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	 GPIO_InitStruct.GPIO_Pin=GPIO_Pin_All;
	 GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	 GPIO_Init(GPIOA,&GPIO_InitStruct);
	 
	 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 0001
		 delay_ms(500);
		 GPIO_Write(GPIOA,~0x0040);//~0000 0000 0100 0001
		 delay_ms(500);
		 GPIO_Write(GPIOA,~0x0080);//~0000 0000 1000 0001
		 delay_ms(500);
	 }
 }

蜂鸣器

#include "stm32f10x.h"
#include "delay.h"

 int main(void)
 {
	 delay_init();
	 
	 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	 
	 GPIO_InitTypeDef GPIO_InitStruct;
	 GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	 GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8;
	 GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	 GPIO_Init(GPIOB,&GPIO_InitStruct);
	  
	 while(1)
	 {
		 GPIO_SetBits(GPIOB,GPIO_Pin_8);
		 delay_ms(500);
		 GPIO_ResetBits(GPIOB,GPIO_Pin_8);
		 delay_ms(500);
	 }
 }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值