STM32——GPIO


宗旨:技术的学习是有限的,分享的精神是无限的。


【对单片机的操作就是控制IO口】

一、GPIO(通用输入输出口)

1、选定需要的引脚(对应哪一个IO口);

2、配置需要的功能(输入还是输出);

3、设置需要的高低电平;

二、GPIO寄存器

配置寄存器:输入还是输出

数据寄存器:保存输入电平或将要输出电平

位控制寄存器:控制电平的输出

锁定寄存器:设置某锁定引脚后,不能修改配置

每4位控制一个引脚。寄存器都是32位的。

三、STM32地址映射

Cortex-M3 有 32 根地址线,所以它的寻址空间大小为 2^32 bit=4GB。 ARM 公司设计时,预先把这 4GB 的寻址空间大致地分配好了。地址从 0x4000 0000 至 0x5FFF FFFF( 512MB )的地址分配给片上外设。stm32f10x.h这个文件中重要的内容就是把STM32 的所有寄存器进行地址映射。

AHB总线:(0x4001 8000~0x4001 8000)

APB1总线:(0x4000 0000~0x4001 0000)I2C,UART,DAC,部分定时去等

APB2总线:(0x4001 0000~0x4001 3FFF)GPIO,串口1,ADC及部分定时器;

外设基地址:片上外设的首地址就是外设的基地址0x40000000。STM32 的地址是 32 位的。

总线基地址:总线基地址(AHB/APB1/APB2) = 外设基地址 + 偏移量

寄存器组基地址:寄存器组基地址(GPIOA~E) = 总线基地址 + 偏移量

#define PERIPH_BASE         ((uint32_t)0x40000000) /* 外设基地址 *//* 总线基地址 */
#define APB1PERIPH_BASE     PERIPH_BASE
#define APB2PERIPH_BASE     (PERIPH_BASE + 0x10000)
#define AHBPERIPH_BASE      (PERIPH_BASE + 0x20000)/*寄存器组基地址*/
#define GPIOA_BASE          (APB2PERIPH_BASE + 0x0800)
#define GPIOB_BASE          (APB2PERIPH_BASE + 0x0C00)
#define GPIOC_BASE          (APB2PERIPH_BASE + 0x1000)
#define GPIOD_BASE          (APB2PERIPH_BASE + 0x1400)
#define GPIOE_BASE          (APB2PERIPH_BASE + 0x1800)#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)
#define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)
#define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)
#define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)
#define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)typedef struct
{__IO uint32_t CRL;__IO uint32_t CRH;__IO uint32_t IDR;__IO uint32_t ODR;__IO uint32_t BSRR;__IO uint32_t BRR;__IO uint32_t LCKR;
} GPIO_TypeDef; /* GPIO7个寄存器封装,寄存器图中有相对总线的地址偏移*/

STM32——GPIO(1)相关推荐

  1. STM32——GPIO(2)

    STM32--GPIO 宗旨:技术的学习是有限的,分享的精神是无限的. /* GPIO_InitTypeDef结构体 */ typedef enum {GPIO_Speed_10MHz = 1, // ...

  2. 单片机STM32入门——(1)程序结构

    单片机之STM32入门--(1)程序结构 引言 1.初识单片机 1.1初始配置 1.2程序下载 2.GPIO的使用 2.1资源下载 2.2初始化源代码 3.程序结构 3.1文件的建立 3.2程序结构源 ...

  3. STM32入门(四)PWM与电机驱动

    STM32入门(四)PWM与电机驱动 一.PWM 所谓PWM,就是脉冲宽度调制技术,其具有两个很重要的参数:频率和占空比.频率,就是周期的倒数:占空比,就是高电平在一个周期内所占的比例.PWM方波的示 ...

  4. STM32项目(六)—— 中文电子捡货标签

    STM32项目(六)-- 中文电子捡货标签 宗旨:技术的分享是有限的,分享的精神是无限的. 传统物流行业仓储拣货采用纸单作业,拣货完成后再进行验货.出货,容易造成拣货错误.拣货速度与效率低.新员工培训 ...

  5. STM32项目(四)——暗室网关

    STM32项目(四)--暗室网关 宗旨:技术的学习是有限的,分享的精神是无限的. 需求: 采集环境箱温度,采集20个通道的电流值,点灯节拍控制:(上位机服务器端复杂) 温度采集模块:(STM32 + ...

  6. STM32项目(一) —— 展示车座椅

    STM32项目(一) -- 展示车座椅 宗旨:技术的分享是有限的,分享的精神是无限的. 功能:模拟人开车时,ACR和ABL的变化. 主控制器:STM32(CAN,串口,网口,输入,输出) 上位机:Li ...

  7. stm32新建工程(详细)

    原文地址:http://blog.csdn.net/lbl1234 下载固件函数库 stm32标准外设库是stm32全系列芯片的外设驱动,有了它可以大大加速我们开发stm32.     首先从st公司 ...

  8. STM32实战(1):搭建模板工程

    " 从今天起我会更新一个STM32实战系列教程,以STM32F103RCT6核心板为例由浅至深的向大家介绍嵌入式软件开发的学习过程,计划是先从最基础的搭建工程开始,到裸机开发,再到各种中间件 ...

  9. STM32 CubeIDE(九)串口通讯

    STM32 CubeIDE(九)串口通讯 串口通讯 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,大部分电子设备都支持该通讯方式,电子工程师在 ...

最新文章

  1. AI黑箱:我们要用AI解释AI?
  2. java swing 右键_java swing制作右键菜单
  3. python无法启动此程序因为计算机中丢失_python报错:无法启动此程序,因为计算机中丢失...
  4. C#基础 字符串读取/写入文本文件 代码示例
  5. 偏差、方差、贝叶斯误差
  6. “御术”林峰:前端10年,始终坚信“为生活带来美好的改变”
  7. 自定义idea archetype
  8. 如何在AWS亚马逊云上运行Angular应用
  9. Java 7 –反编译项目硬币
  10. DND(darmstadt noise dataset)数据集的坑
  11. SAP 以工序为基准进行发料 机加工行业 Goods Issue to Routing
  12. 带你走近AngularJS - 体验指令实例
  13. python的requests库入门必看
  14. 【WinCE】WinCE通过USB与PC同步
  15. 北京交通大学《机器学习》课程总结
  16. 大型机、小型机、x86架构以及ARM架构服务器的区别大型机、小型机、x86架构以及ARM架构服务器的区别
  17. 你了解函数调用过程吗?
  18. 基于S7-1200 PLC实现PIDNN控制仿真
  19. 我的第二个独立开发的邮箱类App—“简邮”(支持QQ、雅虎、阿里云、Outlook)
  20. c语言程序设计常用思维,C语言程序设计中计算思维的思考①

热门文章

  1. 【字符串问题】求一个字符串中重复出现的最长的子串
  2. js如何读取客户端Excel文件
  3. python获取window共享目录列表_利用Python获取DICOM RTstructure勾画列表
  4. 便携式三星mysql_JDBC链接mysql - 三星蓝
  5. Golang语言写99乘法表-双重for循环
  6. Python的虚拟环境配置(pyenv+virtualenv)
  7. 第七季1:MP4文件格式解析
  8. psql切换schema_PostgreSQL教程(二):模式Schema详解
  9. 学习《深度学习入门:基于Python的理论与实现》高清中文版PDF+源代码
  10. 【面试】c++单例模式