【stm32f103】GPIO原理以及LED的应用(寄存器版)

一.硬件原理图

有两个LEDD1,D2,分别对应的PINPB6,PB7,低电平时点亮LED

二.寄存器图

通用GPIO寄存器一共有以下几个寄存器

寄存器可以参考 参考手册,在这里不做详细讨论

三.编程步骤:

1.      使能响应的GPIO时钟

2.      配置通用GPIO为推挽输出(因为默认低电平,所以此时LED灯会亮起来)

3.      输出低电平,熄灭LED

4.      再次通过程序点亮LED

扫描二维码关注公众号,回复: 8515532 查看本文章

四.程序讲解

代码比较简单,只有几行

/* 1.ENABLE GPIOB CLOCK */
RCC->APB2ENR|= RCC_APB2ENR_IOPBEN;

运行这个,可以在debug中看到GPIOB clockdisable变为enable

/* 2.CONFIG PB6 PB7 */
GPIOB->CRL|= GPIO_CRL_MODE6 | GPIO_CRL_MODE7;

此时发现PB6,PB7按照我们预期配置的那样变为输出模式

 

/* 3. PB6PB7 HIGH */
GPIOB->ODR|= GPIO_ODR_ODR6 | GPIO_ODR_ODR7;

此时可以看到ODR寄存器bit6,bit7被置1,此时LED灯熄灭

/* 4. PB6PB7 LOW */
GPIOB->ODR&=  ~(GPIO_ODR_ODR6 | GPIO_ODR_ODR7);

执行到这的时候再次点亮LED


OK,通用GPIO就到这里了


另外:此处遗留一个问题,为什么运行到第四步的时候bit4也消失了呢?

->bit 4JlinkPIN脚,可能Jlink自己拉到低

发布了200 篇原创文章 · 获赞 548 · 访问量 76万+

猜你喜欢

转载自blog.csdn.net/XiaoXiaoPengBo/article/details/77351463