问题咨询及项目源码下载请加群:
群名: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.³õʼ»¯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
欢迎大家加入学习项目交流,为大家分享各类个人学习项目及学习资料,互相交流互相学习。