STM32-1-工程文件与GPIO

新建工程文件

        1.Start文件夹

        放入如下.c与.h文件及相关startup文件,按照芯片类型选择,江协科技套件所用单片机对应md.s后缀的startup文件

        2.Library文件夹

        存放标准库函数

        3.System文件夹

        存放其他函数库,如Delay函数

        4.User文件夹

        存放main.c文件与相关头文件

        5.Hardware文件夹

        存放自己模块化编程的相关函数

        6.添加文件夹及其他设置

        在工程内添加上述文件夹,并且开头定义USE_STDPERIPH_DRIVER,Debug处按自己的调试器选择,并勾选复位执行reset and run

GPIO使用

        初始化(xxx_Init)

        初始化函数(xxx_Init)格式如下

void xxx_Init(void)

{

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//开启连接引脚对应时钟,GPIOA或B

        GPIO_InitTypeDef GPIO_InitStructure;//定义一个结构体,一般取GPIO_InitStructure,含mode,pin,speed三个成员
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//Mode八种模式见下方
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;//连接的引脚数字
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//输入无影响,控制输出速度,一般选50MHz
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化定义结构体对应引脚


        //GPIO_SetBits(GPIOA, GPIO_Pin_0 | GPIO_Pin_1);初始化为关闭,高电平对应关闭,LED,蜂鸣器等常态下应关闭的器件需要添加这一行代码

}

GPIO_Mode种类

1) GPIO_Mode_AIN 模拟输入;
2) GPIO_Mode_IN_FLOATING 浮空输入;
3) GPIO_Mode_IPD 下拉输入;
4) GPIO_Mode_IPU 上拉输入;
5) GPIO_Mode_Out_OD 开漏输出;
6) GPIO_Mode_Out_PP 推挽输出;
7) GPIO_Mode_AF_OD 复用开漏输出;
8) GPIO_Mode_AF_PP 复用推挽输出。

        控制输出开关

控制输出开关常用以下三个函数:

1)GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin),输出高电平

引脚对应的GPIOA/B+引脚对应数字

2)GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin),输出低电平

引脚对应的GPIOA/B+引脚对应数字

3)GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin,BitActions )

其中

typedef enum {

Bit_RESET = 0,

Bit_SET = 1

} BitAction;

// 输出高,等价 GPIO_SetBits

GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);

// 输出低,等价 GPIO_ResetBits

GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);

        读取输入输出

 读出输入输出常用以下四个函数:

1)GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

引脚对应的GPIOA/B+引脚对应数字

按键需要延迟消抖并检测是否松开 该引脚输入为低电平返回0,高电平返回1

2)GPIO_ReadInputData(GPIO_TypeDef* GPIOx)

入参:GPIOx(GPIOA/GPIOB/GPIOC...)

返回值:uint16_t 16 位无符号整数

bit0 ~ bit15 分别对应 Pin0 ~ Pin15

某 bit=1:该引脚当前为高电平输入

某 bit=0:该引脚当前为低电平输入

3)GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

引脚对应的GPIOA/B+引脚对应数字

该引脚输出低电平返回0,高电平返回1

4)GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)

入参:GPIOx(GPIOA/GPIOB/GPIOC...)

返回值:uint16_t 16 位无符号整数

bit0 ~ bit15 分别对应 Pin0 ~ Pin15

某 bit=1:该引脚当前为高电平输出

某 bit=0:该引脚当前为低电平输出

封装函数

   

在.c文件里写完函数后要在.h文件里面封装,格式为:

#ifndef __XXX_H

#define __XXX_H

函数1;

函数2;

……

#endif

然后记得在main.c中引用

#include "XXX.h"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值