历史上的今天
返回首页

历史上的今天

今天是:2024年12月05日(星期四)

正在发生

2020年12月05日 | STM32——GPIO(1)

2020-12-05 来源:eefocus

【对单片机的操作就是控制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个寄存器封装,寄存器图中有相对总线的地址偏移*/


推荐阅读

史海拾趣

EXCELTA公司的发展小趣事

随着科技的不断进步和市场的不断变化,Excelta始终将技术创新作为公司发展的核心驱动力。公司投入大量资金和资源进行技术研发和产品创新,不断推出具有竞争力的新产品。其中,一款高性能的微型连接器产品凭借其出色的性能和稳定性在市场上取得了巨大成功。此外,Excelta还积极探索新的应用领域和市场机会,为公司的持续发展注入了新的活力。

飞虹(FeiHong)公司的发展小趣事

2013年8月26日,苏州锋驰微电子有限公司在江苏省苏州市张家港市正式成立,法定代表人为Fang Gang Feng。公司初期便明确了以集成电路IP、物联网、计算机软硬件、电子产品、集成电路及应用电路方案技术的设计、研发为核心业务的发展方向。在成立之初,面对激烈的市场竞争,苏州锋驰凭借对技术的执着追求和敏锐的市场洞察力,逐步在行业内站稳脚跟。

Allen Avionics Inc公司的发展小趣事

随着业务规模的不断扩大,苏州锋驰开始积极拓展国内外市场。公司不仅在国内市场取得了显著的成绩,还逐步将产品和服务推向国际市场。在品牌建设方面,苏州锋驰注重提升品牌知名度和美誉度,通过参加行业展会、举办技术交流会等多种方式,加强与客户的沟通和交流,赢得了广泛的关注和认可。同时,公司还不断优化产品和服务质量,提升客户满意度和忠诚度。

这五个故事共同勾勒出了苏州锋驰微电子有限公司在电子行业中的发展历程和成就,展现了其作为一家科技型中小企业的蓬勃生机和广阔前景。

光磊(GL)公司的发展小趣事

自成立以来,苏州锋驰不断投入研发力量,致力于技术创新。公司成功研发出152、153、2501等系列单片机产品,这些产品广泛应用于消费电子、小家电等产业,赢得了市场的广泛认可。随着技术的不断积累,苏州锋驰还不断推出新产品,以满足客户日益多样化的需求,进一步巩固了其在行业内的地位。

Antex公司的发展小趣事

到了1965年,Antex公司迎来了一次重要的技术突破。公司成功研发出“环形件轧机”,这一创新技术不仅提高了生产效率,还大幅提升了产品的精度和稳定性。这一技术的成功应用,使得Antex的业务范围得到了进一步扩大,公司在电子行业中的地位也愈发稳固。

华宇创公司的发展小趣事

随着市场的不断发展,华宇创意识到单一产品无法满足日益增长的市场需求。于是,公司加大了对研发的投入,积极引进高端人才,与国内外知名科研机构建立合作关系。经过不懈努力,华宇创成功研发出一系列智能电子设备,包括智能手表、智能眼镜、智能家居控制器等。这些新产品的推出不仅丰富了公司的产品线,也进一步提升了华宇创的市场竞争力。

问答坊 | AI 解惑

请问cedit控件重绘问题,c++那边也发了~

在wince上跑应用软件,界面一多CEdit控件就刷新慢,能不能有像图片复制那样的方法来对这些控件进行处理?取得焦点问题如何解决?请问哪位大侠有过此经验,能否说来分享分享?谢谢…

查看全部问答>

招硬件工程师

画王数码现诚聘硬件工程师: 1>一年以上数码产品或相似工作经验 2>熟练使用protel,工作踏实,希望稳定发展 有意者请联系: CS@CSTN-TFT.com 27887481-883 13823557635 …

查看全部问答>

GetSystemPowerState()和GetSystemPowerStateEX()

GetSystemPowerState()怎么用最好给个例子 谢了…

查看全部问答>

MSP430 user guide

http://focus.ti.com/lit/ug/slau144e/slau144e.pdf…

查看全部问答>

J-Link5VAdapter电路图

求一份J-Link 的5V 适配器电路图,JLINK只能支持到3.3V。谢谢了savage_sdj@126.com…

查看全部问答>

2407编程中出现的问题

syntax error at or near symbol \\\'.\\\' 这是怎么回事啊? 出问题的语句是这样的 .title               \\"vectors.asm\\"…

查看全部问答>

程序存贮器

片内程序存贮器空间:0000—0FFF片外程序存贮器空间:1000—FFFF 0000—FFFF 这些用的时候用什么来区分呢 …

查看全部问答>

Altium Designer Winter 09

Altium Designer Winter 09  PCB中的字符怎样同时隐藏和显示出来…

查看全部问答>

去掉JLINK程序不运行【已解决】

自己做的LM3S9B92开发板,连着JLINK时程序正常运行,去掉JLINK就不运行了,求解释。。。 注:没有使用JTAG防死锁,是因为这个原因么?   【复位电路未正常复位,链接JLINK时由JLINK提供复位信号。修改电路后一切正常。】 [ 本 ...…

查看全部问答>

ADC与DAC专题学习

什么是 ADC? “ADC”Analog-to-Digital Converter 的缩写,指模/数转换器或者模拟/数字转换器。真实世界的模拟信号, 例如温度、压力、声音或者图像等,需要转换成更容易储存、处理和发射的数字形式。模/数转换器可以实 现这个功能。 什么是 DA ...…

查看全部问答>