stm32用寄存器写一个跑马灯

1.新建工程
(1)这一步可以多看看视频熟悉熟悉

2.编写LED初始化函数和头文件

(1)led.c文件

#include "led.h"
#include "stm32f4xx.h"

void LED_Init(void)
{
	RCC->AHB1ENR |= 1<<5;
	//GPIO9
	GPIOF->MODER &= ~(3<<2*9);		//端口模式寄存器(00:输入(复位状态)01:通用输出模式 10:复用功能模式 11:模拟模式)
	GPIOF->MODER |= 1<<(2*9);
	GPIOF->OSPEEDR &= ~(3<<2*9);	//端口输出速度寄存器(00: 2 MHz(低速)01: 25 MHz(中速)10: 50 MHz(快速)
																//11: 30 pF 时为 100 MHz(高速)( 15 pF 时为 80 MHz 输出(最大速度)))
	GPIOF->OSPEEDR |= 2<<(2*9);
	GPIOF->OTYPER &= ~(1<<9);			//端口输出类型寄存器(0:输出推挽(复位状态)1:输出开漏)
	GPIOF->PUPDR &= ~(3<<2*9);
	GPIOF->PUPDR |= 1<<(2*9);			//端口上下拉寄存器
	GPIOF->ODR |= 1<<9;	//1				// 端口输出数据寄存器 (端口输出数据)
	//GPIOF->ODR &= ~(1<<9);	//0
	
	//GPIO10
	GPIOF->MODER &= ~(3<<2*10);
	GPIOF->MODER |= 1<<(2*10);
	GPIOF->OSPEEDR &= ~(3<<2*10);
	GPIOF->OSPEEDR |= 2<<(2*10);
	GPIOF->OTYPER &= ~(1<<10);
	GPIOF->PUPDR &= ~(3<<2*10);
	GPIOF->PUPDR |= 1<<(2*10);
	//GPIOF->ODR |= 1<<10;	//1
	GPIOF->ODR &= ~(1<<10);	//0
}

(2)led.h文件

#ifndef _LED__H
#define _LED__H

void LED_Init(void);

#endif

3.编写main函数实现功能

#include "sys.h"
#include "usart.h" 
#include "delay.h" 
#include "led.h"

int main(void)
{
	delay_init(168);
	LED_Init();
	while(1)
	{
		GPIOF->ODR &= ~(1<<9);
		GPIOF->ODR |= (1<<10);
		delay_ms(50);
		GPIOF->ODR |= (1<<9);
		GPIOF->ODR &= ~(1<<10);
		delay_ms(50);
	}
}

注意:熟练运用参考手册是重点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值