STM32F407 跑马灯 寄存器版 个人笔记
更多原理请参考跑马灯 库函数版 个人笔记
步骤
使能IO口时钟。配置相关寄存器寄存器
RCC->AHB1ENR初始化IO口模式。配置四个配置寄存器
GPIOx_MODER/ GPIOx_OTYPER/ GPIOx_OSPEEDR/ GPIOx_PUPDR操作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 跑马灯 寄存器版 个人笔记的更多相关文章
- STM32F407 跑马灯 库函数版 个人笔记
原理图: MCU在开发板原理图的第二页,LED在开发板原理图的第三页 由图可知,PF9 ,PF10 若输出低电平则灯亮,高电平则灯灭 选推挽输出 代码步骤 使能IO口时钟. 调用函数RCC_AHB1P ...
- stm32寄存器版学习笔记07 ADC
STM32F103RCT有3个ADC,12位主逼近型模拟数字转换器,有18个通道,可测量16个外部和2个内部信号源.各通道的A/D转换可以单次.连续.扫描或间断模式执行. 1.通道选择 stm32把A ...
- stm32寄存器版学习笔记06 输入捕获(ETR脉冲计数)
STM32外部脉冲ETR引脚:TIM1-->PA12;TIMER2-->PA0:TIMER3-->PD2;TIMER4-->PE0… 1.TIM2 PA0计数 配置步骤 ①开启 ...
- stm32寄存器版学习笔记05 PWM
STM32除TIM6和TIM7外都可以产生PWM输出.高级定时器TIM1和TIM8可以同时产生7路PWM,通用定时器可以产生4路PWM输出. 1.TIM1 CH1输出PWM配置步骤 ①开启TIM1时钟 ...
- stm32寄存器版学习笔记03 外部中断
stm32的每个I/O口都可以作为中断输入,要把I/O口设置为外部中断输入,必须将I/O口设置为上拉/下拉输入 或 浮空输入(但浮空的时候外部一定要带上拉或下拉电阻,否则可能导致 中断不停的触发),干 ...
- stm32寄存器版学习笔记10 SPI
SPI(Serial Peripheral Interface),串行外围设备接口.SPI是一种高速的.全双工.同步的通信总线. SPI接口一般使用4条线通信: MISO 主设备数据输入,从设备数据输 ...
- stm32寄存器版学习笔记08 DMA
DMA(Direct Memory Access),直接存储器访问.DMA传输方式无需CPU直接控制传输,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU效率大大提高.stm32f10 ...
- stm32寄存器版学习笔记04 定时计数器中断
STM32共有8个定时计数器,其中TIME1和TIME8是高级定时器,TIME2~TIME5是通用定时器,TIME6和TIME7是基本定时器.以TIME3为例总结定时计数器的基本用法. 1.TIM3的 ...
- stm32寄存器版学习笔记02 串口通信
stm32F103RCT6提供5路串口.串口的使用,只要开启串口时钟,设置相应的I/O口的模式,然后配置下波特率.数据位长度.奇偶校验等信息,即可使用. 1.串口的配置步骤 ①串口时钟使能 APB2外 ...
随机推荐
- python网络爬虫之四简单爬取豆瓣图书项目
一.爬虫项目一: 豆瓣图书网站图书的爬取: import requests import re content = requests.get("https://book.douban.com ...
- Wannafly挑战赛10:A题:小H和迷宫
题目描述 小H陷入了一个迷宫中,迷宫里有一个可怕的怪兽,血量有N点,小H有三瓶魔法药水,分别可以使怪兽损失a%.b%.c%的血量(之后怪兽的血量会向下取整),小H想合理地运用这三瓶药水,使 ...
- 【小程序】基于.NET CORE2.1 的 微信开放平台 第三方平台开发 教程一 准备工作
微信第三方平台概述 公众平台第三方平台是为了让公众号或小程序运营者,在面向垂直行业需求时,可以一键授权给第三方平台(并且可以同时授权给多家第三方),通过第三方平台来完成业务,开放给所有通过开发者资质认 ...
- Linux终端下对话
1.首先查看当前账户 [hadoop@weekend01 ~]$ who hadoop tty1 2016-11-14 09:31 (:0) hadoop pts/0 ...
- 移动端UI自动化Appium测试——获取APK的Package及Activity属性值
1.如果有代码环境,直接在AndroidManifest.xml中查找: package值: Activity值: 2.如果没有开发代码,直接用命令获取: cmd进入到 android-sdk-win ...
- mysql自动获取时间日期
实现方式: 1.将字段类型设为 TIMESTAMP 2.将默认值设为 CURRENT_TIMESTAMP 举例应用: 1.MySQL 脚本实现用例 --添加CreateTime 设置默认时间 C ...
- Scala基础篇-01变量,数据类型
一.Scala变量 共有3种变量修饰符: val: 可变 var: 不可变 lazy val: 第一次应用时才计算 二.Scala的数据类型 1)类型不匹配:高精度数值赋给低精度数据类型. 2)Uni ...
- IDEA安装使用
下载地址: https://www.jetbrains.com/idea/download/previous.html 这里我下载的是:2016.3.8版本的 安装: 安装成功后,需要秘钥的话,在 h ...
- php高效率对一维数组进行去重
$input = array("a" => "green", "red", "b" => "gre ...
- 未来IT行业的掌控者
(题外话,我发现很多高手都喜欢讲代码实现,喜欢贴代码贴图,我个人不大喜欢这种方式,我觉得最重要的是思想,是想法,具体的实现代码实现步骤由读者自己去实现.这纯属我个人喜好,望各大内高手勿喷,可能是本人水 ...