STM32初识GPIO操作(by woody)

发布者:xrmilk最新更新时间:2018-12-21 来源: eefocus关键字:STM32  GPIO操作 手机看文章 扫描二维码
随时随地手机看文章

操作步骤为:

1) 使能 IO 口时钟。调用函数为 RCC_APB2PeriphClockCmd()。

2) 初始化 IO 参数。调用函数 GPIO_Init();

3) 操作 IO。操作 IO 的方法就是上面我们讲解的方法



GPIO_InitTypeDef  GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin =;

GPIO_InitStructure.GPIO_Mode =;

GPIO_InitStructure.GPIO_Speed =;

GPIO_Init(GPIOX, &GPIO_InitStructure);





GPIO_Mode_AIN = 0x0, //模拟输入

GPIO_Mode_IN_FLOATING = 0x04,  //浮空输入

GPIO_Mode_IPD = 0x28, //下拉输入

GPIO_Mode_IPU = 0x48, //上拉输入

GPIO_Mode_Out_OD = 0x14, //开漏输出

GPIO_Mode_Out_PP = 0x10, //通用推挽输出

GPIO_Mode_AF_OD = 0x1C, //复用开漏输出

GPIO_Mode_AF_PP = 0x18  //复用推挽



GPIO_Speed_10MHz = 1,

GPIO_Speed_2MHz,

GPIO_Speed_50MHz





读 GPIOA.5 的电平状态,那么方法是:

GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_5);





置 GPIOB.5 输出 1,那么方法为:

GPIO_SetBits(GPIOB, GPIO_Pin_5);

反之如果要设置 GPIOB.5 输出位 0,方法为:

GPIO_ResetBits (GPIOB, GPIO_Pin_5);



设置 GPIOA 的第 1 个端口

值为 1,那么你只需要往寄存器 BSRR 的低 16 位对应位写 1 即可:

GPIOA->BSRR=1<<1;

如果你要设置 GPIOA 的第 1 个端口值为 0,你只需要往寄存器高 16 位对应为写 1 即可:

GPIOA->BSRR=1<<(16+1)


关键字:STM32  GPIO操作 引用地址:STM32初识GPIO操作(by woody)

上一篇:stm32篇--系统初始化
下一篇:STM32HAL库中断模式串口初始化收发数据

推荐阅读最新更新时间:2024-03-16 16:21

STM32之IO输出方式理解
下面是开漏和推挽的区别: 开漏输出就是不输出电压,低电平时接地,高电平时不接地。如果外接上拉电阻,则在输出高电平时电压会拉到上拉电阻的电源电压。这种方式适合在连接的外设电压比单片机电压低的时候。 推挽输出就是单片机引脚可以直接输出高电平电压。低电平时接地,高电平时输出单片机电源电压。这种方式可以不接上拉电阻。但如果输出端可能会接地的话,这个时候输出高电平可能引发单片机运行不稳定,甚至可能烧坏引脚。
[单片机]
STM32学习---位带操作总结
*简介:*在计算机中所有的数据都是以二进制的形式储存的。位运算其实就是直接对在内存中的二进制数进行操作,因此处理数据的速度非常快。 在实际编程中,如果能巧妙运用位操作,完全可以达到四两拨千金的效果,正是因为这些优点,所以位操作的应用非常广泛,同时掌握位带操作对于我们理解STM32的原理非常有用。 ** *过渡:***为了方便大家理解,有必要补充一些基础知识。 1.计算中的符号位: 计算机的符号位就是在处理二进制数据时,专门规定有一位,是用来确定数据的正负,符号位是1表示负数,是0表示正数。当然这里说的是有符号数,这个符号位通常是数据的最高位,如8位数据,左边第一位是符号位,后面7位用来表示数据大小。 2.补码: 注意,此处
[单片机]
STM32基础设计(1)---点亮LED灯
首先,总结全文,用STM32f103c8点亮LED的大概步骤为: 定义GPIO口结构体 使能相关gpio口的时钟 如果GPIO口有其他重映射功能,先失能其重映射。 操纵相应GPIO口,实现LED灯的亮灭。 下面详细解释具体步骤: 1,定义GPIO口 库函数中GPIO结构体: typedef struct { uint16_t GPIO_Pin; /*! Specifies the GPIO pins to be configured. This parameter can be any value of @ref GPIO_pins_define */ GPIO
[单片机]
<font color='red'>STM32</font>基础设计(1)---点亮LED灯
回炉重造STM32 CUBEMX之串口通讯问题四
串口通讯+PWM波:STM32F103C8T6通过USART1输入相应的指令控制的TIM3四个通道生成四个占空比不同的频率为50HzPWM波来控制云台。 之前用FT232直连单片机,一切正常返回的指令无乱码正常。 接上数传图传出现问题: 1、连续给出高电平时间持续1.5ms的指令,电机本该静止却会往一个方向慢慢漂移。怀疑每次在发出指令单片机相应指令的过程中会导致PWM波占空比变化。 2、接上数传后返回的指令中含有很多乱码。设备有时会莫名重启或者关闭。怀疑是发送的指令出现了偏差触发了开关机的指令。 3、设备返回的图像黑屏 解决方法: 1、对于重复发出的指令,设置相应的重复处理程序。若指令相同或者相同指令持续3次则跳
[单片机]
低于一美金!32位MCU抢占8位市场
自2007年发布第一个ARM Cortex-M3架构的STM32基本型之后,意法半导体在单片机领域找到了市场大幅扩张的途径。根据iSuppli的统计资料显示,2008年意法半导体MCU收入年增长率达到38%,从2007年的第10位跃升至第五位。而今,意法半导体似乎已不满足于现有的32位产品市场份额,正逐步将STM32架构打入16位甚至8位市场应用中。 超值型STM32问世 随着客户对于计算的需求越来越高,比如家用电器,消费电子及工业控制中,8位MCU已经无法满足了,因此我们会推出在一美金以下的32位产品。 我们先来看看,这款批量售价低于1美金的STM32中,究竟有哪些特性: 整合24MH
[单片机]
低于一美金!32位MCU抢占8位市场
STM32基础PWM输出
a)目的:基础PWM输出,以及中断配合应用。输出选用PB1,配置为TIM3_CH4,是目标板的LED6控制脚。 b)对于简单的PWM输出应用,暂时无需考虑TIM1的高级功能之区别。 c)初始化函数定义: void TIM_ConfiguraTIon(void);//定义TIM初始化函数 d)初始化函数调用: TIM_Configuration();//TIM初始化函数调用 e)初始化函数,不同于前面模块,TIM的初始化分为两部分——基本初始化和通道初始化: void TIM_Configuration(void)//TIM初始化函数 { TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;//
[单片机]
关于STM32通用定时器更新事件中断
//定时器3中断服务程序 void TIM3_IRQHandler(void) { if(TIM3- SR&0X0001) //产生更新事件 { LED1=!LED1; LED0=!LED0; } TIM3- SR&=~(1 0);//清除中断标志位 } //通用定时器中断初始化 //这里时钟选择为APB1的2倍,而APB1为36M //arr:自动重装值。 //psc:时钟预分频数 //这里使用的是定时器3! void Timerx_Init(u16 arr,u16 psc) { TIM3- SMCR&=0xfffffff8; //从模式控制寄存器设置预分
[单片机]
STM32定时器T2纯软件仿真时间准确,JTAG在线调试查看时间不准
通过查看Sec的值和上次中断的差值计算的,虽然这个值是不准的 ,但实际上时间是准的, 原因如下:stm32在调试模式下虽然进断点之后程序停止了,但定时器的时钟还在走,计数器还在计数,若要在产生断点时计数器停止计数可以 在初始化时调用函数DBGMCU_Config(DBGMCU_TIM2_STOP,ENABLE);,这样一来仿真的时候定时时间就是准的了
[单片机]
<font color='red'>STM32</font>定时器T2纯软件仿真时间准确,JTAG在线调试查看时间不准
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved