前言:我们学习一门新语言的时候都是先从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. seq参数 RANDOM 参数 openssl参数 cut参数

    #seq命令用于以指定增量从首数开始打印数字到尾数 语法: [2] seq [选项] 首数 尾数 [3] seq [选项] 首数 增量 尾数选项: seq 实例 一 存入数据库 然后 输出数据库的代码 ...

  2. 第04组 Alpha冲刺(4/4)

    队名:斗地组 组长博客:地址 作业博客:Alpha冲刺(4/4) 各组员情况 林涛(组长) 过去两天完成了哪些任务: 1.分配展示任务 2.收集各个组员的进度 3.写博客 展示GitHub当日代码/文 ...

  3. Sql Server 判断表是否存在方法总结

    #使用场景: 1.在创建表之前,需要先判断该表是否已经存在: 2.在删除表之前,需要先判断该表是否已经存在: #方法总结: 1.判断实体表是否存在的方法: 1).方法一: * from sysObje ...

  4. js input radio点击事件

    html代码: <input type="radio" name="myname" value="1" />1 <inpu ...

  5. ubuntu命令查看英伟达显卡型号

    在终端输入如下命令:nvidia-smi

  6. MongoDB for OPS 02:复制集 RS 配置

    写在前面的话 对于生产环境而言,除非是非常不重要的业务,且该业务允许我们出现一定时间的停机,我们一般才会使用单节点,且该单节点必须要有完善的备份手段. RS 复制集 我们这里采取一主两从的方式搭建复制 ...

  7. Git 实用命令记录

    自从上次写了一篇 Git 入门 的相关博客以来,一直自以为自己能完全的掌握 Git,其实不然,今天一小伙问我,如何删除远程上面的一个分支,呃,不会. git branch -d 分支名 只能删除本地的 ...

  8. C# rename files

    static void RenameFiles() { string sourceDir = @"D:\ll"; string[] allFiles = Directory.Get ...

  9. Wpf,Unity6

    <?xml version="1.0" encoding="utf-8"?><packages> <package id=&quo ...

  10. Javase之多线程(1)

    多线程(1) 多线程的概述 了解多线程之前需要先了解线程,而线程依赖于进程而存在,所以先了解进程. 什么是进程 进程就是正在运行的程序.是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空 ...