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结构图
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学习相关推荐
- STM32单片机入门学习(小菜鸟一枚,仅为记录个人学习)
学习STM32之前,先了解什么是单片机,以及它的组成. 单片机的基本组成 一.单片机介绍 1.什么是单片机? 将组成微型计算机的各功能部件:中央处理器.存储器.I/O接口电路及定时/计数器等制作在一块 ...
- STM32单片机入门学习笔记——定时器TIM第一部分
笔记整理自B站UP主江科大自化协教程<STM32入门教程-2023持续更新中>,所用单片机也为教程推荐单片机. 大致内容 第一部分:定时器基本定时的功能,定时器每隔这个时间产生一个中断,来 ...
- STM32单片机入门学习笔记——定时器TIM第三部分
笔记整理自B站UP主江科大自化协教程<STM32入门教程-2023持续更新中>,所用单片机也为教程推荐单片机. 大致内容 第一部分:定时器基本定时的功能,定时器每隔这个时间产生一个中断,来 ...
- 【STM32单片机入门】学习资源推荐,学习经验分享
注:本文只是面对萌新的,单纯地学习资源的推荐,没有任何技术上的指导和交流.文章写得很烂,请大佬们不要喷 [/卑微] . 第一次写文章,写得不是很好,见谅.这里呢只是面对与刚刚入坑的新手,也只是依据我个 ...
- STM32单片机点亮流水灯
STM32单片机GPIO口点亮流水灯 任何一个单片机,最简单的外设莫过于 IO 口的高低电平控制了,本文将通过一个经典的流水灯程序,了解 STM32F1 的 IO 口作为输出LED:DS0 和 DS1 ...
- 基于STM32单片机流水灯仿真与程序设计
STM32单片机流水灯仿真与程序设计 摘要 本次程序设计和仿真是基于Proteus和keil的环境对STM32F103系列单片机进行流水灯设计,通过配置STM32的GPIO工作模式,实现LED的点亮和 ...
- keil 4c语言读写寄存器,【STM32单片机学习】第四课:GPIO控制LED(用寄存器编程)
[朱老师课程总结] 第一部分.章节目录 第二部分.章节介绍 3.5.1.STM32的GPIO模块数据手册详解1 本节讲解STM32数据手册中GPIO模块相关的部分,主要是GPIO的各类模式及其配置方法 ...
- stm32单片机实现多个闹钟_如何学习单片机:单片机都是相通的,一通百通
单片机是一种可编程的器件,现在所见到的电子产品中几乎都是以单片机为核心的,根据不同的功能需求,搭建不同的电路,从8位的单片机到32位的单片机,甚至比较高大上的ARM和DSP都可以看成是高级一点的单片机 ...
- 单片机入门学习五 STM32单片机学习二 跑马灯程序衍生出的stm32编程基础
上篇文章 单片机入门学习四 STM32单片机学习一 跑马灯程序和创建工程 仅介绍了入门程序及其编译运行过程,下面开始对stm32的一些基础知识做一个记录. 1.stm32f103zet6(上篇问题3 ...
最新文章
- 思科透露其“星舰”计划 旨在主导云服务器自动化领域
- 加入微信洗稿投诉小组1个月后,有三说说为什么坚持只发原创
- 游戏安全有多重要?——GAME-TECH游戏开发者技术沙龙
- java SpringMVC mybatis 多数据源 代码生成器 SSM java redis shiro ehcache
- silverlight中如何方便在多个场景即Xaml文件之间随意切换?
- 拆解苹果iPhone11
- oraclenbsp;一个稍微大点数据库
- netbeans连接数据库_NetBeans Java EE技巧3:数据库中的RESTful Web服务
- 2017.10.15 旅行comf 失败总结
- ospf 指定dr_OSPF的基本配置及DR /BDR选举的实验
- 如何使用krpano全景资源下载器来下载720yun的全景图
- QCOM和其他常见芯片平台术语缩写
- ps计算机图片素材,电脑ps怎么把图片变清晰(手把手教你修图)
- Python读取PPT,PPT PPTX PPTM PPS PPSM PPSX
- 进制之间的转换(计算机系统基础)
- linux 桌面 v2ex,程序员:他人笑我桌面太凌乱,我笑他人看不穿
- 解决mac BigSur外接显示器发白、发黄、字体发虚 (OpenCore关闭SIP和Read-Only System)
- mysqldump -u root -p a E:\a\a.txt; 找不到错误了
- Java安全(十三) SSM-Spring框架
- LiveNVR传统IP摄像机接入-网页直播实现跨域鉴权