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灯,为什么是低电平呢?我还没有学清楚,可能是电路设计原因,如果在手册上可以找到的话请评论告诉我谢谢!

相关推荐
Kuakewei8888 小时前
1.5V升压3.3V专用芯片PW5100直通关断与PW5103真关断分析
嵌入式硬件
笨鸟先飞的橘猫8 小时前
系统设计复盘2026-09-18
学习
威嵌神州8 小时前
VxWorks6.9 BSP 适配:飞腾 D2000/FT2000/4 平台、驱动开发
驱动开发·嵌入式硬件·fpga开发·系统架构
传奇开心果编程9 小时前
【Rust入门练中学】 第1课:从零开始
开发语言·学习·rust
一直C9 小时前
ARM裸机开发Day04|IMX6ULL汇编&C点灯实操,Makefile、链接脚本、段解析
嵌入式硬件·imx6ull·交叉编译
高亦真9 小时前
今天是学习嵌入式的第39天
linux·学习·算法
女神下凡10 小时前
端侧 AI 产品 有什么产品
人工智能·嵌入式硬件
pan0c2310 小时前
什么是ESP8266-NodeMCU
嵌入式硬件·esp8266
Brilliantwxx10 小时前
【STM32】 SPI阻塞式通信与HAL源码(串口读ID实战)
开发语言·stm32·单片机·嵌入式硬件·ecmascript
endeavor1210 小时前
BootLoader与OTA学习(三)
c语言·stm32