STM32F429 >> 1. LED_RGB

版权声明:如需转载请标注 https://blog.csdn.net/weixin_40973138/article/details/85041908

本文代码在GitHub 上有:
https://github.com/Waao666/STM32-1.-LED_RGB
在这里插入图片描述

stm32f4xx.h

//外设寄存器
#define PERIPH_BASE         ((unsigned int)0x40000000)
	
//总线寄存器
#define APB1PERIPH_BASE     PERIPH_BASE
#define APB2PERIPH_BASE     (PERIPH_BASE + 0x00010000)
#define AHB1PERIPH_BASE     (PERIPH_BASE + 0x00020000)
#define AHB2PERIPH_BASE     (PERIPH_BASE + 0x10000000)

//GPIO 寄存器
#define GPIOA_BASE          AHB1PERIPH_BASE
#define GPIOB_BASE          (AHB1PERIPH_BASE + 0x00000400)
#define GPIOC_BASE          (AHB1PERIPH_BASE + 0x00000800)
#define GPIOD_BASE          (AHB1PERIPH_BASE + 0x00000C00)
#define GPIOE_BASE          (AHB1PERIPH_BASE + 0x00001000)
#define GPIOF_BASE          (AHB1PERIPH_BASE + 0x00001400)
#define GPIOG_BASE          (AHB1PERIPH_BASE + 0x00001800)
#define GPIOH_BASE          (AHB1PERIPH_BASE + 0x00001C00)
#define GPIOI_BASE          (AHB1PERIPH_BASE + 0x00002000)
//复位和时钟控制
#define RCC_BASE            (AHB1PERIPH_BASE + 0x00003800)

//外设时钟使能寄存器
#define RCC_AHB1ENR         *((unsigned int *)(RCC_BASE + 0X30))

//GPIO 模块寄存器
#define GPIOH_MODER         *(unsigned int*)GPIOH_BASE
#define GPIOH_OTYPER        *(unsigned int*)(GPIOH_BASE + 0x04)
#define GPIOH_OSPEEDR       *(unsigned int*)(GPIOH_BASE + 0x08)
#define GPIOH_PUPDR         *(unsigned int*)(GPIOH_BASE + 0x0C)
#define GPIOH_IDR           *(unsigned int*)(GPIOH_BASE + 0x10)
#define GPIOH_ODR           *(unsigned int*)(GPIOH_BASE + 0x14)
//端口置位/复位寄存器
#define GPIOH_BSRR          *(unsigned int*)(GPIOH_BASE + 0x18)
#define GPIOH_LCKR          *(unsigned int*)(GPIOH_BASE + 0x1C)
#define GPIOH_AFRL          *(unsigned int*)(GPIOH_BASE + 0x20)
#define GPIOH_AFRH          *(unsigned int*)(GPIOH_BASE + 0x20)

main.c

#include "stm32f4xx.h" 

int main(void)
{
	RCC_AHB1ENR |= (1<<7);
	
	GPIOH_MODER  &= ~( 0x03<< (2*10));	
	/*PH10 MODER10 = 01b 输出模式*/
	GPIOH_MODER |= (1<<2*10);
	
	/*GPIOH OTYPER10清空*/
	GPIOH_OTYPER &= ~(1<<1*10);
	/*PH10 OTYPER10 = 0b 推挽模式*/
	GPIOH_OTYPER |= (0<<1*10);
	
	/*GPIOH OSPEEDR10清空*/
	GPIOH_OSPEEDR &= ~(0x03<<2*10);
	/*PH10 OSPEEDR10 = 0b 速率2MHz*/
	GPIOH_OSPEEDR |= (0<<2*10);
	
	/*GPIOH PUPDR10清空*/
	GPIOH_PUPDR &= ~(0x03<<2*10);
	/*PH10 PUPDR10 = 01b 上拉模式*/
	GPIOH_PUPDR |= (1<<2*10);
	
	/*PH10 BSRR寄存器的 BR10置1,使引脚输出低电平*/
	GPIOH_BSRR |= (1<<16<<10);
	
	while(1);
}

void SystemInit(void)
{
}

猜你喜欢

转载自blog.csdn.net/weixin_40973138/article/details/85041908