前言:我们学习一门新语言的时候都是先从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. Codeforces Round #597 (Div. 2) E. Hyakugoku and Ladders 概率dp

    E. Hyakugoku and Ladders Hyakugoku has just retired from being the resident deity of the South Black ...

  2. windows7 php 环境架设

    参考 https://www.jb51.net/article/38048.htm   常见问题解决方案     https://blog.csdn.net/w_yunlong/article/det ...

  3. EF Core 3.0 Preview 9 的2个小坑

    之前我们的数据库服务器使用的是 SQL Server 2008 R2 ,由于从 EF Core 3.0 Preview 6 开始不支持 UseRowNumberForPaging ,只能停留在 EF ...

  4. DirectShow 应用开发过程

    本文准备总结一些 Direct Show 常用的API接口函数,方便以后查询回忆.如果这里没有你想了解的函数,你可以自行搜索MSDN + 函数名去 MSDN 查找你想要了解的函数,也可以查看百度百科相 ...

  5. vue 开发常见问题解决大全

    vue添加favicon.ico,包含开发环境和生产环境显示. 1.把图标放在下项目的根目录.. 2.修改build文件夹下面的webpack.dev.conf.js(开发环境) 和webpack.p ...

  6. C# 如何添加自定义键盘处理事件 如何配置app.config ? | csharp key press event tutorial and app.config

    本文首发于个人博客https://kezunlin.me/post/9f24ebb5/,欢迎阅读最新内容! csharp key press event tutorial and app.config ...

  7. 【面试】Java中sleep和wait的区别

    1.sleep方法是Thread类的静态方法: wait方法是Object类的成员方法 2.sleep方法使当前线程暂停执行指定的时间,让出cpu给其他线程,但是它的监控状态依然保持着,当指定的时间到 ...

  8. CSP-S 爆零记

    抱歉,这么晚才更. 事实是:我都没有去 所以爆零了 QwQ

  9. 【BZOJ4823】[CQOI2017]老C的方块(网络流)

    [BZOJ4823][CQOI2017]老C的方块(网络流) 题面 BZOJ 题解 首先还是给棋盘进行黑白染色,然后对于特殊边左右两侧的格子单独拎出来考虑. 为了和其他格子区分,我们把两侧的这两个格子 ...

  10. 【HDU6037】Expectation Division(动态规划,搜索)

    [HDU6037]Expectation Division(动态规划,搜索) 题面 Vjudge 你有一个数\(n\),\(n\le 10^{24}\),为了方便会告诉你\(n\)分解之后有\(m\) ...