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

群名: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结构图

LED灯引脚图:

代码实现:

//构建项目前面学习篇已经讲过,不懂可以查看前面学习#include "stm32f4xx.h"//******LED***********/
void LED_Init()
{GPIO_InitTypeDef GPIO_InitStruct;//1.¿ªÆôʱÖÓRCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_GPIOE,ENABLE);//2.³õʼ»¯GPIOGPIO_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单片机GPIO学习相关推荐

  1. STM32单片机入门学习(小菜鸟一枚,仅为记录个人学习)

    学习STM32之前,先了解什么是单片机,以及它的组成. 单片机的基本组成 一.单片机介绍 1.什么是单片机? 将组成微型计算机的各功能部件:中央处理器.存储器.I/O接口电路及定时/计数器等制作在一块 ...

  2. STM32单片机入门学习笔记——定时器TIM第一部分

    笔记整理自B站UP主江科大自化协教程<STM32入门教程-2023持续更新中>,所用单片机也为教程推荐单片机. 大致内容 第一部分:定时器基本定时的功能,定时器每隔这个时间产生一个中断,来 ...

  3. STM32单片机入门学习笔记——定时器TIM第三部分

    笔记整理自B站UP主江科大自化协教程<STM32入门教程-2023持续更新中>,所用单片机也为教程推荐单片机. 大致内容 第一部分:定时器基本定时的功能,定时器每隔这个时间产生一个中断,来 ...

  4. 【STM32单片机入门】学习资源推荐,学习经验分享

    注:本文只是面对萌新的,单纯地学习资源的推荐,没有任何技术上的指导和交流.文章写得很烂,请大佬们不要喷 [/卑微] . 第一次写文章,写得不是很好,见谅.这里呢只是面对与刚刚入坑的新手,也只是依据我个 ...

  5. STM32单片机点亮流水灯

    STM32单片机GPIO口点亮流水灯 任何一个单片机,最简单的外设莫过于 IO 口的高低电平控制了,本文将通过一个经典的流水灯程序,了解 STM32F1 的 IO 口作为输出LED:DS0 和 DS1 ...

  6. 基于STM32单片机流水灯仿真与程序设计

    STM32单片机流水灯仿真与程序设计 摘要 本次程序设计和仿真是基于Proteus和keil的环境对STM32F103系列单片机进行流水灯设计,通过配置STM32的GPIO工作模式,实现LED的点亮和 ...

  7. keil 4c语言读写寄存器,【STM32单片机学习】第四课:GPIO控制LED(用寄存器编程)

    [朱老师课程总结] 第一部分.章节目录 第二部分.章节介绍 3.5.1.STM32的GPIO模块数据手册详解1 本节讲解STM32数据手册中GPIO模块相关的部分,主要是GPIO的各类模式及其配置方法 ...

  8. stm32单片机实现多个闹钟_如何学习单片机:单片机都是相通的,一通百通

    单片机是一种可编程的器件,现在所见到的电子产品中几乎都是以单片机为核心的,根据不同的功能需求,搭建不同的电路,从8位的单片机到32位的单片机,甚至比较高大上的ARM和DSP都可以看成是高级一点的单片机 ...

  9. 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础

    上篇文章 单片机入门学习四 STM32单片机学习一 跑马灯程序和创建工程 仅介绍了入门程序及其编译运行过程,下面开始对stm32的一些基础知识做一个记录. 1.stm32f103zet6(上篇问题3 ...

最新文章

  1. 思科透露其“星舰”计划 旨在主导云服务器自动化领域
  2. 加入微信洗稿投诉小组1个月后,有三说说为什么坚持只发原创
  3. 游戏安全有多重要?——GAME-TECH游戏开发者技术沙龙
  4. java SpringMVC mybatis 多数据源 代码生成器 SSM java redis shiro ehcache
  5. silverlight中如何方便在多个场景即Xaml文件之间随意切换?
  6. 拆解苹果iPhone11
  7. oraclenbsp;一个稍微大点数据库
  8. netbeans连接数据库_NetBeans Java EE技巧3:数据库中的RESTful Web服务
  9. 2017.10.15 旅行comf 失败总结
  10. ospf 指定dr_OSPF的基本配置及DR /BDR选举的实验
  11. 如何使用krpano全景资源下载器来下载720yun的全景图
  12. QCOM和其他常见芯片平台术语缩写
  13. ps计算机图片素材,电脑ps怎么把图片变清晰(手把手教你修图)
  14. Python读取PPT,PPT PPTX PPTM PPS PPSM PPSX
  15. 进制之间的转换(计算机系统基础)
  16. linux 桌面 v2ex,程序员:他人笑我桌面太凌乱,我笑他人看不穿
  17. 解决mac BigSur外接显示器发白、发黄、字体发虚 (OpenCore关闭SIP和Read-Only System)
  18. mysqldump -u root -p a E:\a\a.txt; 找不到错误了
  19. Java安全(十三) SSM-Spring框架
  20. LiveNVR传统IP摄像机接入-网页直播实现跨域鉴权

热门文章

  1. 设计模式:(装饰模式)
  2. 多商户商城小程序源码开发需具备哪些功能?
  3. 道路工程竣工技术资料管理软件
  4. 学习路线图必不可少,使用指南
  5. AutoCAD中块与块参照的关系。
  6. Android:设置头像
  7. python爬虫练习3:通过python爬取二手房源信息
  8. markdown竖式计算
  9. 推荐一波书单(多阅读,多思考,就会留住好奇心)
  10. ThinkPHP6+querylist 实战开发