原理图:

MCU在开发板原理图的第二页,LED在开发板原理图的第三页

由图可知,PF9 ,PF10 若输出低电平则灯亮,高电平则灯灭



选推挽输出

代码步骤

  1. 使能IO口时钟。

    调用函数RCC_AHB1PeriphClockCmd();不同的外设调用的时钟使能函数可能不一样

  2. 初始化IO口模式。调用函数GPIO_Init();

  3. 操作IO口,输出高低电平。

    GPIO_SetBits();

    GPIO_ResetBits();

实现步骤

1.删掉FWLIB中不用的源文件(以提高编译速度),保留misc,rcc , gpio , uart

2.新建hardward文件夹,其中新建led文件夹,其中新建led.c 和led.h,分别引入工程

3.led.h中:

#ifndef __LED_H
#define __LED_H
void LED_Init(void);
#endif

4.led.c中,每个函数用gotodefinition查看定义

怎么写函数里的参数呢?找到assert_param 函数

assert_param(IS_RCC_AHB1_CLOCK_PERIPH(RCC_AHB1Periph));

其中最里层的括号里会出现参数,外面用一个宏包着

对包着参数的那个宏,(如下面的IS_RCC_AHB1_CLOCK_PERIPH)goto definition,可以看到其定义

1)如果直接是A||B

例如

#define IS_FUNCTIONAL_STATE(STATE) (((STATE) ==DISABLE) || ((STATE) == ENABLE))

那么可选参数即为A和B

另一种情况:

2)如果不是那样,而是比较复杂,里面直接一些十六进制,就往它上面看,基本就是可选值

例如

#define IS_RCC_AHB1_CLOCK_PERIPH(PERIPH) ((((PERIPH) & 0x810BE800) == 0x00) && ((PERIPH) != 0x00))



如图这些define的内容就是该参数的可选项(从注释也可以看出)

完整代码

main.c

#include "stm32f4xx.h"
#include "led.h"
#include "delay.h" int main(void)
{
LED_Init();
delay_init(168); //时钟为168M
while(1){
GPIO_ResetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
delay_ms(500);
GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
delay_ms(500);
}
}

led.c

#include "led.h"
#include "stm32f4xx.h" //固件库
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//1.使能gpio的时钟
//FWLIB , stm32f4xx_rcc.h
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE); //时钟使能函数
//2.GPIO初始化
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出(强高低电平)
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//上拉 (默认情况下高电平,led不亮)
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOF,&GPIO_InitStructure);
//3.置为高电平(默认不亮)
GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);

led.h

#ifndef __LED_H
#define __LED_H
void LED_Init(void);
#endif

STM32F407 跑马灯 库函数版 个人笔记的更多相关文章

  1. STM32F407 跑马灯 寄存器版 个人笔记

    更多原理请参考跑马灯 库函数版 个人笔记 步骤 使能IO口时钟.配置相关寄存器寄存器RCC->AHB1ENR 初始化IO口模式.配置四个配置寄存器 GPIOx_MODER/ GPIOx_OTYP ...

  2. STM32F407 按键输入实验 库函数版 个人笔记

    读取IO口输入的函数: STM32F4 的 IO口做输入使用的时候,是通过调用函数 GPIO_ReadInputDataBit()来读取 IO 口的状态的.了解了这点,就可以开始我们的代码编写了. 按 ...

  3. STM32F407 跑马灯实验

    1.库函数版本调用的函数有哪些?对应的源文件/头文件是哪个? 库函数 源文件 头文件 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE) stm3 ...

  4. Android 高级UI设计笔记05:使用TextView实现跑马灯的效果

    1. 使用TextView属性实现跑马灯的效果: (1). 新建一个Android工程,命名为"MarqueeTextViewDemo",如下: (2). 来到activity_m ...

  5. Android 开发笔记___textvieww__跑马灯效果

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  6. Vue学习笔记四:跑马灯效果

    目录 跑马灯原理 HTML 箭头函数 计时器 跑马灯效果 跑马灯原理 先讲讲跑马灯的原理,就是一行字,会滚动,思路是这样的,使用substring方法,一个获取字符串的第一个字,一个获取1后面所有的字 ...

  7. TextView的跑马灯效果(AS开发实战第二章学习笔记)

    TextView的跑马灯效果跑马灯用到的属性与方法说明singleLine 指定文本是否单行显示ellipsize 指定文本超出范围后的省略方式focusable 指定是否获得焦点,跑马灯效果要求设置 ...

  8. canvas九宫格跑马灯

    canvas九宫格跑马灯抽奖 之前用dom写了一版,部分 安卓机会卡顿,换用canvas dom版本九宫格抽奖

  9. 为 Xamarin.Forms 做个跑马灯控件

    前段时间,私下用 Xamarin.Forms 做了个商业项目的演示版.很多被国内App玩坏了的控件/效果,XF上都没有或是找不到对应的实现,没有办法只能亲自上阵写了几个,效果还行,就是有BUG. 这个 ...

随机推荐

  1. poj3735Training little cats

    链接 构造矩阵 快速幂求解 构造矩阵a[i]为每个cati所拥有的花生总数 这里多加一维用来求和,具体是怎么求得可以看下面的一组例子 假设有3个cat a[] = {1,0,0,0} 构造单位矩阵来保 ...

  2. vs2015如何添加webservice 的web服务引用

  3. Asp.Net识别手机访问

    在VS创建WEB应用程序时会有一个微软开发的典型web应用程序 在根目录有个用户控件用来实现切换手机和电脑 其中有个微软开发的类和方法用来专门判断移动设备和桌面设备 在Microsoft.AspNet ...

  4. BOW-js浏览器对象模型

  5. R in action读书笔记(14)第十一章 中级绘图 之一:散点图(高能预警)

    第十一章中级绘图 本章内容: 二元变量和多元变量关系的可视化 绘制散点图和折线图 理解相关图 学习马赛克图和关联图 本章用到的函数有: plot hexbin ablines iplot scatte ...

  6. js 日期时间大小比较

    <body> 开始时间:<input onfocus="setday(this)" id="startTime" name="sta ...

  7. vba,excel,网址提取名字与链接url

    '宏操作 Sub 复制超级链接() '这里控制读取A列的第1到10行,你根据自已的要求修改一下起始和结束行数 ).Hyperlinks.Count > ).Value = Cells(a, ). ...

  8. Sublime Text 2/3 输入法修复[Ubuntu(Debian)]

    一直想找一个可以替代sublime的IDE主要还是hi因为没有好的方法解决中文输入的问题, 今天在网上找到一个非常不错的方法,亲自实验是可行的,就记录下来了,我的系统是ubuntu16.04 Subl ...

  9. 【译】x86程序员手册37-第10章 初始化

    Chapter 10 Initialization 第10章 初始化 After a signal on the RESET pin, certain registers of the 80386 a ...

  10. Bootstrap modal使用及点击外部不消失的解决方法

    这篇文章主要为大家详细介绍了Bootstrap modal使用及点击外部不消失的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了Bootstrap modal使用及点击 ...