新建工程文件
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"

5986

被折叠的 条评论
为什么被折叠?



