ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

STM32四:GPIO

2022-09-10 19:34:03  阅读:159  来源: 互联网

标签:LED1 输出 LEDPORT STM32 Mode GPIO 输入


一.概述

1.GPIO基本概念

  • 通用输入输出端口(general purpose intput output),可以做输入也可以做输出,可通过程序配置成输入或者输出。
  • GPIO具有八种工作模式,四种输入和四种输出
    • 四种输入模式:浮空输入,上拉输入,下拉输入,模拟输入
    • 四种输出模式:开漏输出,推挽输出,开漏复用输出,推挽复用输出

2.GPIO基本结构

3.八种模式概述

二.八种模式详解

1.浮空输入

2.上拉输入

3.下拉输入

4.模拟输入

5.开漏输出

6.开漏复用输出

7.推挽输出

8.推挽复用输出

三.相关寄存器

1.介绍

  • stm32f1系列中以16个IO为一组通过7个寄存器控制
  • 复用功能寄存器

(1)7个寄存器

(2)复用寄存器

2.寄存器地址映射

四.程序

1.点亮LED灯

 1 void LED_Init(void){ //LED灯的接口初始化
 2     GPIO_InitTypeDef  GPIO_InitStructure;     // GPIO初始化结构体
 3     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);    //使能APB2总线的GPIO ABC   
 4     GPIO_InitStructure.GPIO_Pin = LED1 | LED2; //选择端口号(0~15或all)                        
 5     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //选择IO接口工作方式       
 6     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz)    
 7     GPIO_Init(LEDPORT, &GPIO_InitStructure);            
 8 }
 9  
10 /*********************************************************************************************
11  * 杜洋工作室 www.DoYoung.net
12  * 洋桃电子 www.DoYoung.net/YT 
13 *********************************************************************************************/
14 
15 
16 /*
17 选择IO接口工作方式:
18 GPIO_Mode_AIN 模拟输入
19 GPIO_Mode_IN_FLOATING 浮空输入
20 GPIO_Mode_IPD 下拉输入
21 GPIO_Mode_IPU 上拉输入
22 GPIO_Mode_Out_PP 推挽输出
23 GPIO_Mode_Out_OD 开漏输出
24 GPIO_Mode_AF_PP 复用推挽输出
25 GPIO_Mode_AF_OD 复用开漏输出
26 */
 1 int main (void){//主程序
 2     RCC_Configuration(); //时钟设置
 3     LED_Init();
 4     while(1){
 5         
 6         //方法1:
 7         GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1)); //LED1接口输出高电平1
 8         delay_us(50000); //延时1秒
 9         GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0)); //LED1接口输出低电平0
10         delay_us(50000); //延时1秒
11         
12         //方法2:
13 //        GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1-GPIO_ReadOutputDataBit(LEDPORT,LED1))); //取反LED1
14 //        delay_ms(500); //延时1秒
15 
16         //方法3:
17 //        GPIO_SetBits(LEDPORT,LED1); //LED灯都为高电平(1)
18 //        delay_s(1); //延时1秒
19 //        GPIO_ResetBits(LEDPORT,LED1); //LED灯都为低电平(0)
20 //        delay_s(1); //延时1秒
21 
22         //方法4
23 //        GPIO_Write(LEDPORT,0x0001); //直接数值操作将变量值写入LED
24 //        delay_s(2); //延时1秒
25 //        GPIO_Write(LEDPORT,0x0000); //直接数值操作将变量值写入LED
26 //        delay_s(2); //延时1秒
27 
28     }
29 }

 

标签:LED1,输出,LEDPORT,STM32,Mode,GPIO,输入
来源: https://www.cnblogs.com/zhihaospace/p/15873263.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有