STM32F407 跑马灯 库函数版 个人笔记
原理图:
MCU在开发板原理图的第二页,LED在开发板原理图的第三页
由图可知,PF9 ,PF10 若输出低电平则灯亮,高电平则灯灭


选推挽输出
代码步骤
使能IO口时钟。
调用函数RCC_AHB1PeriphClockCmd();不同的外设调用的时钟使能函数可能不一样初始化IO口模式。调用函数GPIO_Init();
操作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 跑马灯 库函数版 个人笔记的更多相关文章
- STM32F407 跑马灯 寄存器版 个人笔记
更多原理请参考跑马灯 库函数版 个人笔记 步骤 使能IO口时钟.配置相关寄存器寄存器RCC->AHB1ENR 初始化IO口模式.配置四个配置寄存器 GPIOx_MODER/ GPIOx_OTYP ...
- STM32F407 按键输入实验 库函数版 个人笔记
读取IO口输入的函数: STM32F4 的 IO口做输入使用的时候,是通过调用函数 GPIO_ReadInputDataBit()来读取 IO 口的状态的.了解了这点,就可以开始我们的代码编写了. 按 ...
- STM32F407 跑马灯实验
1.库函数版本调用的函数有哪些?对应的源文件/头文件是哪个? 库函数 源文件 头文件 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE) stm3 ...
- Android 高级UI设计笔记05:使用TextView实现跑马灯的效果
1. 使用TextView属性实现跑马灯的效果: (1). 新建一个Android工程,命名为"MarqueeTextViewDemo",如下: (2). 来到activity_m ...
- Android 开发笔记___textvieww__跑马灯效果
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- Vue学习笔记四:跑马灯效果
目录 跑马灯原理 HTML 箭头函数 计时器 跑马灯效果 跑马灯原理 先讲讲跑马灯的原理,就是一行字,会滚动,思路是这样的,使用substring方法,一个获取字符串的第一个字,一个获取1后面所有的字 ...
- TextView的跑马灯效果(AS开发实战第二章学习笔记)
TextView的跑马灯效果跑马灯用到的属性与方法说明singleLine 指定文本是否单行显示ellipsize 指定文本超出范围后的省略方式focusable 指定是否获得焦点,跑马灯效果要求设置 ...
- canvas九宫格跑马灯
canvas九宫格跑马灯抽奖 之前用dom写了一版,部分 安卓机会卡顿,换用canvas dom版本九宫格抽奖
- 为 Xamarin.Forms 做个跑马灯控件
前段时间,私下用 Xamarin.Forms 做了个商业项目的演示版.很多被国内App玩坏了的控件/效果,XF上都没有或是找不到对应的实现,没有办法只能亲自上阵写了几个,效果还行,就是有BUG. 这个 ...
随机推荐
- linux下的日志压缩脚本
linux下的日志压缩脚本: #!/bin/bash #第一步:先定义项目列表如下: projects="project-a project-b project-c project-d&qu ...
- 扩展KMP的应用
扩展KMP的应用: 给出模板串S和串T,长度分别为Slen和Tlen,要求在线性时间内,对于每个S[i](0<=i<Slen),求出S[i..Slen-1]与T的 最长公共前缀长度,记为e ...
- 洛谷 P2062 分队问题
这题太毒了....一开始就是死活想不到,结果看了很多遍题解,重新做的时候还是做不出来.. 好像有一点被错误的题解误导了? #include<cstdio> #include<algo ...
- 417 Pacific Atlantic Water Flow 太平洋大西洋水流
详见:https://leetcode.com/problems/pacific-atlantic-water-flow/description/ C++: class Solution { publ ...
- math数学函数
Console.WriteLine("Math.Sign(12)--->{0})", Math.Sign(12)) Console.WriteLine("math. ...
- jq判断上下滚动
$(document).ready(function(){ var p=0,t=0; $(window).scroll(function(e){ p = $(this).scrollTop(); if ...
- serialize可以获取form表单里面的数值
serialize属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- 如何安装sql server2005 windows 8
如何安装sql server2005 windows 8 1 从网上下载到本地文件 ,这里使用的是cs_sql_2005_dev_all_dvd 安装版. 2. 点击下图所表示进行安装 3. ...
- spring-mvc hello world (1)
我学习一个程序,都是从DEMO开始的. 先不了解SPRING-MVC的原理,但一些小的概念还是需要了解的.由于之前有过SSH的工程经验,故基本的东东,不在叙述. 1.准备环境 JAR包:
- swal用法
swal({ title: "确认删除?", text: "Your will not be able to recover this imaginary fil ...
