用寄存器点亮灯

①查看灯引脚

由开发板的原理图可知:LED0灯对应PF9引脚。

②查看手册,存储器映射定义好对应寄存器的地址

stm32f4xx.h

cs 复制代码
#define PERIPH_BASE      ((unsigned int)0x40000000)
	
#define AHB1PERIPH_BASE  (PERIPH_BASE + 0x00020000)

#define GPIOF_BASE       (AHB1PERIPH_BASE + 0x1400)
#define GPIOF_MODER 	 *(unsigned int*)(GPIOF_BASE+0x00)
#define GPIOF_OTYPER   *(unsigned int*)(GPIOF_BASE+0x04)
#define GPIOF_OSPEEDR *(unsigned int*)(GPIOF_BASE+0x08)
#define GPIOF_PUPDR *(unsigned int*)(GPIOF_BASE+0x0C)
#define GPIOF_IDR *(unsigned int*)(GPIOF_BASE+0x10)
#define GPIOF_ODR *(unsigned int*)(GPIOF_BASE+0x14)
#define GPIOF_BSRR 		 *(unsigned int*)(GPIOF_BASE+0x18)
#define GPIOF_LCKR *(unsigned int*)(GPIOF_BASE+0x1C)
#define GPIOF_AFRL *(unsigned int*)(GPIOF_BASE+0x20)
#define GPIOF_AFRH *(unsigned int*)(GPIOF_BASE+0x24)
	
#define RCC_BASE 		(AHB1PERIPH_BASE + 0x3800)
#define RCC_AHB1ENR 	*(unsigned int*)(RCC_BASE+0x30)

	

③防止编译报错

在main文件里,定义空白函数,骗过编译器不报错。

④查看相关手册,定义引脚

(1)使能GPIOF时钟

(2)将PF9引脚定义成通用输出模式

可知:MODER9设置01

(3)将PF9设置成输出推挽模式

(4)设置高速输出

(5)PF9设置上拉

(上下拉模式不影响引脚电平变化,但上拉能小幅提高电流输出能力)

(6)设置电平

查看原理图可知设置低电平灯亮

初始化:

循环:

⑤代码

main.c

cs 复制代码
#include "stm32f4xx.h"


void SystemInit(void)
{
	
}

/*******************************************************************************
* 函 数 名         : main
* 函数功能		   : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/

int main()
{
	RCC_AHB1ENR |= (1<<5);
	GPIOF_MODER &= ~(0x03<<9*2);
	GPIOF_MODER |= (1<<9*2);
	GPIOF_OTYPER &= ~(1<<9);
	GPIOF_OTYPER |= (0<<9);
	GPIOF_OSPEEDR &= ~(0x03<<9*2);
	GPIOF_OSPEEDR |= (0x03<<9*2);
	GPIOF_PUPDR &= ~ (0x03<<9*2);
	GPIOF_PUPDR |= (0x01<<9*2);
	GPIOF_BSRR &= ~(1<<(16+9));
	GPIOF_BSRR &= ~(1<<(9));
	while(1)
	{
		//点亮LED0灯,PF9
		GPIOF_BSRR |= (1<<(16+9));
		
	}
}
相关推荐
cmpxr_3 小时前
【单片机】STM32的启动流程(Keil)
stm32·单片机·嵌入式硬件
广药门徒3 小时前
嵌入式常用通信协议速率对比及布线要点全解析
单片机·嵌入式硬件
cmpxr_5 小时前
【单片机】RAM和ROM
单片机·嵌入式硬件
信息安全专家6 小时前
sigmastar SSD222D编译问题总结2-dash问题
linux·嵌入式硬件·dash
yong99907 小时前
可自动调整的24V步进电机设计方案
单片机·嵌入式硬件
R6bandito_8 小时前
自实现FLASH读取函数中的隐式类型转换bug踩坑记录
c语言·开发语言·经验分享·stm32·单片机·mcu·bug
Bin Watson8 小时前
STM32 HRTIM 学习心得(3):SVPWM 输出
stm32·单片机·嵌入式硬件
perseverance528 小时前
MCU串口实现串行flash编程器功能
单片机·flash编程
421!9 小时前
C 语言学习笔记——11(函数指针与指针函数)
c语言·开发语言·笔记·单片机·学习
Redemption9 小时前
嵌软面试每日一阅----freeRTOS(三)
stm32·单片机·嵌入式硬件·mcu·物联网·面试·51单片机