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外 ...
随机推荐
- bzoj 1858: [Scoi2010]序列操作 || 洛谷 P2572
记一下:线段树占空间是$2^{ceil(log2(n))+1}$ 这个就是一个线段树区间操作题,各种标记的设置.转移都很明确,只要熟悉这类题应该说是没有什么难度的. 由于对某区间set之后该区间原先待 ...
- 题解报告:hdu 1229 还是A+B
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1229 Problem Description 读入两个小于10000的正整数A和B,计算A+B.需要注 ...
- AJPFX总结面向对象思想设计原则
面向对象思想设计原则 A.单一职责原则 其实就是开发人员经常说的”高内聚,低耦合” 也就是说,每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原 ...
- 一个完整的http请求分析
Request URL:http://localhost:8080/test.jhtmlRequest Method:POSTStatus Code:200 OKRemote Address:[::1 ...
- CCF|分蛋糕|Java
import java.util.Scanner; public class tyt { public static void main(String[] args) { Scanner in = n ...
- 网站推广--Html关键词代码解说
html的meta标签 1. meta标签是内嵌在你网页中的特殊html标签,包含着你有关于你网页的一些隐藏信息.Meat标签的作用是向搜索引擎解释你的网页是有关哪方面信息的.对于高级的搜索引擎来说, ...
- Node.js——重定向
- matlab中数据类型
在MATLAB中有15种基本数据类型,分别是8种整型数据.单精度浮点型.双精度浮点型.逻辑型.字符串型.单元数组.结构体类型和函数句柄.这15种基本数据类型具体如下. 有符号整数型:int8,int1 ...
- iTOP-4412开发板-实战教程-ssh服务器移植到arm开发板
本文转自迅为开发板:http://www.topeetboard.com 在前面实战教程中,移植了“串口文件传输工具”,整个移植过程是比较简单的,而且我 们没有做任何协议方面的了解,只是“配置”+“编 ...
- Linux下 SpringBoot jar项目后台运行、查看、停用
运行java jar: nohup java -jar **-0.0.1-SNAPSHOT.jar & 查看进程: 采用top或者ps aux命令.一般 如果后台是springboot,jar ...