STM32F407第一步之点亮LED
STM32F407第一步之点亮LED。
要点亮LED,首先了解一下F4的GPIO模块。首先看一下STM32F4数据手册,GPIO模块的内部结构图

看上去有点复杂,不要怕,慢慢理解就可以了。对外引脚那里二极管就是保护的作用。通过上、下拉对应的开关配置,控制引脚默认状态的电压,开启上拉的时候引脚电压为高电平,开启下拉的时候引脚电压为低电平,这样可以消除引脚不定状态的影响。但是这个不应该用来作为外部的上拉或下拉用,如按键的拉电阻不能用这个内部来作用,如果用可能会引起按键不稳定。
GPIO 具有了“推挽输出”和“开漏输出”两种模式。在该结构中输入高电平时,上方的 P-MOS 导通,下方的 N-MOS 关闭,对外输出高电;而在该结构中输入低电平时, N-MOS 管导通, P-MOS 关闭,对外输出低电平。当引脚高低电平切换时,两个管子轮流导通,一个负责灌电流,一个负责拉电流,使其负载能力和开关速度都比普通的方式有很大的提高。
输出数据寄存器:由 GPIO“输出数据寄存器GPIOx_ODR”提供的,因此通过修改输出数据寄存器的值就可以修改 GPIO 引脚的输出电平。而“置位/复位寄存器 GPIOx_BSRR”可以通过修改输出数据寄存器的值从而影响电路的输出。
“复用功能输出”中的“复用”是指 STM32 的其它片上外设对 GPIO 引脚进行控制,此时 GPIO 引脚用作该外设功能的一部分,算是第二用途。但是同一时刻只能用一个功能,如有的GPIO具有SIP功能,又具有I2C功能,在使用时只能配置成一种功能,要么是SPI要么是I2C。
输入数据寄存器:GPIO 引脚经过上、下拉电阻后引入的,它连接到施密特触发器,信号经过触发器后,模拟信号转化为 0、 1 的数字信号,然后存储在“输入数据寄存器 GPIOx_IDR”中,通过读取该寄存器就可以了解 GPIO 引脚的电平状态。
基本就是这样的了,具体的要参考STM32F4参考手册。
对于点亮LED来说,首先看一下电路图,确认一下是高电平1点亮还是低电平0点亮。
由以上原理图可以确定,三个灯是低电平0点亮的,那了解了GPIO的基本配置开始设计程序了,采用库函数方式,所以要添加相应的文件,stm32f4xx_gpio.c
1、首先是配置LED对应GPIO引脚,让这些引脚设置为输出。
static int initialize( void )
{
GPIO_InitTypeDef uGPIO_InitStructure;
//映射时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOI,ENABLE);
//配置引脚相关参数
uGPIO_InitStructure.GPIO_Pin = LED_RED_PIN | LED_GREEN_PIN | LED_BLUE_PIN; //设置连接三色LED灯的IO端口
uGPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //设置端口为输出模式
uGPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出
uGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉
uGPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //设置速度
GPIO_Init(GPIOI,&uGPIO_InitStructure);
//
GPIO_SetBits(GPIOI,LED_RED_PIN | LED_GREEN_PIN | LED_BLUE_PIN);
}
2、可以操作LED对应引脚的高低电平,让LED能亮与灭。
//LOW-ON
#define LED_RED_OFF GPIO_SetBits(LED_RED_PORT,LED_RED_PIN);
#define LED_RED_ON GPIO_ResetBits(LED_RED_PORT,LED_RED_PIN);
#define LED_GREEN_OFF GPIO_SetBits(LED_GREEN_PORT,LED_GREEN_PIN);
#define LED_GREEN_ON GPIO_ResetBits(LED_GREEN_PORT,LED_GREEN_PIN);
#define LED_BLUE_OFF GPIO_SetBits(LED_BLUE_PORT,LED_BLUE_PIN);
#define LED_BLUE_ON GPIO_ResetBits(LED_BLUE_PORT,LED_BLUE_PIN);
STM32F407第一步之点亮LED的更多相关文章
- Mini2440上的第一个程序——点亮Led
手头的Mini2440搁置了两年半之后,我再次决定拿出它,重新尝试嵌入式Linux的学习. 我使用的是友善之臂的Mini2440开发板.韦东山的<嵌入式Linux应用开发完成手册>及其视频 ...
- [TPYBoard-Micropython教程之1] 运行第一个脚本——点亮LED
转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 会python就能做硬件! 一.TPYBoard V102开发板 TPYBoard V102 ...
- [TPYBoard - Micropython之会python就能做硬件 1] 运行第一个脚本——点亮LED
转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 会python就能做硬件! 一.TPYBoard V102开发板 TPYBoard V102 ...
- 面对一个新的MCU,我再也不敢说第一步是点灯了
折腾了几天AT91SAM3S,今天才算是把开发板上的3个LED点亮. 在点亮之前,起码看了百八十页的Datasheet,动用了N次百度. 各种时钟,看门狗,分散加载,中断向量,都得去整.这些都远远超过 ...
- arm-点亮led灯
点亮指路灯:学习四环节:led原理图分析,芯片手册导读,思维导图设计,为什么要使用led:通常led是作为程序调试的重要手段.led原理图:led实质为发光二极管,当其两端电压一定时,即处于导通状态. ...
- 使用寄存器点亮LED——编程实战
stm32的编程和stc89c51还是存在着很多思想上的不同的,在51单片机中,我们点亮LED灯,只用给对应IO高低电平就可以了,而stm32中,就一个简单的GPIO,我们也需要配置好几个寄存器,而且 ...
- 使用寄存器点亮LED——前言基础知识
在点亮LED之前,我们需要具备一些基础知识: GPIO—general purpose intput output 是通用输入输出端口的简称,简单来说就是软件可控制的引脚,STM32芯片的GPIO引脚 ...
- 字符型设备驱动程序-first-printf以及点亮LED灯(三)
根据 字符型设备驱动程序-first-printf以及点亮LED灯(二) 学习 修改函数 中的printf 为 printk. #include <linux/module.h> /* ...
- STM32 基于 CubeMX配置GPIO点亮LED灯(超级详细+图文并茂)
我是一个只会点灯的菜鸟: 相关文章 [STM32系列汇总]小白博主的STM32实战快速进阶之路(持续更新) 文章目录 相关文章 1 前言 2 理论分析 2.1 LED 原理 2.2 板载资料 2.3 ...
随机推荐
- 微信开发03----------XML解析与封装
3.1 解析微信发来的请求 微信服务器发来的请求消息都被封装在request对象中,可以从request对象中将请求参数取出来.通常是用request的getParament()方法获取请求中的参数 ...
- SVN更新报错
将服务器SVN文件更新到本地是出现下图错误 报错中已经提示可以通过clean up来清理,若直接执行release lock,则不会解决问题. 原因:本地的项目中存在过期的工作副本 解决办法:选择该文 ...
- POJ 3414 解题报告!
原题: Pots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13227 Accepted: 5550 Special Jud ...
- 【引】runtime全解析,P2:关于Class 和 MetaClass
几个基本的概念: id,id的定义是,typedef struct objc_object { Class isa;} *id; id是指向struct objc_object的一个指针.这个意思是, ...
- BZOJ平推计划
学习VFK大神推BZOJ,记录一下学习的东西 1004: burnside:一个置换群的等价计数=(每个置换的置换后等价情况数)/置换总数,每个置换的置换后等价情况数就是置换后没变的数 模意义下的除法 ...
- Python更换国内源实现快速PIP安装
WINDOWS 安装pip 1.首先下载安装Python,并将python的安装目录添加进系统环境变量 2.复制这个文件保存为.py并执行 https://bootstrap.pypa.io/get- ...
- etcd第一集
网站:https://github.com/coreos/etcd 一些观点:https://yq.aliyun.com/articles/11035 1.etcd是键值存储仓库,配置共享和服务发现2 ...
- photoshop, 钢笔上色
photoshop中用 钢笔工具 勾好轮廓后,使用 路径选择工具 选中轮廓,右键弹出菜单中选 创建矢量蒙板,然后就可以在区域内用 笔刷工具 涂抹上色,不用担心出界了. ----补充2017-1-2 将 ...
- javascript标识符
标识符,就是指变量.函数.属性的名字,或者函数的参数. 规则 1.第一个字符必须是一个字母.下划线或是美元符号($) 2.其他字符可以是字母.下划线.美元符号或数字 3.不能是关键字和保留字 4.区分 ...
- VMware安装centos虚拟机
vm中安装虚拟机,步骤,图片截取 VM中 --> 文件 --> 新建虚拟机 此处若是提示CPU不支持虚拟机安装 重启计算机,进入BIOS,修改cpu配置 点击next 下一步 .... 等 ...