STM32单片机GPIO学习

问题咨询及项目源码下载请加群:

群名:IT项目交流群

群号:245022761

 

 

STM32学习篇2: GPIO引脚的控制

============stm32  GPIO========
GPIO 7组   A组 ---G 组
每一组都有16个引脚  PX0-PX15
对应的库文件:stm32f4xx_gpio.c

思路
=================
1.分析硬件电路
2.选择对应操作函数
3.建立工程写代码
4.编译并且下载执行

LED
==================
1.分析硬件电路 (day02/LED.png)

2.选择库函数   GPIO
   库函数操作三部曲
   1.配置时钟 RCC_AHB1PeriphClockCmd
   void RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState)
   参数1:uint32_t RCC_AHB1Periph  GPIO的组别
         RCC_AHB1Periph_GPIOA -RCC_AHB1Periph_GPIOG
   参数2:FunctionalState NewState  使用权限
          ENABLE 启动使能 DISABLE 关闭使能
   
   2.初始化GPIO  GPIO_Init
   void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
   参数1:GPIO_TypeDef* GPIOx   组别
          GPIOA ---GPIOG
   参数2:GPIO_InitTypeDef* GPIO_InitStruct
         typedef struct
        {
          uint32_t GPIO_Pin;              /*!< 引脚号 */
          GPIOMode_TypeDef GPIO_Mode;     /*!< 选择模式*/
          GPIOSpeed_TypeDef GPIO_Speed;   /*!< 输出速度*/
          GPIOOType_TypeDef GPIO_OType;   /*!< 类型*/
          GPIOPuPd_TypeDef GPIO_PuPd;     /*!< 上拉和下拉 */
        }GPIO_InitTypeDef;
        
        1.
        /** @defgroup GPIO_pins_define 
          * @{
          */ 
        #define GPIO_Pin_0                 ((uint16_t)0x0001)  /* Pin 0 selected */
        #define GPIO_Pin_1                 ((uint16_t)0x0002)  /* Pin 1 selected */
        #define GPIO_Pin_2                 ((uint16_t)0x0004)  /* Pin 2 selected */
        #define GPIO_Pin_3                 ((uint16_t)0x0008)  /* Pin 3 selected */
        #define GPIO_Pin_4                 ((uint16_t)0x0010)  /* Pin 4 selected */
        #define GPIO_Pin_5                 ((uint16_t)0x0020)  /* Pin 5 selected */
        #define GPIO_Pin_6                 ((uint16_t)0x0040)  /* Pin 6 selected */
        #define GPIO_Pin_7                 ((uint16_t)0x0080)  /* Pin 7 selected */
        #define GPIO_Pin_8                 ((uint16_t)0x0100)  /* Pin 8 selected */
        #define GPIO_Pin_9                 ((uint16_t)0x0200)  /* Pin 9 selected */
        #define GPIO_Pin_10                ((uint16_t)0x0400)  /* Pin 10 selected */
        #define GPIO_Pin_11                ((uint16_t)0x0800)  /* Pin 11 selected */
        #define GPIO_Pin_12                ((uint16_t)0x1000)  /* Pin 12 selected */
        #define GPIO_Pin_13                ((uint16_t)0x2000)  /* Pin 13 selected */
        #define GPIO_Pin_14                ((uint16_t)0x4000)  /* Pin 14 selected */
        #define GPIO_Pin_15                ((uint16_t)0x8000)  /* Pin 15 selected */
        #define GPIO_Pin_All               ((uint16_t)0xFFFF)  /* All pins selected */
   
        2.
        /** 
          * @brief  GPIO Configuration Mode enumeration 
          */   
        typedef enum
        { 
          GPIO_Mode_IN   = 0x00, /*!< 输入模式 */
          GPIO_Mode_OUT  = 0x01, /*!< 输出模式 */
          GPIO_Mode_AF   = 0x02, /*!< 复用模式 */
          GPIO_Mode_AN   = 0x03  /*!< 模拟模式 */
        }GPIOMode_TypeDef;
       
        3.
        /** 
          * @brief  GPIO Output Maximum frequency enumeration 
          */  
        typedef enum
        { 
          GPIO_Low_Speed     = 0x00, /*!< Low speed    */
          GPIO_Medium_Speed  = 0x01, /*!< Medium speed */
          GPIO_Fast_Speed    = 0x02, /*!< Fast speed   */
          GPIO_High_Speed    = 0x03  /*!< High speed   */
        }GPIOSpeed_TypeDef;
        
        #define  GPIO_Speed_2MHz    GPIO_Low_Speed    
        #define  GPIO_Speed_25MHz   GPIO_Medium_Speed 
        #define  GPIO_Speed_50MHz   GPIO_Fast_Speed 
        #define  GPIO_Speed_100MHz  GPIO_High_Speed  
   
        4.
        /** 
          * @brief  GPIO Output type enumeration 
          */  
        typedef enum
        { 
          GPIO_OType_PP = 0x00,  推挽  驱动外部电路(输出电流大)  三极管
          GPIO_OType_OD = 0x01   开漏  外部电流输入(灌电流)    二极管
        }GPIOOType_TypeDef;
        
        5.
        /** 
          * @brief  GPIO Configuration PullUp PullDown enumeration 
          */ 
        typedef enum
        { 
          GPIO_PuPd_NOPULL = 0x00,   浮空
          GPIO_PuPd_UP     = 0x01,   上拉
          GPIO_PuPd_DOWN   = 0x02    下拉
        }GPIOPuPd_TypeDef;
        
   3.配置高低电平
    高电平: GPIO_SetBits
    void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
         参数1:GPIO_TypeDef* GPIOx  组别
             GPIOA ---GPIOG
         参数2: uint16_t GPIO_Pin   引脚号
             GPIO_Pin_x where x can be (0..15).         
    
    低电平: GPIO_ResetBits
    void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
         参数1:GPIO_TypeDef* GPIOx  组别
             GPIOA ---GPIOG
         参数2: uint16_t GPIO_Pin   引脚号
             GPIO_Pin_x where x can be (0..15)

=====================下载==============
1.安装驱动
   a.在“软件类\STM32开发资料\开发环境\J-Link驱动.rar”
     先解压“J-Link驱动.rar”,然后安装Setup_JLinkARM_V412.exe
   b.以管理员的身份安装“Setup_JLinkARM_V412.exe”
   c.配置J_LINK  在Keil ppt p38-》p42
   d.链接J_LINK  day02/j_link.png
   e.右击计算机----》管理-----》设备管理
      -----》串行总线-----》J_LINK diver

2.下载

练习:找出剩下的三个灯, 实现:流水灯+跑马灯

   LED0   PF9
   LED1   PF10
   LED2   PE13
   LED3   PE14


学习思路参考图:

1.32结构图

 

STM32单片机GPIO学习_第1张图片

LED灯引脚图:

STM32单片机GPIO学习_第2张图片

代码实现:

//构建项目前面学习篇已经讲过,不懂可以查看前面学习

#include "stm32f4xx.h"

//******LED***********/
void LED_Init()
{
	GPIO_InitTypeDef GPIO_InitStruct;
	//1.¿ªÆôʱÖÓ
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_GPIOE,ENABLE);
	
	//2.³õʼ»¯GPIO
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9 | GPIO_Pin_10;//9£¬10ºÅÒý½Å
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_OUT;//Êä³öģʽ
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_100MHz;//Êä³öËÙ¶È
	GPIO_InitStruct.GPIO_OType=GPIO_OType_OD;//¿ªÂ©±£»¤
	GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;//ÉÏÀ­µç×è
	GPIO_Init(GPIOF,&GPIO_InitStruct);
	
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_13 | GPIO_Pin_14;//13£¬14ºÅÒý½Å
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_OUT;//Êä³öģʽ
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_100MHz;//Êä³öËÙ¶È
	GPIO_InitStruct.GPIO_OType=GPIO_OType_OD;//¿ªÂ©±£»¤
	GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;//ÉÏÀ­µç×è
	GPIO_Init(GPIOE,&GPIO_InitStruct);
}

//´ÖÑÓʱ
void delay(int n)
{
	int m=1000000;
	for(;n>0;n--)
	   for(;m>0;m--)
	     ;
}

int main(void)
{
	LED_Init();
	
	while(1)
	{
		GPIO_ResetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
		delay(10000);
		GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
		delay(10000);
	  GPIO_ResetBits(GPIOE,GPIO_Pin_13|GPIO_Pin_14);
		delay(10000);
		GPIO_SetBits(GPIOE,GPIO_Pin_13|GPIO_Pin_14);
		delay(10000);
	}
	//return 0;
}

1.51单片机学习整理

 

基于51单片机的智能光控路灯 :https://download.csdn.net/download/qq_37037348/11071869

基于51单片机超声波测距(内含源程序,原理图及PCB源文件):https://download.csdn.net/download/qq_37037348/11071866

 

 

基于51单片机的智能安防报警系统:https://download.csdn.net/download/qq_37037348/11071865

 

基于51单片机模块化编程模块 (红外、液晶显示屏、温湿度等传感器模块化)

:https://download.csdn.net/download/qq_37037348/11053222

 

基于51单片机pwm控制的呼吸灯程序

https://download.csdn.net/download/qq_37037348/11053195

 

51单片机与上位机串口通信实例包含详细讲解的完整代码

https://download.csdn.net/download/qq_37037348/11053164

 

 

基于51单片机的直交流电压表仿真 (详细代码实现,设计讲解)

https://download.csdn.net/download/qq_37037348/11053145

 

 

 

基于51单片机胸牌 详细代码实现,设计讲解)

https://download.csdn.net/download/qq_37037348/11053125

 

基于51单片机3x4按键拨号 (详细代码实现,设计讲解)

https://download.csdn.net/download/qq_37037348/11053093

 

 

基于51单片机拨号 (详细代码实现,设计讲解)

 

https://download.csdn.net/download/qq_37037348/11053090

 

 

基于51单片机警灯系统设计(详细代码实现,设计讲解)

https://download.csdn.net/download/qq_37037348/11053086

 

 

基于51单片机点亮一个小灯(详细代码实现,设计讲解,学习51基础实验)

https://download.csdn.net/download/qq_37037348/11053084

 

基于51单片机开发的排球计时器,附有详细注释讲解,为大家提供最真心的帮助

https://download.csdn.net/download/qq_37037348/11053024

 

 

基于51单片机的音乐播放器,源码详细注释

https://download.csdn.net/download/qq_37037348/11053022

 

 

 

2.Android 开发学习整理:

 

Android-serialport 手机App串口通信代码实现:

 

https://download.csdn.net/download/qq_37037348/11050521

 

Android-serialport 手机App网络通信实例代码实现:

https://download.csdn.net/download/qq_37037348/11050516

 

Android 第一个App详细教程、基础实验 :

https://download.csdn.net/download/qq_37037348/11050515

 

 

3.计算机视觉(深度学习、神经网络的学习)

 

feature extraction(深度学习,特征提取,神经网络:https://download.csdn.net/download/qq_37037348/11065968

 

feature extraction(深度学习,特征提取,神经网络多种训练模型详细实现):

https://download.csdn.net/download/qq_37037348/11065974

 

 

 

欢迎大家加入学习项目交流,为大家分享各类个人学习项目及学习资料,互相交流互相学习。

你可能感兴趣的:(STM32开发板学习)