使用寄存器点亮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灯操作。每个寄存器都有参考的基本地址进行偏移得到的自身地址,只需要对自身地址进行位操作即可控制寄存器的值。