使用寄存器点亮LED灯

项目: 野火STM32指南者开发板,使用寄存器点亮LED灯

代码:

  

#include "stm32f10x.h"
int main(void)
{
    *(unsigned int *)0x40021018 |= ((1)<<3);                    //打开GPIO端口时钟
    *(unsigned int *)0x40010c00 |= ((1)<<(4*0));        //设置PB0口为输出
    *(unsigned int *)0x40010c0c &= ~(1<<0);                    //控制ODR输出低电平
    
}

void SystemInit(void)
{
    //函数体为空,目的是为了骗过编译器报错
}

执行结果:

  

 

 原理图:

  

 

思考:

  (1)根据原理图可知,要想点亮LED灯,需stm32 GPIO设置输出低电平(以PB0为例)。

  (2)由于GPIO口挂载到AHB2总线上,如果要让GPIO端口的低电平有效,需要使能外设端口时钟,即RCC_APB2ENR。

  (3) 由于GPIO口可作为输入输出口,所以需要设置为输出口,才可以输出低电平。

  总之,需要先使能总线外设时钟,然后设置端口为输出模式,最后使能端口为低电平。即可点亮LED灯。

 main.c中的代码为操作寄存器进行点亮LED灯操作。每个寄存器都有参考的基本地址进行偏移得到的自身地址,只需要对自身地址进行位操作即可控制寄存器的值。

posted @ 2022-01-04 20:58  JRS077  阅读(335)  评论(0编辑  收藏  举报