STM32学习笔记之GPIO

发布者:BlissfulHeart最新更新时间:2015-10-15 来源: eefocus关键字:STM32  学习笔记  GPIO 手机看文章 扫描二维码
随时随地手机看文章
GPIO功能描述

每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。根据数据手册中列出的每个I/O端口的特定硬件特征, GPIO端口的每个位可以由软件分别配置成多种模式。 ─ 输入浮空 ─ 输入上拉 ─ 输入下拉 ─ 模拟输入 ─ 开漏输出 ─ 推挽式输出 ─ 推挽式复用功能 ─ 开漏复用功能每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问(不允许半字或字节访问)。GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器的读/更改的独立访问;这样,在读和更改访问之间产生IRQ时不会发生危险。

[转载]STM32学习笔记之GPIO


void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

#ifdef USE_STM3210C_EVAL
 
  GPIO_PinRemapConfig(GPIO_PartialRemap_USART3, ENABLE);
 
 
  GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE); 
#elif defined USE_STM3210B_EVAL
 
  GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);
#endif

 
  GPIO_InitStructure.GPIO_Pin = USARTy_RxPin;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(USARTy_GPIO, &GPIO_InitStructure);
 
 
  GPIO_InitStructure.GPIO_Pin = USARTz_RxPin;
  GPIO_Init(USARTz_GPIO, &GPIO_InitStructure); 
 
 
  GPIO_InitStructure.GPIO_Pin = USARTy_TxPin;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(USARTy_GPIO, &GPIO_InitStructure);

 
  GPIO_InitStructure.GPIO_Pin = USARTz_TxPin;
  GPIO_Init(USARTz_GPIO, &GPIO_InitStructure); 

  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);                       

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
//  GPIO_Init(GPIOB, &GPIO_InitStructure);

}

 

#ifndef __LED_H
#define __LED_H

#include "stm32f10x.h"

#define LED1On()  GPIOA->BSRR = GPIO_Pin_4
#define LED1Off()  GPIOA->BRR = GPIO_Pin_4
#define LED2On()  GPIOA->BSRR = GPIO_Pin_5
#define LED2Off()  GPIOA->BRR = GPIO_Pin_5
#define LED3On()  GPIOA->BSRR = GPIO_Pin_6
#define LED3Off()  GPIOA->BRR = GPIO_Pin_6
#define LED4On()  GPIOA->BSRR = GPIO_Pin_7
#define LED4Off()  GPIOA->BRR = GPIO_Pin_7

#endif

PS:在使用GPIO前必须进行配置,注意复用功能,使能GPIO时钟等。

关键字:STM32  学习笔记  GPIO 引用地址:STM32学习笔记之GPIO

上一篇:STM32系统时钟框图
下一篇:STM32学习笔记之RCC

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

Hi-Tech PICC 8bit MCU 的学习笔记 -- 环境篇
/*---------------------------------------------------------*/ Hi-Tech PICC 8bit MCU 的学习笔记 ---------- 环境篇 /*---------------------------------------------------------*/ 第一节 环境 1.概况 PIC 单片机的 C 语言编译器众多,常见的有 Hitech、CCS、IAR、Bytecraft 等公司,其中最常用的是Hitech 公司的PICC 编译器。在此列出几个主要的针对 PIC 单片机的 C 编译器相关连接网址,供参考: Hitech-PIC
[单片机]
STM32学习之:Context—M3简介
Cortex-M3概览 (1)简介 Cortex-M3是一个 32位处理器内核。内部的数据路径是 32位的,寄存器是 32位的,存储器接口也是 32 位的。CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。为实现这个特性, CM3内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。 比较复杂的应用可能需要更多的存储系统功能,为此CM3提供一个可选的MPU,而且在需要的情况下也可以使用外部的 cache。另外在CM3中,Both小端模式和
[单片机]
STM32】5分钟了解STM32的串口通信
一、串口通信简介 1.1 百度百科解释 来源百度百科 串行接口是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。 串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节的通信方式。 1.2 通信接口 1.3 串口通信分类 ▲ 全双工、半双工和单工 1.4 STM32串行通信的通信方式 插播一条反爬虫信息,读者可以忽略: 二、STM32的串口通信 ▲ USART 功能框图 2.1 功能引脚 TX: 发送数据输出引
[单片机]
【<font color='red'>STM32</font>】5分钟了解<font color='red'>STM32</font>的串口通信
STM32如何实现可调频率、占空比的PWM波形
使用两个TIM定时器: 一个输出可调频率、占空比的PWM, 一个对输出PWM脉冲计数(计时)。 1.门控方式能实现,但需要复杂的配置和计算,不推荐。 2.脉冲计数是比较实际,也是比较简单的方式; 对输出PWM脉冲计数(计时)方法有多种: 1.IO中断计数,或同步定时中断计数:用另外一个定时器,按照相同频率中断计数(类似IO中断); 2.由PWM频率和脉冲个数,计算输出全部所需的时间,使用定时中断,关闭输出PWM; 3.利用定时器外部脉冲触发(外部时钟模式2功能),计数个数为所需脉冲个数(10个脉冲),则关闭输出PWM; STM32定时器 利用阻塞延时,控制IO高低变化输出PWM这种方式就行啦,也很简单。其实,这种方法的弊端很大。
[单片机]
<font color='red'>STM32</font>如何实现可调频率、占空比的PWM波形
STM32安全固件更新的安全挑战
固件更新是我们软件生命周期中必须面临的问题。软件生命周期中有多种原因让我们需要固件更新,而固件更新也会带来安全问题,如使用固件更新来攻击电子钱包。 STM32 已经提供了很多的安全技术来应对固件更新的安全挑战。在这里和大家一起探讨,如何利用 STM32 安全技术,软件以及硬件安全技术,进行安全的升级固件。 讲座内容既包括了固件更新的一般原理,以及安全固件更新的额外设计。 安全固件更新离不开安全启动。STM32 安全启动为 STM32 安全固件更新提供了安全的运行环境。 什么是安全固件更新? 固件更新是指部分或者完全替换设备上的软件的操作,包括添加新应用,修改已有功能,或者去修复软件里的问题。安全固件更新,则是以安全的方
[单片机]
存储器与寄存器
一、前言追溯 备份寄存器 BKP 通用输入输出端口 GPIO 模拟/数字转换 ADC 定时器 TIMx(x=1...8) 实时时钟 RTC 独立看门狗 IWDG 窗口看门狗 WWDG 静态存储器控制器FSMC SDIO接口 SDIO 通用穿行总线 USB 控制器局域网 bxCAN 串行外设总线 SPI 芯片间总线接口 I2C 通用串行总线 OTG(OTG_FS) 以太网 ETH 二、存储器映射 存储器本身不具备地址信息,它的地址是厂商或用户分配的。 厂商或用户给存储器分配地址的过程成为存储器映射。
[单片机]
存储器与寄存器
stm32实用篇2: 裸机系统实现多任务轮转
在裸机系统中,通常都是在一个大的 while 循环中,通过判断标志位,来按照顺序执行相应的代码。为了加快响应速度,较为常见的做法是中断中修改标志位,代码中判断标志位,如下所示: int main(void) { XX_Init(); /* while 中判断标志位 */ while (1) { if (flag0 == 1) { code0; flag0 = 0; } if (flag1 == 1) { code1; flag1 = 0; } /************/ } } /* 中断服务函数中修改标志位 */ void Handler0(vo
[单片机]
基于STM32技术的车载消防车信息采集与传输系统
近几年来,各种危险场所不可避免的火灾频繁出现,给社会安全造成了极大的隐患,于是,发生火灾时的及时补救就成为迫在眉睫需要解决的问题。消防救援人员固然速度很快,但从消防队出发到达火灾地点也需要一段不小的时间,到达火灾现场后的勘察地形和实行相应的救火措施。因此,设计一种车载消防车信息采集与传输系统,建立一个高效、覆盖范围广的车载监控系统,从而实现对车辆环境的实时监控、火场内环境变化的监测。 1 系统功能架构 车载监控系统主要实现4种功能,分别为车辆装备器材的信息采集、无线网络传输、GPS定位、终端的接收和监控。其中无线网络的传输是本系统的关键。如图1 为车载监控系统总体结构图。采用GPRS和ZigBee进行数据的处理与传输,提高系统数据
[单片机]
基于<font color='red'>STM32</font>技术的车载消防车信息采集与传输系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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