更多原理请参考跑马灯 库函数版 个人笔记

步骤

  1. 使能IO口时钟。配置相关寄存器寄存器RCC->AHB1ENR

  2. 初始化IO口模式。配置四个配置寄存器

    GPIOx_MODER/ GPIOx_OTYPER/ GPIOx_OSPEEDR/ GPIOx_PUPDR

  3. 操作IO口,输出高低电平。配置寄存器GPIOX_ODR或者BSRRL/BSRRH。

代码

led.c

#include "led.h"
#include "stm32f4xx.h"
void LED_Init(){
//1.使能pf9 和pf 10 的时钟
//打开中文参考手册,找到时钟使能寄存器ah
/*
6.3.12 RCC AHB1 外设时钟使能寄存器 (RCC_AHB1ENR)
*/
//查手册知,PF是第五位,故第五位置1,其余位不变
RCC->AHB1ENR |= 1<<5; //2.GPIO_init
//GPIOF)_9
GPIOF->MODER &= ~(3<<2*9); //查手册知,19,18位为01(通用输出模式)先都置为0 ; gpiof9,每个引脚两位
GPIOF->MODER |= 1<<2*9; //再把18位置为1 GPIOF->OSPEEDR &= ~(3<<2*9); //19~18 10 fast 50MHz
GPIOF->OSPEEDR |= 2<<2*9; GPIOF->PUPDR &= ~(3<<2*9); //查手册知,19,18位为01
GPIOF->PUPDR|= 1<<2*9; GPIOF->OTYPER &= ~(1<<9); //第九\十位为0 //GPIOF)_10
GPIOF->MODER &= ~(3<<2*10); //查手册知,19,18位为01(通用输出模式)先都置为0 ; gpiof9,每个引脚两位
GPIOF->MODER |= 1<<2*10; //再把18位置为1 GPIOF->OSPEEDR &= ~(3<<2*10); //19~18 10 fast 50MHz
GPIOF->OSPEEDR |= 2<<2*10; GPIOF->PUPDR &= ~(3<<2*10); //查手册知,19,18位为01
GPIOF->PUPDR|= 1<<2*10; GPIOF->OTYPER &= ~(1<<10); //第九\十位为0 //3.输出高低电平
GPIOF->ODR |= 1<<9;
GPIOF->ODR |= 1<<10;
}

led.h

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

main.c

#include "stm32f4xx.h"
#include "led.h"
#include "delay.h"
int main()
{
delay_init(168);
LED_Init();
while(1){
Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhz,(先开始没加这一句,延时速度很慢)
GPIOF->ODR &=~(1<<9);
GPIOF->ODR |=1<<10;
delay_ms(500); GPIOF->ODR |=1<<9;
GPIOF->ODR &=~(1<<10);
delay_ms(500);
}
}

STM32F407 跑马灯 寄存器版 个人笔记的更多相关文章

  1. STM32F407 跑马灯 库函数版 个人笔记

    原理图: MCU在开发板原理图的第二页,LED在开发板原理图的第三页 由图可知,PF9 ,PF10 若输出低电平则灯亮,高电平则灯灭 选推挽输出 代码步骤 使能IO口时钟. 调用函数RCC_AHB1P ...

  2. stm32寄存器版学习笔记07 ADC

    STM32F103RCT有3个ADC,12位主逼近型模拟数字转换器,有18个通道,可测量16个外部和2个内部信号源.各通道的A/D转换可以单次.连续.扫描或间断模式执行. 1.通道选择 stm32把A ...

  3. stm32寄存器版学习笔记06 输入捕获(ETR脉冲计数)

    STM32外部脉冲ETR引脚:TIM1-->PA12;TIMER2-->PA0:TIMER3-->PD2;TIMER4-->PE0… 1.TIM2 PA0计数 配置步骤 ①开启 ...

  4. stm32寄存器版学习笔记05 PWM

    STM32除TIM6和TIM7外都可以产生PWM输出.高级定时器TIM1和TIM8可以同时产生7路PWM,通用定时器可以产生4路PWM输出. 1.TIM1 CH1输出PWM配置步骤 ①开启TIM1时钟 ...

  5. stm32寄存器版学习笔记03 外部中断

    stm32的每个I/O口都可以作为中断输入,要把I/O口设置为外部中断输入,必须将I/O口设置为上拉/下拉输入 或 浮空输入(但浮空的时候外部一定要带上拉或下拉电阻,否则可能导致 中断不停的触发),干 ...

  6. stm32寄存器版学习笔记10 SPI

    SPI(Serial Peripheral Interface),串行外围设备接口.SPI是一种高速的.全双工.同步的通信总线. SPI接口一般使用4条线通信: MISO 主设备数据输入,从设备数据输 ...

  7. stm32寄存器版学习笔记08 DMA

    DMA(Direct Memory Access),直接存储器访问.DMA传输方式无需CPU直接控制传输,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU效率大大提高.stm32f10 ...

  8. stm32寄存器版学习笔记04 定时计数器中断

    STM32共有8个定时计数器,其中TIME1和TIME8是高级定时器,TIME2~TIME5是通用定时器,TIME6和TIME7是基本定时器.以TIME3为例总结定时计数器的基本用法. 1.TIM3的 ...

  9. stm32寄存器版学习笔记02 串口通信

    stm32F103RCT6提供5路串口.串口的使用,只要开启串口时钟,设置相应的I/O口的模式,然后配置下波特率.数据位长度.奇偶校验等信息,即可使用. 1.串口的配置步骤 ①串口时钟使能 APB2外 ...

随机推荐

  1. Linux环境下Apache反向代理金蝶中间件Apusic集群

    操作系统:RedHat Enterprise Linux 5.6 文档参考:<金蝶Apusic应用服务器 帮助手册| IX. Apusic Http Server使用指南> 一.金蝶中间件 ...

  2. C# 判断文件和文件夹是否存在并创建

    C# 判断文件和文件夹是否存在并创建 using System; using System.Data; using System.Configuration; using System.Collect ...

  3. C. Timofey and a tree 观察题 + dfs模拟

    http://codeforces.com/contest/764/problem/C 题意:在n个顶点中随便删除一个,然后分成若干个连通子图,要求这若干个连通子图的颜色都只有一种. 记得边是双向的, ...

  4. VS2012出现加载失败时的解决办法 win7同样适用

    今天更新了WIN8系统补丁,然后就出现了大量的问题,特别是经常用的软件像VS2012 老是加载失败,还说是缺少什么包一类的,弄了好长段时间终于解决了,现在将经验分享下 工具/原料 VS2012+WIN ...

  5. 学习笔记 第八章 使用CSS美化列表

    第8章  使用CSS美化列表 8.1 列表的基本结构 在HTML中,列表结构可以分为两种基本类型:有序列表和无序列表.使用标签如下: <ul>...</ul>:标识无序列表: ...

  6. flex弹性布局操练2

    上一个是练习的1个内元素的,这次练习两个元素的. ul.box1 { list-style:none; background-color:black; display:flex; justify-co ...

  7. 安卓(Android )软键盘的控制(显示和隐藏)

    Activity 启动时软键盘默认状态 在清单文件(manifest .xml)中可以通过在 Activity 标签中增加属性控制软键盘的默认状态: android:windowSoftInputMo ...

  8. provider模式

    最近看代码有所感想吧.当底层API,发生变化时,可以使用Provider模式.既然是模式就一定的股则. 1.该模式对原有接口的封装. 2.该模式实现对API的封装,不显示细节,从而取消依赖关系. 3. ...

  9. AndroidStudio启动App时,数据取不到。

    最近在用AndroidStudio开发App的时候,所连的服务器如果是换成本机上的,那么启动App的时候数据就读取不出来,连其它电脑上的服务器就是正常的,如下: 05-11 09:36:57.178 ...

  10. C#斐波那契数列递归算法

    public static int Foo(int i)        {            if (i < 3)            {                return 1; ...