历史上的今天
今天是:2025年06月12日(星期四)
2020年06月12日 | STM32学习笔记(一)---GPIO口的操作
2020-06-12 来源:eefocus
1.新建一个工程模板
2.GPIO口操作的步骤
(1)声明一个结构体 GPIO_InitTypeDef GPIO_InitStructure;
这个结构体中包括GPIO_Pin 、GPIO_Mode、GPIO_Speed 。
(2)端口使能: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);
调用上述函数,函数参数第一个是你要使能端口,第二个是ENABLE,就是使能。如果其中用到几个端口,在第一个参数中
用或运算“|”连接,就可以同时声明几个端口。
(3) GPIO_InitStructure.GPIO_Pin 端口配置,就是你要用哪个IO口
GPIO_InitStructure.GPIO_Mode 模式设置,表明IO口的功能是什么,在STM32中IO口有8种模式
GPIO_InitStructure.GPIO_Speed IO口速度设置,在STM32中IO口有3中速度
注: IO口的八种模式:1、输入浮空 2、输入上拉 3、输入下拉 4、模拟输入 5、开漏输出 6、推挽输出 7、推挽式复用功能 8、开漏复用功能
IO口的三种速度:10MHZ、2MHZ、50MHZ
(4)根据设定参数初始化GPIO口 GPIO_Init(GPIOA, &GPIO_InitStructure);
5、IO的高低电平操作
GPIO_SetBits 寄存器:BSRR
GPIO_ResetBits 寄存器:BRR
GPIO_WriteBit 寄存器:BSRR BRR
GPIO_Write 寄存器:ODR
这两个调用的寄存器不同,功能也不同。区别在于
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 置高
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 置低
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
前者是直接对IO进行操作,而后者的输入是对整个IO口,如PA口进行操作,你要那位高就在那位置“1”,所以第二组函数的第三个参数应该为一个十六进制的数。
一般情况下使用使用第一组比较方便。
void LED_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_4|GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_2);
GPIO_SetBits(GPIOA,GPIO_Pin_4);
GPIO_SetBits(GPIOA,GPIO_Pin_6);
}
史海拾趣
|
市场上专业经营汽车音响的店较少,多是洗车、美容、修车的店家捎带手安装汽车音响,技师没有经过专业安装培训,安装音响后经常出现各种各样的故障,甚至线路失火使汽车无法使用。购买汽车音响不要盲目,多问、多看、多听,可避免上当。 挂上羊 ...… 查看全部问答> |
|
4K内存的51单片机只卖2块8 ?!!! 湖南华芯公司刚开始造51芯片,是否由于前期开发及投入成本的关系,LS2051/LS4051 两款芯片只开了一个模,即只投产了LS4051,而LS2051 暂时用LS4051 印上LS2051 字样当作LS2051 销售,等销量上来之后再 ...… 查看全部问答> |
|
买芯片,要留神! 一般购买芯片如果有上个三五十片的量,最好找代理公司或其分销商而不要去一般“统货”柜台拿货,一般什么都作的(所谓统货)柜台上的现货基本上是翻新货或旧货,而且他们看人报价,行家或熟人他们大多不敢太过分 ...… 查看全部问答> |
|
Xilinx ucf和Synplify sdc之间的对应关系 原来用Xilinx的xst做综合,约束也都是在ucf里面的。ucf里面可以用FFS指定全部的DFF,请问在Synplify里面怎么写才能表示FFS的意思呢?我想将到一个点的path全部设为multi-cycle的,想将起点设为FFS。谢谢!… 查看全部问答> |
|
我以前安装过一次proteus7.2sp2,由于很久没有使用,我把他卸了 但是现在又想用 于是安装,安装好后,加载了MAXIM_LICENCE.lxk 文件(破解用的) 但是每次打开isis时提示我证书失效? 于是在一次卸了,当再次安装时他就直接找到证书了无需lice ...… 查看全部问答> |
|
板子制的外设不多 只有arm926 cpu (pinpad),一64M nandflash,一个128K的CMOS STATIC RAM ,lcd,key, 就这么简单 没有其他ram 其实就是个pinpad,但是想装一个arm linux系统的话 可行吗?? 不行的话 咋样来控制这 ...… 查看全部问答> |
|
记得以前有不少人问浮点计算的问题,我很好奇,什么样的应用需要用到浮点运算?要求的性能是多少?希望大家提点意见,谢谢。 前10个有实际价值的回答将各得10分,… 查看全部问答> |




