博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STM32F407 跑马灯 寄存器版 个人笔记
阅读量:5231 次
发布时间:2019-06-14

本文共 1696 字,大约阅读时间需要 5 分钟。

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

步骤

  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_Hvoid 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);    }}

转载于:https://www.cnblogs.com/YuQiao0303/p/10006174.html

你可能感兴趣的文章
oracle中anyData数据类型的使用实例
查看>>
C++对vector里面的元素排序及取任意重叠区间
查看>>
软件测试——性能测试总结
查看>>
12.4站立会议
查看>>
Java Concurrentmodificationexception异常原因和解决方法
查看>>
客户端访问浏览器的流程
查看>>
codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
查看>>
c++||template
查看>>
[BZOJ 5323][Jxoi2018]游戏
查看>>
编程面试的10大算法概念汇总
查看>>
Vue
查看>>
python-三级菜单和购物车程序
查看>>
条件断点 符号断点
查看>>
VMware12 + Ubuntu16.04 虚拟磁盘扩容
查看>>
设计模式——设计模式概述
查看>>
封装一个获取module.exports内容的方法
查看>>
动态连接库
查看>>
ServletContext 与application的异同
查看>>
水平垂直居中
查看>>
CSS3教程:border-image属性
查看>>