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

相关推荐
DIY机器人工房2 小时前
一个可以检测本机的字节顺序,并对任意数据进行字节顺序的反转操作的代码。
嵌入式硬件·算法·嵌入式·diy机器人工房
【上下求索】5 小时前
学习笔记090——Ubuntu 中 UFW 防火墙的使用
笔记·学习·ubuntu
jingjing~5 小时前
STM32 使用 RTC 实现实时时钟功能
stm32·嵌入式硬件·实时音视频
hhj123k6 小时前
渗透作业3
网络·学习
心一信息6 小时前
HCIE学习之路:一个NAT实验
学习·计算机网络·智能路由器
SKYDROID云卓小助手7 小时前
无人设备遥控器之多设备协同技术篇
网络·人工智能·嵌入式硬件·算法·信号处理
一梦浮华7 小时前
自学嵌入式 day40 51单片机
单片机·嵌入式硬件·51单片机
蓝桉8028 小时前
opencv学习(视频读取)
人工智能·opencv·学习
今天会营业8 小时前
学习Markdown
学习
Yueeyuee_8 小时前
【C#学习Day15笔记】拆箱装箱、 Equals与== 、文件读取IO
笔记·学习·c#