STM32寄存器流水灯

本文详细介绍了如何使用STM32的GPIO寄存器进行端口初始化,包括配置寄存器以设置通用推挽输出模式,并启用相应时钟。在代码部分展示了main.c的关键代码,同时说明了USB转TTL模块与STM32的接线方法。通过烧录程序,最终实现了流水灯的实验效果。
摘要由CSDN通过智能技术生成

目录

一、GPIO端口初始化

(一)寄存器

(二)使能时钟

 二、代码

(一)main.c

(二) 接线:

 三、烧录程序

四、实验成果


一、GPIO端口初始化

(一)寄存器

STM32给不同的寄存器分配了不同的地址,在《STM32中文参考手册》中查找地址。

  • 找到GPIOX端口的起始地址

由于STM32的每个IO都需要4个位来配置,所以一个32位的寄存器最大只能配置8个IO(32位的单片机的寄存器就是32位的)。STM32中,用端口配置低寄存器(GPIOx_CRL)来配置引脚Px0-Px7, 用端口配置高寄存器(GPIOx_CRH)来配置引脚Px8-Px15。

本次验采用通用推挽输出模式,最高输出时钟频率2Mhz。分别用到A12、B1、C14三个引脚。其中B1属于端口配置低寄存器偏移地址为0x00,C14、A12属于端口配置高寄存器偏移地址为0x04。

  • 找到GPIO寄存器中的端口配置低寄存器(GPIOx_CRL)  控制端口低八位IO

  •  找到GPIO寄存器中的端口配置高寄存器(GPIOx_CRH) 控制端口高八位IO

  •  寄存器配置
	//----------------GPIOA配置寄存器 ------------------------
#define GPIOA_CRH	*((unsigned volatile int*)0x40010804)
#define	GPIOA_ODR	*((unsigned volatile int*)0x4001080C)
//----------------GPIOB配置寄存器 ------------------------
#define GPIOB_CRL	*((unsigned volatile int*)0x40010C00)
#define	GPIOB_ODR	*((unsigned volatile int*)0x40010C0C)
//----------------GPIOC配置寄存器 ------------------------
#define GPIOC_CRH	*((unsigned volatile int*)0x40011004)
#define	GPIOC_ODR	*((unsigned volatil
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值