STM32C8T6之使用寄存器点亮LED灯

这几天肺炎闹得沸沸扬扬,我窝在家里学习STM32。这篇博客筹备了3-4天吧,终于完成了。
实验电路如下图所示:
STM32C8T6之使用寄存器点亮LED灯_第1张图片
这里以PC13为例。
用寄存器点亮LED灯,主要就是操作GPIOx_ODR寄存器,GPIOx_CRH寄存器,RCC_APB2ENR寄存器。主要是涉及到指针操作,偏移。其他的也没什么。
下面我们来写代码:

//打开GPIOC端口的时钟                              //PC13
 *(unsigned int *)0x40021018 |= ( 1 << 4 );        //将0x40021018强制类型转换成指针,进行指针操作。
 
 //配置 IO口为输出,配置GPIOx_CRH寄存器。通用推挽输出模式,速度为10M。
  *(unsigned int *)0x40011004 |= ( 1 << (4*5) ); 
  
  //控制 ODR 寄存器,
 *(unsigned int *)0x4001100C &= ~( 1 << 13 );            //APB2上的GPIOC的起始地址加上偏移地址

以上代码都是写在main.c文件中的。时钟部分要注意的是APB2和APB1是挂载到AHB上的,寻找起始地址是不再是GPIO端口C的起始地址了。另外一定要加上偏移地址。
如此就能点亮灯了。
希望大佬指点一二。
最后祝大家在新的一年身体健康,平安无事!

你可能感兴趣的:(STM32C8T6之使用寄存器点亮LED灯)