控制引脚高低电平的实现
开发板上可以通过控制引脚高低电平的实现功能的模块:蜂鸣器、LED灯。
一.GPIO操作步骤:
1.GPIO对应时钟打开
2.设置GPIO的引脚、速度、输出模式等参数
3.引脚输出0或1
给PB5置1的方法的方法有两种:
GPIOB -> BSRR = 0x0020;
GPIOB -> BSRR |= ( 1<<5);(优点,只修改某一位)
给PB5清0的方法的方法有两种:
GPIOB -> BSRR = 0x0000;
GPIOB -> BSRR &= ~( 1<<5); (优点,只修改某一位)
二.熟悉相关寄存器及寄存器版实现输出电平的控制:
1.GPIOB在APB2上,使用的是APB2上的时钟,RCC模块有多个寄存器,刚刚用到的是RCC_APB2ENR寄存器。
RCC->APB2ENR |= (1<<3);
要注意RCC后面的APB2ENR在哪里定义的,要能找到。
2.端口配置低寄存器GPIOB_CTL,端口配置高寄存器GPIOB_CTH
要把20-23位变为1100,可以先让4位都为0,然后让20-21变为11。
GPIOB->CRL &= ~((1<<20) | (1<<21) | (1<<22) |(1<<23));
GPIOB->CRL |= (1<<20) | (1<<21);
3.控制PB5为高
GPIOB -> BSRR |= ( 1<<5);
寄存器版编程用于标准库函数解决不了特定问题时来使用的。
By:霜月孤鸟
2017.2.21
优快云博客地址:http://blog.youkuaiyun.com/ourrtems
欢迎访问、关注单片机百宝箱!
本文介绍了如何在STM32F103上通过GPIO控制引脚的高低电平,涉及步骤包括开启GPIO时钟、设置引脚参数以及使用寄存器直接操作。通过实例展示了给PB5置1和清0的多种方法,并解释了相关寄存器的作用。
5971

被折叠的 条评论
为什么被折叠?



