使用寄存器点亮LED——前言基础知识
在点亮LED之前,我们需要具备一些基础知识:
GPIO—general purpose intput output
是通用输入输出端口的简称,简单来说就是软件可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。
1、GPIO跟引脚有什么区别? 2、如何查找每一个GPIO的功能说明?

引脚包含了GPIO,也就是GPIO是引脚的子集。
通过《STM32F4xx英文数据手册》可以查询每一个GPIO的功能说明,需要注意带FT标志的表示兼容5V,否则只耐3.3V。
下面介绍推挽输出和开漏输出:

(1)可以吸电流,也可以贯电流,单片机贯电流一般不能超过20ma,这也是为什么一般驱动LED灯都是用的推挽输出的原因;(2)和开漏输出相比,push-pull的高低电平由IC的电源决定,不能简单的做逻辑操作等;(3)两个晶体管不能同时导通,上面导通输出高电平,下面导通输出低电平,带负载能力强。

(1)对于各种电压节点间的电平转换非常有用,可以用于各种电压节点的Up-translate和down-translate转换
(2)可以将多个开漏输出的Pin脚,连接到一条线上,形成“与逻辑”关系,即“线与”功能,任意一个变低后,开漏线上的逻辑就为0了。这也是I2C(注意选择输出模式哦),SMBus等总线判断总线占用状态的原理。(3)利用 外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很下的栅极驱动电流。(4)可以利用改变上拉电源的电压,改变传输电平:(5)开漏输出其实就是推挽输出的下半部分,但是开漏输出这样就只能输出低电平,为了输出高电平,加了一个上拉电阻,这样之后,不仅可以输出高电平,还可以突破INT输入的高电平的限制,比如INT输入3.3V,我VDD 5V,这样最后的输出是5V,可以做匹配电压,但减小了带负载能力。
具体参考百度文库资料:https://wenku.baidu.com/view/cbf43cd5bceb19e8b8f6ba70.html



在完成上面的基础知识之后,就要开始我们的编程实战了,首先第一步还是看硬件设计:

可以看出我们的硬件决定了我们端口需要输出低电平才可以点亮LED,而且也应该采用推挽输出的方式,因为有灌电流,也因为我们这里用不着线与功能而且需要一定的带负载能力。
这里还是没有使用最新的HAL库,还是使用固件库编程,固件库编程是必备基础。
既然基于固件库,就得明白别人的程序的缩写和命名规范:

固态函数库遵从以下命名规则
PPP 表示任一外设缩写,例如: ADC。
系统、源程序文件和头文件命名都以“stm32f10x_”作为开头,例如: stm32f10x_conf.h。
常量仅被应用于一个文件的,定义于该文件中;被应用于多个文件的,在对应头文件中定义。所有常量都
由英文字母大写书写。
寄存器作为常量处理。他们的命名都由英文字母大写书写。在大多数情况下,他们采用与缩写规范与本用
户手册一致。
外设函数的命名以该外设的缩写加下划线为开头。每个单词的第一个字母都由英文字母大写书写,例如:
SPI_SendData。 在函数名中,只允许存在一个下划线,用以分隔外设缩写和函数名的其它部分。
名为 PPP_Init 的函数,其功能是根据 PPP_InitTypeDef 中指定的参数,初始化外设 PPP,例如 TIM_Init.
名为 PPP_DeInit 的函数,其功能为复位外设 PPP 的所有寄存器至缺省值,例如 TIM_DeInit.
名为 PPP_StructInit 的函数,其功能为通过设置 PPP_InitTypeDef 结构中的各种参数来定义外设的功能,
例如: USART_StructInit
名为 PPP_Cmd 的函数,其功能为使能或者失能外设 PPP,例如: SPI_Cmd.
名为 PPP_ITConfig 的函数,其功能为使能或者失能来自外设 PPP 某中断源,例如: RCC_ITConfig.
名为 PPP_DMAConfig 的函数,其功能为使能或者失能外设 PPP 的 DMA 接口,例如: TIM1_DMAConfig.
用以配置外设功能的函数,总是以字符串“Config”结尾,例如 GPIO_PinRemapConfig.
名为 PPP_GetFlagStatus 的函数,其功能为检查外设 PPP 某标志位被设置与否,例如: I2C_GetFlagStatus.
名为 PPP_ClearFlag 的函数,其功能为清除外设 PPP 标志位,例如: I2C_ClearFlag.
名为 PPP_GetITStatus 的函数,其功能为判断来自外设 PPP 的中断发生与否,例如: I2C_GetITStatus.
名 为 PPP_ClearITPendingBit 的 函 数 , 其 功 能 为 清 除 外 设 PPP 中 断 待 处 理 标 志 位 , 例 如 :
I2C_ClearITPendingBit.
详情参考《STM32固件库使用手册的中文翻译版》。
至此,终于可以开始挽起袖子干了。
使用寄存器点亮LED——前言基础知识的更多相关文章
- 第7章 使用寄存器点亮LED灯
第7章 使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...
- 第7章 使用寄存器点亮LED灯—零死角玩转STM32-F429系列
第7章 使用寄存器点亮LED灯 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...
- STM32F4 阿波罗寄存器点亮LED灯
学习步骤: 使用寄存器点亮LED灯,需要进行如下的步骤,LED灯属于外设部分,首先需要开启外设的时钟使能,然后LED灯是PB1口,(芯片是正点原子的阿波罗),接着定义GPIOB口的输出模式,为上拉.推 ...
- 使用寄存器点亮LED——2
1. 项目:使用stm32寄存器点亮LED, 分别点亮红.绿.蓝3个灯. 2. 步骤 先新建个文件夹保存项目 再新建项目 将startup_stm32f10x_hd.s拷贝到该文件夹下 新建main. ...
- 使用寄存器点亮LED
1. 项目:使用stm32寄存器点亮LED, 分别点亮红.绿.蓝3个灯. 2. 代码: 只需要编写main.c程序,stm3210x.h程序为空(只需要新建即可). 2.1 点亮绿灯main.c程序 ...
- 使用寄存器点亮LED——编程实战
stm32的编程和stc89c51还是存在着很多思想上的不同的,在51单片机中,我们点亮LED灯,只用给对应IO高低电平就可以了,而stm32中,就一个简单的GPIO,我们也需要配置好几个寄存器,而且 ...
- 使用寄存器点亮LED(第2节)—寄存器映射代码讲解
// 打开 GPIOB 端口的时钟 *( unsigned int * )0x40021018|= ( 1 << 4 ); // 配置PC2 IO口为通用推挽输出,速度为10M *( un ...
- stm32F103C8T6通过写寄存器点亮LED灯
因为我写寄存器的操作不太熟练,所以最近腾出时间学习了一下怎么写寄存器,现在把我的经验贴出来,如有不足请指正 我使用的板子是stm32F103C8T6(也就是最常用的板子),现在要通过写GPIO的寄存器 ...
- 使用寄存器点亮LED(第1节)—GPIO功能框图讲解
GPIO简介 GPIO 是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚, STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯.控制以及数据采集的功能.STM32 ...
随机推荐
- 使用JDK自带的Stax操作XML
操作的books.xml <?xml version="1.0" encoding="UTF-8"?> <bookstore> < ...
- 10、java初始化顺序
在new B一个实例时首先要进行类的装载.(类只有在使用New调用创建的时候才会被java类装载器装入) 2,在装载类时,先装载父类A,再装载子类B3,装载父类A后,完成静态动作(包括静态代码和变 ...
- 在MyEclipse中改动jsp页面的默认打开方式
在JavaWeb项目中.当然有非常多jsp页面,可是我发现,双击打开jsp页面总是卡机.相对于打开其它java文件而言非常慢,感觉非常不舒服.MyEclipse中默认打开jsp页面是以可视化的形式展现 ...
- 【laravel5.4】自定义公共函数的创建
原文地址:http://blog.csdn.net/qq_38125058/article/details/76862151 公共函数,简单来说就是在任何地方都可以直接使用这个函数.简单介绍两种实现方 ...
- 【TP3.2】跨库操作和跨域操作
一.跨库操作:(同一服务器,不同的数据库) 假设UserModel对应的数据表在数据库user下面,而InfoModel对应的数据表在数据库info下面,那么我们只需要进行下面的设置即可. class ...
- Spring Data JPA实体详解
1. Spring Data JPA实体概述 JPA提供了一种简单高效的方式来管理Java对象(POJO)到关系数据库的映射,此类Java对象称为JPA实体或简称实体.实体通常与底层数据库中的单个关系 ...
- inet_ntoa 的一个小问题
一个简单点的阻塞式tcp服务器如下所示: #include <stdio.h> #include <string.h> #include <sys/socket.h> ...
- HDUOJ --2544最短路(基础)
输入包括多组数据.每组数据第一行是两个整数N.M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几 ...
- HDUOJ--点球大战
点球大战 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- Windows下面安装和配置Solr 4.9(一)
1.Solr下载 下载地址 :http://lucene.apache.org/solr/ 2.解压,测试 在example文件夹中找到start.jar文件,用命令提示符运行这个文件:ja ...