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

相关推荐
全球通史37 分钟前
Keil 配置 MSPM0G3507 开发环境避坑:SysConfig、msp.h 和 driverlib.a 报错完整解决记录
stm32·单片机·嵌入式硬件
secondyoung2 小时前
Cortex-R52学习:MPU内存保护机制
arm开发·单片机·学习·arm·mpu
red_redemption2 小时前
自由学习记录(198)
学习
花岛溯3 小时前
Cursor 学习 DAY2·切换AI模型
学习
星夜夏空993 小时前
FreeRTOS学习(9)——临界区
学习
iCxhust3 小时前
C# 命令行指令 查看二进制文件
开发语言·单片机·嵌入式硬件·c#·proteus·微机原理·8088单板机
小智老师PMP4 小时前
零基础能不能考PMP?零基础专属学习路径+全套扶持体系
学习·算法·职场和发展·软件工程·求职招聘·敏捷流程
XGeFei6 小时前
【Fastapi学习笔记(4)】—— JsonScheme与数据验证、错误响应格式、正则表达式
学习·fastapi
爱喝水的鱼丶6 小时前
SAP-ABAP:SAP 简单报表输出开发系列(共6篇) 第四篇:SAP 报表异常处理机制:数据校验与消息提示规范落地
开发语言·数据库·学习·算法·sap·abap
東雪木7 小时前
泛型、反射、注解(Spring 框架核心底层)专属复习笔记
java·windows·笔记·学习·spring