//GPIO的作业,抄两次,注意:本文件是知识点的整理不是可以直接运行的程序。

 //STM32必须包含的头文件
#include "stm32f10x.h"
//GPIO相关头文件
#include "stm32f10x_gpio.h"
//外部中断相关头文件
#include "stm32f10x_exti.h"
//内核相关的头文件,NVIC在这里
#include "misc.h" /*GPIO配置使用步骤
1.使能,调用函数:
RCC_APB2PeriphClockCmd(
RCC_APB2Periph_外设名,ENABLE);
第一个参数是挂载在APB2总线下面的外设
第二个参数是允许(ENABLE)或不允许(DISABLE) 2.定义GPIO配置结构体的变量
GPIO_InitTypeDef a;
//这里若把GPIO改为
//NVIC、TIM、I2C等就是
//其他的外设配置结构体
a.GPIO_Pin = GPIO_Pin_5;//GPIO的5号引脚
a.GPIO_Speed = GPIO_Speed_50MHz;//速度
a.GPIO_Mode = GPIO_Mode_Out_PP;//工作方式(推挽输出) 3.调用函数初始化GPIO
GPIO_Init(GPIOB,&a);//这里要传入a的地址 4.以上步骤GPIO就配置完成了,下面可以赋值
//设置PB5为低电平
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
//设置PB5为高电平
GPIO_SetBits(GPIOB,GPIO_Pin_5); */
//实例:点亮红色LED,把PB5设置为低电平
RCC_APB2PeriphClockCmd(
RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitTypeDef a;
a.GPIO_Pin = GPIO_Pin_5;
a.GPIO_Speed = GPIO_Speed_50MHz;
a.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,&a);
GPIO_ResetBits(GPIOB,GPIO_Pin_5); //按键接到PA0引脚,按键按下灯亮,松开熄灭
while(){
//读取引脚的电平
int i = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);
if(i == ){
//按键按下了
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
}else{
//按键松开
GPIO_SetBits(GPIOB,GPIO_Pin_5);
}
} //按键实现每按一次灯的电平状态翻转
int pre = ;//上一次循环按键的电平
while(){
//读取引脚的电平
int states = GPIO_ReadInputDataBit(
GPIOA,GPIO_Pin_0);
if(states == && pre == ){
//按键刚松开那一刻,states马上变为0,但是
//上一次循环中给pre赋的值还是1
if(GPIO_ReadInputDataBit(
GPIOB,GPIO_Pin_5) == ){
GPIO_SetBits(GPIOB,GPIO_Pin_5);
}else{
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
}
}
pre = states;//把本次循环按键的电平赋值给上一次
}

GPIO知识点整理的更多相关文章

  1. ACM个人零散知识点整理

    ACM个人零散知识点整理 杂项: 1.输入输出外挂 //读入优化 int 整数 inline int read(){ int x=0,f=1; char ch=getchar(); while(ch& ...

  2. Android 零散知识点整理

    Android 零散知识点整理 为什么Android的更新试图操作必须在主线程中进行? 这是因为Android系统中的视图组件并不是线程安全的.通常应该让主线程负责创建.显示和更新UI,启动子线程,停 ...

  3. vue前端面试题知识点整理

    vue前端面试题知识点整理 1. 说一下Vue的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫 ...

  4. kafka知识点整理总结

    kafka知识点整理总结 只不过是敷衍 2017-11-22 21:39:59 kafka知识点整理总结,以备不时之需. 为什么要使用消息系统: 解耦 并行 异步通信:想向队列中放入多少消息就放多少, ...

  5. JSP页面开发知识点整理

    刚学JSP页面开发,把知识点整理一下. ----------------------------------------------------------------------- JSP语法htt ...

  6. JS知识点整理(二)

    前言 这是对平时的一些读书笔记和理解进行整理的第二部分,第一部分请前往:JS知识点整理(一).本文包含一些易混淆.遗漏的知识点,也会配上一些例子,也许不是很完整,也许还会有点杂,但也许会有你需要的,后 ...

  7. css入门知识点整理

    css入门知识点整理 不要嘲笑我这个蒟蒻..例子来源:w3school css其实就分为两个东西,一个是选择器,另外一个是声明.声明定义了某个对象的属性的值,这都是html的内容.重点要关注的是选择器 ...

  8. activity生命周期知识点整理

    activity生命周期知识点整理 Activity: 是一个应用组件,用户可与其提供的屏幕进行交互.窗口通常会充满屏幕,但也可以小于屏幕并浮动在其他窗口之上. 一个activity的什么周期: 启动 ...

  9. 【Android 面试基础知识点整理】

    针对Android面试中常见的一些知识点整理,Max 仅仅是个搬运工.感谢本文中引用文章的各位作者,给大家分享了这么多优秀文章.对于当中的解析,是原作者个人见解,有错误和不准确的地方,也请大家积极指正 ...

随机推荐

  1. 为什么访问json接口出现文件下载

    在IE9,10,11下,当服务器端返回数据格式为json,且明确设置Content-Type为”application/json;charset=utf-8“时,会提示文件下载.如图所示: 解决办法是 ...

  2. shell 脚本加密

    日常编写shell脚本时会写一些账号和密码写入脚本内,但是不希望泄露账号密码,所以对shell脚本进行加密变成可执行文件. 主要使用 shc 对 Linux shell 脚本加密,shc是一个专业的加 ...

  3. AI学习吧-支付宝支付

    支付宝支付流程 1.接收前端发过来的贝里数和结算金额 2.检查贝里数是否够用 3.获取结算中心的课程并应用优惠券 4.应用未绑定课程的优惠券 5.判断总价格减去优惠券价格是否等于实际支付金额 6.生成 ...

  4. 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)

    一.spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运 ...

  5. 20165323 实验二 Java面向对象程序设计

    一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:杨金川 学号:20165323 指导教师:娄嘉鹏 实验日期:2018年4月16日 实验时间:13:45 - 15:25 实验序号:二 ...

  6. 拒绝频繁IP访问--转载

    //首先我们要实现 IHttpModule接口 using System; using System.Collections.Generic; using System.Text; using Sys ...

  7. dubbo负载均衡策略和集群容错策略都有哪些

    dubbo负载均衡策略 random loadbalance 默认情况下,dubbo是random load balance随机调用实现负载均衡,可以对provider不同实例设置不同的权重,会按照权 ...

  8. C# 之 @ Assembly

    @ Assembly指定需要动态编译的类,在编译期间将程序集链接到 ASP.NET 应用程序页(例如网页.用户控件.母版页或 Global.asax 文件),使程序集的所有类和接口都在该页上可用. & ...

  9. JS合并数组的几种方法及优劣比较

    本文属于JavaScript的基础技能. 我们将学习结合/合并两个JS数组的各种常用方法,并比较各种方法的优缺点. 我们先来看看具体的场景: var q = [ 5, 5, 1, 9, 9, 6, 4 ...

  10. android测试--常用控件测试及测试经验(常见)

    1.图片选择器 ================测试中遇到的问题记录(除表中记录的)================================================== ①.曾出现,断 ...