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 ...
随机推荐
- 使用第三方框架vapor和swift 搭建本地服务器
在网上看到一篇教程,使用vapor搭建服务端,自己记录下来备忘本文主要记录以下几点 1.配置好Vapor 2.用Swift写GET,POST方法,返回JSON数据 3.配置本地服务器,编译运行在浏览器 ...
- LintCode MinStack
Implement a stack with min() function, which will return the smallest number in the stack. It should ...
- C#编程语言与面向对象——委托
委托(delegate)也可以看成是一种数据类型,可以用于定义变量,但它是一种特殊的数据类型,所定义的变量能接收的数值只能是个函数,更确切地说,委托类型的变量可以接收一个函数的地址. 简单地说 委托变 ...
- web安全之sql注入布尔注入
条件: 当一个页面,存在注入,没显示位,没有数据库出错信息,只能通过页面返回正常不正常进行判断进行sql注入. 了解的函数 exists() 用于检查 子查询是 ...
- 创建Maven web项目时 出现 web.xml is missing and <failOnMissingWebXml> is set to true错误 pox.xml编译错误
今天创建一个maven项目 pom.xml出现如下错误: web.xml is missing and <failOnMissingWebXml> is set to true 这是因为你 ...
- 安装系统时出现“windows无法安装到这个磁盘。选中的的磁盘采用GPT分区形式”
安装系统到提示你不能安装在那个磁盘的一步,然后按住shift+F10呼出diskpart命令符,然后依次输入 diskpart list disk select disk 0 clean conver ...
- Linux下VI命令详细介绍
vi 是"Visual Interface" 的简称,它在Linux 上的地位就仿佛Edit 程序在DOS上一样.它可以执行输出.删除.查找.替换.块操作等众多文本操作,而且 ...
- KMP算法的详细解释及实现
这是我自己学习算法时有关KMP的学习笔记,代码注释的十分的详细,分享给大家,希望对大家有所帮助 在介绍KMP算法之前, 先来介绍一下朴素模式匹配算法: 朴素模式匹配算法: 假设要从主串S=”goodg ...
- 王爽<汇编语言>实验十
实验十 3.数值显示(以下程序附带测试程序) ;名称: dtoc ;功能: 将dword型数据转变为表示十进制数的字符串,字符串以0为结尾 ;参数: (ax)=dword型数据低字 ; (dx)=dw ...
- HDU 5964 平行四边形
假设直线L和L'相交于原点O.假设S ={s1,s2,...,sn}是平面上的n个点.你打 算找四个点满足如下条件:1. A ∈ L 而 A' ∈ L'.2. B,B'都属于S;即 B∈S 且 ...