前言:我们学习一门新语言的时候都是先从hello world入门,stm32也有自己的入门方式,那就是流水灯的配置。

在配置之前我们需要先配置好编译环境,我们需要手动修改头文件中的一些内容。

1、首先我们需要先创建一个新工程,前面我已经详细讲过怎么创建一个新工程了,在这里就不赘述了,不懂的朋友可以看看我的上一篇的随笔(stm32环境搭建)。

2、修改系统时钟,把文件system_stm32f4xx.c(Startup)文件中的PLL_M宏定义改为8,PLL_N如果不是336的话改成336,还有stm32f4xx.h文件中的HSE_VALUE的值改成8000000

2、J-Link正确连接到开发板,安装驱动Setup_JLinkARM_V415e.exe

3)在工程选项的【Debug】标签,选中“J-LINK/J-TRACE Cortex”,接着点击“settings”,设置port为“sw”,频率为“5MHz”;然后点击【Flash Download】,勾选“Reset and Run”。最后点击“确定”按钮退出。

4、通过查看原理图,找出四盏led灯的管脚名字,我这里分别为LED0、LED1、FSMC_D10、FSMC_D11,这里不同的板子led的管脚的名字可能不同。

5、知道led灯管脚的名字之后,再通过芯片原理图找到对应的led灯管脚名字的I/O口,从原理图可知,对应的I/O为PF9、PF10、PE13和PE14,不同的硬件对应的I/O口不同,需要自己找出自己硬件上的led对应的I/O口。

6、找出对应芯片上的I/O口之后,我们就可以着手写代码了。如果不懂这么写的可以查阅官方的标准的外设库文件(Standard Peripherals Library),里面有配置I/0的模板例子,但是需要做适当的修改。如图便是标准外设库文件配置I/O的例子

7、具体代码如下led.c如下:

#include "stm32f4xx.h"

GPIO_InitTypeDef  GPIO_InitStructure;

void delay(void)
{
unsigned int i=0x500000; while(i--); } int main(void)
{
/* GPIOG Peripheral clock enable ,使能外设时钟GPIOF和GPIOE,也就是让GPIOF和GPIOE工作*/
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); /* 配置PF9引脚为推挽输出模式 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //第PF9和PF10号引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //输出模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出模式,增加输出电流
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //引脚的的工作速度最高为100MHz,最低为2MHz,工作速度越高,功耗就越高
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //不需要上拉电阻
GPIO_Init(GPIOF, &GPIO_InitStructure); //初始化端口F GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14; //第PE13和PE14号引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //输出模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出模式,增加输出电流
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //引脚的的工作速度最高为100MHz,最低为2MHz,工作速度越高,功耗就越高
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //不需要上拉电阻
GPIO_Init(GPIOE, &GPIO_InitStructure); //初始化端口E while()
{ GPIO_ResetBits(GPIOF,GPIO_Pin_9);//PF9引脚为低电平,led灯亮
delay();
GPIO_SetBits(GPIOF,GPIO_Pin_9); //PF9引脚为高电平,led灯灭
delay(); GPIO_ResetBits(GPIOF,GPIO_Pin_10);//PF10引脚为低电平,led灯亮
delay();
GPIO_SetBits(GPIOF,GPIO_Pin_10); //PF10引脚为高电平,led灯灭
delay(); GPIO_ResetBits(GPIOE,GPIO_Pin_13); //PE13引脚为低电平,led灭亮
delay();
GPIO_SetBits(GPIOE,GPIO_Pin_13); //PE13引脚为高电平,led灯灭
delay(); GPIO_ResetBits(GPIOE,GPIO_Pin_14); //PE14引脚为低电平,led灭亮
delay();
GPIO_SetBits(GPIOE,GPIO_Pin_14); //PE14引脚为高电平,led灯灭
delay();
}
}

7、编译之后,通过仿真器下载到板子上就可以跑流水灯了。

stm32配置led的更多相关文章

  1. STM32配置GPIO前须先打开其时钟,否则配置失败

    @2018-5-9 17:11:38 STM32配置GPIO前须先打开其时钟,否则配置失败

  2. 使用 VSCode 给STM32配置一个串口 printf 工程

    使用 VSCode 给STM32配置一个串口 printf 工程 gcc 重定向 printf 和 keil 不一样. 文件准备 先从以前的工程中拷过一份串口的代码来,然后在 main 函数中初始化串 ...

  3. stm32寄存器版学习笔记01 GPIO口的配置(LED、按键)

    STM32的I/O口可以由软件配置成如下8种模式:输入浮空.输入上拉.输入下拉.模拟输入.开漏输出.推挽输出.推挽式复用功能及开漏复用功能.每个I/O口由7个寄存器来控制:配置模式的端口配置寄存器CR ...

  4. STM32 配置PC13~PC15

    在STM32的数据手册的管脚分配图中可以看到:PC14与OSC32_IN公用一个引脚,PC15与OSC32_OUT公用一个引脚,它们的使用方法如下: 当LSE(低速外部时钟信号)开启时,这两个公用管脚 ...

  5. STM32的LED驱动程序

    这个LED的小程序基于的是德飞莱的最小系统板 我当时写这个程序的时候想的就是这个程序能够便于理解 也便于移植 便于调用 我参加过电赛 对于STM32的一个管脚修改的麻烦是深有体会 一个地方不对就没法工 ...

  6. 关于IAR开发STM32配置

    因为自己要学Msp430还有ZigBee发现IAR真的挺好用,,,所以以后想着就用IAR写单片机程序,, 这次配置我不会把程序的配置弄得有条理,分开文件夹存放,,,我要把那些文件全都放到一块,,弄得乱 ...

  7. ARM开发(1) 基于STM32的LED跑马灯

    一 跑马灯原理:  1.1 本实验实现2个led的跑马灯效果,即2个led交替闪烁.  1.2 实验思路:根据电路图原理,给led相关引脚赋予高低电平,实现电路的导通,使led灯发光.  1.3 开发 ...

  8. 小结-stm32 驱动LED灯

    使用位带操作,位带操作就是把每个比特膨胀成一个32位的字,当访问这些字的时候就访问这些比特位. http://www.cnblogs.com/xiaobo-Linux/ 然后,端口使能: //³õʼ ...

  9. STM32点LED灯

    一.建立项目模板 这里的user中重复引用了system_stm32f10x.c Output中选择Create HEXFile,并且可以选择输出路径. Listing中可以选择输出路径. 然后在C/ ...

随机推荐

  1. 【STM32H7教程】第19章 STM32H7的GPIO应用之按键FIFO

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第19章       STM32H7的GPIO应用之按键FIF ...

  2. 实验:用Unity抓取指定url网页中的所有图片并下载保存

    突发奇想,觉得有时保存网页上的资源非常麻烦,有没有办法输入一个网址就批量抓取对应资源的办法呢. 需要思考的问题: 1.如何得到网页url的html源码呢? 2.如何在浩瀚如海的html中匹配出需要的资 ...

  3. Java 类加载机制(阿里)-何时初始化类

    (1)阿里的面试官问了两个问题,可以不可以自己写个String类 答案:不可以,因为 根据类加载的双亲委派机制,会去加载父类,父类发现冲突了String就不再加载了; (2)能否在加载类的时候,对类的 ...

  4. shell 命名管道,进程间通信, ncat作http server

    命名管道基础 命名管道也被称为FIFO文件, 在文件系统中是可见的,并且跟其它文件一样可以读写! 命名管道特点: 当写进程向管道中写数据的时候,如果没有进程读取这些数据,写进程会堵塞 当读取管道中的数 ...

  5. Abp vNext框架 从空项目开始 使用ASP.NET Core Web Application-笔记

    参考 Abp vNext框架 从空项目开始 使用ASP.NET Core Web Application http://www.vnfan.com/helinbin/d/745b1e040c9b4f6 ...

  6. go-面向对象编程(下)

    面向对象编程思想-抽象 抽象的介绍 我们在前面去定义一个结构体时候,实际上就是把一类事物的共有的 属性( 字段)和 行为( 方法)提取 出来,形成一个 物理模型(结构体).这种研究问题的方法称为抽象 ...

  7. spring web mvc环境搭建

    这两天在学习spring,哎,没办法呀,成都基本都是java,不喜欢学这个也没有用.多学点多条路.还得生活不是. 好了,言归正传,我这里记录下我搭建spring mvc的过程,其实过程不算太难,主要是 ...

  8. Shadow broker=>fuzzbunch+metasploit 攻击外网测试以及metasploit大批量扫描目标IP

    0x01 前言 4月14日,影子经纪人在steemit.com上公开了一大批NSA(美国国家安全局)“方程式组织” (Equation Group)使用的极具破坏力的黑客工具,其中包括可以远程攻破全球 ...

  9. iOS 国际本地化(对新项目集成和已有项目集成)

    第一推荐一篇金先生的博客,受益非浅,在这里真诚的感谢 https://www.jianshu.com/p/7cb0fad6d06f金小白 首先金小白先生把两种方式都做了介绍,第一种我就不在过多详细的讲 ...

  10. Android App自动更新解决方案(DownloadManager)

    一开始,我们先向服务器请求数据获取版本 public ObservableField<VersionBean> appVersion = new ObservableField<&g ...