//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. 页面布局之--Font Awesome+导航

    页面布局之--Font Awesome+导航 Font Awesome为您提供可缩放的矢量图标,您可以使用CSS所提供的所有特性对它们进行更改,包括:大小.颜色.阴影或者其它任何支持的效果. 下载地址 ...

  2. Nginx 提示host not found in upstream 错误解决方法

      Nginx DNS resolver配置实例,本文讲解在proxy_pass 和 upstream server 通信的时候需要手动指定 resolver,本文就给出了配置实例. nginx 通过 ...

  3. Git强制拉取覆盖本地

    1.多条执行 git fetch --all git reset --hard origin/master git pull 2.单条执行 git fetch --all && git ...

  4. [转] 设置div的overflow:scroll,但是在手机上滑动的时候有点卡顿

    设置div的overflow:scroll,但是在手机上滑动的时候有点卡顿,所以在这个div上加一个css: -webkit-overflow-scrolling : touch; 在苹果手机上使用- ...

  5. es6 Proxy

    proxy在语言层面去操作一个对象 var user={}; user.fname='Bob'; user.lname="Wood"; user.fullName= functio ...

  6. 用Web api /Nancy 通过Owin Self Host简易实现一个 Http 服务器

    过去做 端游的Http 服务器 用的WebApi 或者Mvc架构,都是放在iis...而我已经是懒出一个地步,并不想去配iis,或者去管理iis,所以我很喜欢 Self host 的启动方式. C#做 ...

  7. 流程图 Graphviz - Graph Visualization Software

    0.目录 1.参考 https://www.processon.com/  应该值得一试 知乎 用什么软件画流程图? 9款国内外垂直领域的在线作图工具[可代替visio] 程序员必知的七个图形工具 说 ...

  8. FastJson 支持配置的PropertyNamingStrategy四种策略

    摘要: FastJson默认使用CamelCase,在1.2.15版本之后,FastJson支持配置PropertyNamingStrategy,支持四种策略: CamelCase.PascalCas ...

  9. 微信获取地理位置转城市demo

    <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js ...

  10. day46 html

    老师的笔记: day46 课程安排 HTML CSS JS基础 DOM操作 jQuery Bootstrap pymysql Django基础 项目实战 Vue.js 今日概要: "PUT ...