本文代码在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)
{
}
上一篇:STM32F429 >> 20. CAN 通讯(二)
下一篇:STM32F429 >> 14. TIM_(二)_高级定时器 (Code)
推荐阅读最新更新时间:2024-11-17 17:30
设计资源 培训 开发板 精华推荐
- 【涂鸦智能】TRHMOD-01
- 无线电子纸显示参考设计
- 具有 4A 准确电流限制的 LTM8064IY 58Vin、24Vout 降压转换器的典型应用电路
- NCP1342PD45WGEVB:NCP1342 45 W USB PD 评估板
- LM199A 用于分离电源操作的精密电压基准的典型应用电路
- 使用 Analog Devices 的 LT3091ET7 的参考设计
- 适用于工业应用的 C8051F530A MCU 的 C8051F530ADK、8051 开发系统
- 【CW32】基于CW32的4G无限距离遥控涡轮增鸭
- ADP197 5V、3A 逻辑控制高端电源开关的典型应用
- OP482ACBZ-R7 低功耗、高速 JFET 运算放大器的典型应用电路