GPIO基本操作,如果更换IO口只需要更换端口设置即可


led.h文件

#ifndef __LED_H

#ifndef __LED_H

#define __LED_H

#include "sys.h"

#define LED0_PIN           GPIO_Pin_5

#define LED0_PORT       GPIOB

#define LED1_PIN           GPIO_Pin_5

#define LED1_PORT       GPIOE

#define LED0_ON        GPIO_ResetBits(LED0_PORT,LED0_PIN)  //LED0对应引脚GPIOB.5拉低,亮

#define LED0_OFF      GPIO_SetBits(LED0_PORT,LED0_PIN)  //LED0对应引脚GPIOB.5拉高,灭

#define LED1_ON        GPIO_ResetBits(LED1_PORT,LED1_PIN)  //LED1对应引脚GPIOE.5拉低,亮

#define LED1_OFF      GPIO_SetBits(LED1_PORT,LED1_PIN)   //LED1对应引脚GPIOE.5拉高,灭

void led_init(void);  //初始化led的GPIO端口

#endif


LED.C文件

#include"led.h"

#include"stm32f10x.h"  //只要调用库函数,就需要添加此头文件

void led_init(void)

{

  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能PB,PE端口时钟

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_InitStructure.GPIO_Pin = LED0_PIN;

  GPIO_Init(LED0_PORT, &GPIO_InitStructure);

  GPIO_InitStructure.GPIO_Pin = LED1_PIN;

  GPIO_Init(LED1_PORT, &GPIO_InitStructure);

  LED0_OFF; //端口初始化完成后,关闭两个小灯

  LED1_OFF;

}


main文件

#include "stm32f10x.h"

#include "delay.h"//从跑马灯就需要使用该头文件

#include "led.h"  //跑马灯需要的头文件

int main(void)

{

delay_init();   //初始化延时函数

led_init();         //初始化LED端口

while(1)

{

LED0_OFF;

LED1_ON;

delay_ms(1500);

LED0_ON;

LED1_OFF;

delay_ms(1500);

}

}


这里是库函数底层结构

RCC_APB2PeriphClockCmd():主要是用于打开端口时钟的,主要有2个参数

RCC_APB2Periph_GPIOB;//对用端口需要打开的始终,如果是多个端口,可以使用"  | "或符号一起使用

DISABLE ;     DISABLE;//失能   或者使能

GPIO_InitTypeDef定义的gpio初始化的结构体主要有三个参数

GPIO_Pin; //GPIO的端口号

GPIO_Speed;//GPIO的速度,可选参数为

GPIO_Speed_10MHz = 1,

GPIO_Speed_2MHz,

GPIO_Speed_50MHz;

GPIO_Mode//GPIO的可选模式,可选参数

GPIO_Mode_AIN = 0x0, //模拟输入,主要用于ADC

GPIO_Mode_IN_FLOATING = 0x04,//浮空输入,主要用于按键检测

GPIO_Mode_IPD = 0x28,  //Ï下拉输入

GPIO_Mode_IPU = 0x48,  //上拉输入

GPIO_Mode_Out_OD = 0x14, //开楼输出

GPIO_Mode_Out_PP = 0x10,  //通用推完输出

GPIO_Mode_AF_OD = 0x1C, //复用开漏输出

GPIO_Mode_AF_PP = 0x18  //复用推完输出

(一)stm32f103~~GPIO基本操作一(led灯)的更多相关文章

  1. (二)stm32f103~~GPIO基本操作二(按键)

    GPIO基本配置之按键输入操作(通过按键控制小灯的翻转) KEY0 对用端口PE4,KEY1 对用端口PE3,这两个按键是一段接地,另一端接单片机.KEYWKUP 对用端口PA0,这个按键是一段接高电 ...

  2. CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)

    目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. ...

  3. STM32 基于 CubeMX配置GPIO点亮LED灯(超级详细+图文并茂)

    我是一个只会点灯的菜鸟: 相关文章 [STM32系列汇总]小白博主的STM32实战快速进阶之路(持续更新) 文章目录 相关文章 1 前言 2 理论分析 2.1 LED 原理 2.2 板载资料 2.3 ...

  4. 灵动微电子ARM Cortex M0 MM32F0010 GPIO 的配置驱动LED灯

    灵动微电子ARM Cortex M0 MM32F0010 GPIO的配置 目录: 1.前言 2.学习方法简要说明 3.要点提示 4.注意事项 5.MM32F0010系统时钟的配置 6.MM32F001 ...

  5. 第二章之S5PV210在BL1中点亮LED灯

    1,u-boot中第一个入口在./arch/arm/cpu/armv7/start.S 翻到153行:如下图 前面都是进行一些基本设置,不用管. cpu_init_cp15设置协处理器, cpu_in ...

  6. [蓝点ZigBee] Zstack 之点亮LED灯 ZigBee/CC2530 视频资料

    LED点灯实验,主要是依据Zstack 现有程序修改LED相关驱动,适配到我们自己的开发板上,我们开发板共有4个LED灯,其中一个是电源指示灯,剩余3个都是GPIO控制的LED灯,有LED 灯连接方式 ...

  7. Beaglebone Black–GPIO 高低电平控制 LED 灯

    上一篇,运用 Linux 的 sysfs,控制本机上的 LED 灯,usr0 至 usr3,这次用 GPIO 控制外部的电路,点亮 LED 灯. 这次的全部材料: BBB 一台 购买 BBB 自带的 ...

  8. CC2530学习路线-基础实验-GPIO 控制LED灯亮灭(1)

    目录 1.前期预备知识 1.1 新大陆ZigBee模块LED灯电路 1.2 CC2530相关寄存器 1.3 寄存器操作技巧 1.4 CPU空转延时 1.4 操作流程图 2.程序代码 The End 1 ...

  9. 树莓派GPIO控制RGB彩色LED灯

    树莓派GPIO通过PWM来控制RGB彩色LED灯,可以显示任何我们想要的颜色. RGB模块简介 这个RGB彩色LED里其实有3个灯,分别是红灯.绿灯和蓝灯.控制这三个灯分别发出不同强度的光,混合起来就 ...

随机推荐

  1. 080、Weave Scope 容器地图(2019-04-28 周日)

    参考https://www.cnblogs.com/CloudMan6/p/7655294.html   Weave Scope 的最大特点是会自动生成一张 Docker 容器地图,让我们能够直接的理 ...

  2. Unity Tiny & ECS 学习笔记

    1.官方文档 https://docs.unity3d.com/Packages/com.unity.tiny@0.13/manual/intro-for-unity-developers.html ...

  3. Makefile模板(C++)

    Makefile的C++的一个模板,可用于根据不同源文件,生成多个可执行文件 . CC = g++ DIR_INC = ./include DIR_SRC = ./src DIR_OBJ = ./ob ...

  4. Visual Studio Code(VS code)你们都在用吗?或许你们需要看一下这篇博文

    写在前面 在前端开发中,有一个非常好用的工具,Visual Studio Code,简称VS code. 都不用我安利VS code,大家就会乖乖的去用,无数个大言不惭的攻城狮,都被VS code比德 ...

  5. Centos7.2下部署Java开发环境

    1.安装JDK 如果以前安装过JDK,想要重新安装可执行如下命令进行卸载,这里安装的是JDK1.8: 先查询: rpm -qa|grep jdk 然后再通过下面命令进行卸载 rpm -e --node ...

  6. 【实验四】[bx]和loop的使用

    四.实验结论 任务一: (1) ①当我写 mov ax,b800h时,编译报错了. ②清屏后运行 (2)将源代码程序中字数据0403H→修改为0441H,再次运行,图案发生了变化. 任务二: (1) ...

  7. XSS,CSRF,Cookie防劫持的处理

    Cookie与sessionHTTP天然是无状态的协议, 为了维持和跟踪用户的状态, 引入了Cookie和Session. Cookie包含了浏览器客户端的用户凭证, 相对较小. Session则维护 ...

  8. django QuerySet

    Django对数据库的封装1——QuerySet 发布时间:2018-02-28 来源:网络 上传者:用户 关键字: manager 数据库 记录 影响 发表文章 摘要:   Django对数据库的操 ...

  9. 使用Promise发送多个异步请求, 全部完成后再执行

    const datas = idList .map(id => url+'/id') .map(url => fetch(url).then(res => res.json())); ...

  10. Idea中一些常用设置

    idea展开和折叠方法的快捷键 Ctrl+”+/-”,当前方法展开.折叠Ctrl+Shift+”+/-”,全部展开.折叠 idea中也有自定代码块的功能 //region 描述.....业务代码//e ...