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的更多相关文章

  1. Mini2440上的第一个程序——点亮Led

    手头的Mini2440搁置了两年半之后,我再次决定拿出它,重新尝试嵌入式Linux的学习. 我使用的是友善之臂的Mini2440开发板.韦东山的<嵌入式Linux应用开发完成手册>及其视频 ...

  2. [TPYBoard-Micropython教程之1] 运行第一个脚本——点亮LED

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 会python就能做硬件! 一.TPYBoard V102开发板 TPYBoard V102 ...

  3. [TPYBoard - Micropython之会python就能做硬件 1] 运行第一个脚本——点亮LED

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 会python就能做硬件! 一.TPYBoard V102开发板 TPYBoard V102 ...

  4. 面对一个新的MCU,我再也不敢说第一步是点灯了

    折腾了几天AT91SAM3S,今天才算是把开发板上的3个LED点亮. 在点亮之前,起码看了百八十页的Datasheet,动用了N次百度. 各种时钟,看门狗,分散加载,中断向量,都得去整.这些都远远超过 ...

  5. arm-点亮led灯

    点亮指路灯:学习四环节:led原理图分析,芯片手册导读,思维导图设计,为什么要使用led:通常led是作为程序调试的重要手段.led原理图:led实质为发光二极管,当其两端电压一定时,即处于导通状态. ...

  6. 使用寄存器点亮LED——编程实战

    stm32的编程和stc89c51还是存在着很多思想上的不同的,在51单片机中,我们点亮LED灯,只用给对应IO高低电平就可以了,而stm32中,就一个简单的GPIO,我们也需要配置好几个寄存器,而且 ...

  7. 使用寄存器点亮LED——前言基础知识

    在点亮LED之前,我们需要具备一些基础知识: GPIO—general purpose intput output 是通用输入输出端口的简称,简单来说就是软件可控制的引脚,STM32芯片的GPIO引脚 ...

  8. 字符型设备驱动程序-first-printf以及点亮LED灯(三)

    根据  字符型设备驱动程序-first-printf以及点亮LED灯(二) 学习 修改函数 中的printf 为 printk. #include <linux/module.h> /* ...

  9. STM32 基于 CubeMX配置GPIO点亮LED灯(超级详细+图文并茂)

    我是一个只会点灯的菜鸟: 相关文章 [STM32系列汇总]小白博主的STM32实战快速进阶之路(持续更新) 文章目录 相关文章 1 前言 2 理论分析 2.1 LED 原理 2.2 板载资料 2.3 ...

随机推荐

  1. 在 CentOS 7.x / Fedora 21 上面体验 PHP 7.0

    编译自:http://linoxide.com/linux-how-to/install-php-7-centos-7-fedora-21/作者: Aun Raza原创:LCTT https://li ...

  2. 腾讯优测优分享 | Android性能测试工具化实现

    腾讯优测专业的移动云测试平台,自动化测试提供性能测试数据,云真机实时输出性能数据,让测试更简单! 1.Android性能测试介绍 提到Android性能测试,我们总免不了俗地要首先介绍下Android ...

  3. Github注册账户过程

    首先打开网站https://github.com/ 第一个是输入用户名第二个是邮箱第三个是自己的密码然后点    sign up for github 此时会有个邮箱注册的验证进入注册的邮箱点击认证. ...

  4. React(JSX语法)-----JSX基本语法

    JSX------HTML tags vs React Components: 1.To render a html tag,just use lower-case tag names in JSX; ...

  5. WKWebView比UIWebView优越性

    1.在使用两者的过程中发现前者比后者节省内存一倍多,WKWebView 是苹果在 iOS 8 中引入的新组件,目的是给出一个新的高性能的 Web View 解决方案,摆脱过去 UIWebView 的老 ...

  6. css基础知识点

    回顾 1.结构标记 <header></header> <nav></nav> <section></section> < ...

  7. 《java编程思想》读书笔记 暂停一段时间,改为上面的练习题

    发现个很尴尬的现象.我一天实在看得太快了...全写下 写博客都得一晚上.. 之前因为是第一次看这么厚的书,别人都说很难,以为会看很慢的.然而,已经完全学过Java的 我感觉没啥压力,越看越快....第 ...

  8. vue 2.0版本----》常用代码说明

    ------------------------------------------代码不显示-------------------------------------------- [v-cloak ...

  9. Servlet,jsp,JSP技术 ,JSP编程

     一.Servlet 思考 1 浏览器可以直接打开JAVA/class文件吗? 不可以 2浏览器可以打开HTML.JS 文件吗? 可以 3 JAVA程序可以生成HTML文件吗?可以的,用IO流. 4 ...

  10. 【原创】关于不同分支代码的Merge有了透彻的理解

    多分支开发,Merge是一个绕不过的话题,不管是Git还是SVN,公司用的是SVN,之前对于SVN的Merge没有很好的研究,出了些状况,这个问题不解决,顺畅地进行多分支开发就是海市蜃楼,下定决心把这 ...