【STM32】——基于stm32最小系统点亮LED灯

本文详细介绍了STM32F103C8T6单片机中GPIO寄存器的使用,包括地址查找、时钟配置、端口模式设置和LED灯的控制。同时讲述了在Keil开发环境中遇到的常见问题及解决方法,强调了注意细节的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、stm32f103c8t6寄存器

1.寄存器

        寄存器是 CPU 内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的 时序逻辑电路 ,但这种时序逻辑电路只包含存储电路。 寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个 锁存器 或触发器可以构成N位寄存器。寄存器是 中央处理器 内的组成部分。寄存器是有限存储容量的高速存储部件,它们可用来暂存指令、数据和位址。在计算机领域,寄存器是CPU内部的元件,包括 通用寄存器 、专用寄存器和控制寄存器。寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。

寄存器是一个存储空间,地址很容易索引到。

二、GPIO初始化设置

1.根据芯片手册查询端口地址

如上图所示GPIOA的地址在0x40010800-0x40010BFF之间,GPIOB、GPIOC均可查询得到 

 2.打开时钟

 

         时钟地址是基础地址加上偏移地址 ,即0x40021018,则打开三个IO口的时钟需要将三个位都置1,具体代码如下:

#define RCC_APB2ENR (*(unsigned int *)0x40021018)
 
// 打开时钟
RCC_APB2ENR |= (1<<3);  // 打开 GPIOB 时钟
RCC_APB2ENR |= (1<<4);  // 打开 GPIOC 时钟
RCC_APB2ENR |= (1<<2);  // 打开 GPIOA 时钟
 

3.端口配置寄存器 

端口1-7为低,端口8-15为高。每个引脚由四个位控制。

GPIO口有八种模式:

  • 输入浮空
  • 输入上拉
  • 输入下拉
  • 模拟输入
  • 开漏输出
  • 推挽式输出
  • 推挽式复用功能
  • 开漏复用功能

本次实验使用推挽输出:根据手册可以知道使用此输出需要看CNF加端口号上面bit为置为00。

此次实验最大速度是10MHz,因此MODE加端口号上面的bit位需要变为01。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值