使用寄存器点亮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 ...
随机推荐
- 新浪API及调用案例
百度分享:http://pan.baidu.com/s/1uSmku
- 19、Java访问修饰符
修饰符 本类 同一个包中的类 子类 其它类 public 可以访问 可以访问 可以访问 可以访问 protected 可以访问 可以访问 可以访问 不能访问 默认 可以访问 可以访问 不能访问 不能访 ...
- VC线程同步方法
VC MFC中线程同步对象的区别 临界区 CCriticalSection,在用户模式工作,适用于保护线程间共享资源,一个线程可以多次Lock不会出错.不支持在多进程之间工作.互斥量 CM ...
- linux显示桌面快捷键设置
2013-01-06 10:31:52 Ubuntu显示桌面Indicator IN: LINUX :-) HOT: 1,246 ℃ 18十2011 www.2cto.com 大家一 ...
- cxf之org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'cxf' available
原因是.... 把cxf的配置文件spring-cxf-rest.xml配置结束后,没有import到spring.xml中...所以才加载不到bean.... 另附:异常org.springfram ...
- 【LeetCode】140. Word Break II
Word Break II Given a string s and a dictionary of words dict, add spaces in s to construct a senten ...
- Quartz.net官方开发指南[转]
http://www.cnblogs.com/shanyou/category/102991.html
- AP_费用报表报销基本操作(流程)
2014-06-04 Created By BaoXinjian
- Concurrency Managed Workqueue(一)workqueue基本概念
一.前言 workqueue是一个驱动工程师常用的工具,在旧的内核中(指2.6.36之前的内核版本)workqueue代码比较简单(大概800行),在2.6.36内核版本中引入了CMWQ(Concur ...
- C#--类成员
数据成员: 字段: 常量: 函数成员(执行代码): 方法: 属性 构造函数 析构函数 运算符 索引 事件 可以被声明为Static的类成员是: