STM32标准库学习之寄存器方法点亮LED灯

STM32C8T6最小系统开发板,点亮PC13引脚的LED灯

1.使能PC13引脚的定时器

PC13引脚为GPIOC组的第13个端口,GPIO的时钟使能定时器为RCC_APB2ENR,这是可以从手册中得出的,如下图所示

从下图可以得出,若要使能GPIOC端口,需要使能四号位为1.

因此可以编码为

objectivec 复制代码
RCC->APB2ENR = 0x00000010;

RCC为一个结构体,内部包含如CRCFGRAPB2ENR等都代表RCC模块中的一个寄存器。

内部定义如下

objectivec 复制代码
/** 
  * @brief Reset and Clock Control
  */

typedef struct
{
  __IO uint32_t CR;
  __IO uint32_t CFGR;
  __IO uint32_t CIR;
  __IO uint32_t APB2RSTR;
  __IO uint32_t APB1RSTR;
  __IO uint32_t AHBENR;
  __IO uint32_t APB2ENR;
  __IO uint32_t APB1ENR;
  __IO uint32_t BDCR;
  __IO uint32_t CSR;

#ifdef STM32F10X_CL  
  __IO uint32_t AHBRSTR;
  __IO uint32_t CFGR2;
#endif /* STM32F10X_CL */ 

#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)   
  uint32_t RESERVED0;
  __IO uint32_t CFGR2;
#endif /* STM32F10X_LD_VL || STM32F10X_MD_VL || STM32F10X_HD_VL */ 
} RCC_TypeDef;

2.设置GPIOC引脚的模式

端口配置寄存器用于配置端口参数和功能,分为高寄存器和低寄存器。

  • 端口配置低寄存器(GPIOx_CRL):用于配置GPIO端口的低8位引脚(即引脚0到7)。每个引脚对应4个寄存器位,因此总共需要32位来配置这8个引脚。
  • 端口配置高寄存器(GPIOx_CRH):用于配置GPIO端口的高8位引脚(即引脚8到15)。同样地,每个引脚也对应4个寄存器位,所以也需要32位来配置这8个引脚。

GPIOC13位于端口配置高寄存器

由手册可知需要配置为通用推挽输出模式和输出模式,CNF13为00,MODE13为11

编写代码为

objectivec 复制代码
GPIOC->CRH = 0X00300000;

3.设置GPIOC引脚为低电平

复制代码
GPIOC->ODR = 0X00000000;

最后设置GPIOC_ODR寄存器中的ODR13为低电平即可点亮LED灯,为什么是低电平呢?我还没有学清楚,可能是电路设计原因,如果在手册上可以找到的话请评论告诉我谢谢!

相关推荐
Humbunklung12 分钟前
PySide6 GUI 学习笔记——常用类及控件使用方法(常用类矩阵QRectF)
笔记·python·学习·pyqt
每次的天空2 小时前
Android学习总结之Java篇(一)
android·java·学习
夜月yeyue2 小时前
STM32 USB配置详解
stm32·单片机·嵌入式硬件
黑不拉几的小白兔2 小时前
risc-V学习日记(4):RV32I指令集
学习·risc-v
技术干货贩卖机2 小时前
0基础 | Proteus仿真 | 继电器
嵌入式硬件·51单片机·proteus·继电器·0基础
春眠不觉晓♞3 小时前
使用多线程快速向Excel中快速插入一万条数据案例
java·学习·excel
熬夜的猪仔3 小时前
零基础制作Freertos智能小车(教程非常简易)持续更新中....
stm32·freertos·智能小车
Mabnus3 小时前
文献分享:一种四价双特异性抗体的功能性和IgG样稳定性、药理学和可开发特性研究
学习
岁月不能老3 小时前
Linux-Part8-考试(学习Linux第8天)
linux·运维·学习
逼子格4 小时前
电路中的DGND、GROUND、GROUND_REF的区别,VREF、VCC、VDD、VEE和VSS的区别?
嵌入式硬件·硬件工程·硬件工程师·电源·接地·硬件工程师真题