STM32学习笔记--GPIO寄存器的定义

发布者:和谐相伴最新更新时间:2017-10-31 来源: eefocus关键字:STM32  GPIO  寄存器 手机看文章 扫描二维码
随时随地手机看文章

1、GPIO的寄存器按照功能可以分为以下几类:

A、配置寄存器

B、数据寄存器

C、位寄存器

D、   锁定寄存器

2、对于GPIO端口,每个端口有16个引脚,每个引脚的模式由寄存器的四个位控制,每四位又分为两位控制引脚配置(CNFy[1:0]),两位控制引脚的模式及最高速度(MODEy[1:0]),其中y表示第y个引脚。配置GPIO引脚模式的一共有两个寄存器,CRH是高寄存器,用来配置高8位引脚,还有CRL配置低八位引脚。

3、端口位设置\清除寄存器(GPIOx_BSRR)

一个引脚 y 的输出数据由 GPIOx_BSRR 寄存器位的2 个位来控制分别为 BRy (Bit Reset y)和BSy (Bit Set y),BRy 位用于写 1清零,使引脚输出低电平,BSy 位用来写 1 置 1,使引脚输出高 电平。而对这两个位进行写零都是无效的。

4、Cortex-M3 有 32 根地址线,所以它的

寻址空间大小为 2^32 bit=4GB。ARM 公司设计时,预先把这 4GB 的寻址空间大致地分配好了。它把地址从 0x4000 0000 至 0x5FFF FFFF( 512MB )的地址分配给片上外设。

5、stm32f10x.h 这个文件中重要的内容就是把 STM32 的所有寄存器进行地址映射。如同 51 单片机的头文件一样,stm32f10x.h 像一个大表格,我们在使用的时候就是通过宏定义进行类似查表的操作。

6、STM32总线有AHB总线、APB2总线、APB1总线

7、时钟系统。

A、从时钟频率来说分为告诉时钟和低速时钟,高速时钟是提供给芯片主体时钟,而低速时钟只是提供给芯片中的RTC及独立看门狗使用。

B、从芯片角度来说,时钟源分为内部时钟与外部时钟源 ,内部时钟是在芯片内部 RC 振荡器产生的,起振较快,所以时钟在芯片刚上电的时候,默认使用

内部高速时钟。而外部时钟信号是由外部的晶振输入的,在精度和稳定性上都有很大优势,所以上电之后我们再通过软件配置,转而采用外部时钟信号。

 

8、stm32f10x.h相当于STC12C616AD.H其作用就是定义了寄存器与外设之间的关系,类似于一个大的查找表。

 

9、STM32从3.0库开始引入了CMSIS,CMSIS是Cortex微控制器软件接口标准(Cortex MicroController Software Interface Standard)的缩写,这个是ARM定制的一个用于Cortex-M系列的一个标准,主要是为了提供通用api接口来访问内核和一些片上外设,提高代码的可移植性。

 

CMSIS有三个层:核内外设访问层Core Peripheral Access Layer(CPAL),中间件访问层Middleware Access Layer(MWAL),设备访问层(Device Peripheral Access Layer)。

CPAL用于访问内核的寄存器和组件,如NVIC,调试系统等。该层是由ARM实现的。

MWAL用于对中间件的访问,现在该层还未实现。(也不知道所谓的中间件是什么东西)。

DPAL用于定义一些硬件寄存器的地址和一些外设访问函数,由芯片制造商实现。

 

CPAL层的实现就是Core_cm3.c文件,DPAL层的实现就是system_stm32f10x.c文件(似乎还应该加上外设的函数库)。

 

10、在 CoreSupport 中的是位于 CMSIS 标准的核内设备函数层  的 M3 核通用

的源文件 core_cm3.c 和头文件 core_cm3.h ,它们的作用是为那些采用

Cortex-M3 核设计 SOC 的芯片商设计的芯片外设提供一个进入 M3 内核的接

口。这两个文件在其它公司的 M3 系列芯片也是相同的。

 

11、system_stm32f10x.c,是由 ST 公司提供的,遵守 CMSIS 标准。该文件

的功能是设置系统时钟和总线时钟

 

12、startup_stm32f10x_hd.s启动文件是任何处理器在上点复位之后最先运行的一段汇编程序。在我们编写的 c 语言代码运行之前,需要由汇编为 c 语言的运行建立一个合适的环境,接下来才能运行我们的程序。


关键字:STM32  GPIO  寄存器 引用地址:STM32学习笔记--GPIO寄存器的定义

上一篇:STM32的四种输入方式
下一篇:STM32学习笔记----keil工程的建立

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

STM8 全局配置寄存器(CFG_GCR)
激活级别 用户可通过对CFG_GCR寄存器中的AL位编程来配置MCU的激活级别。如何使用该位请参考 10.4活动等级/低功耗模式的控制。 禁用SWIM 在STM8 MCU复位后的默认情况下,SWIM引脚被配置为可以通过SWIM协议和外部工具通讯来对CPU 调试或对FLASH/EEPROM编程。当CFG_GCR寄存器的SWD位被置1时,SWIM引脚被配置为 普通I/O口。 全局配置寄存器(CFG_GCR)描述 地址偏移值:0x00 复位值:0x00 全局配置寄存器映射及复位值 CFG_GCR在STM8地址空间的映射如表2。 (表2:STM8 CFG_GCR寄存器映射)
[单片机]
STM8 全局配置<font color='red'>寄存器</font>(CFG_GCR)
Ubuntu下安装Stm32的Eclipse的开发环境(2)
序 linux的GUI和windos比起来实在逊色,虽然它的终端模式(命令行模式)非常强大。linux发行版ubuntu的GUI相对其他版本要华丽一些,所以最近由redhat转向ubuntu进行linux的学习。曾经一度使用gcc命令行模式来编译、调试C程序,但是我还是渴望一个C/C++集成开发环境可以给我更好的视觉感受和方便的操作,以避免命令行的繁琐操作,所以就尝试着在自己的ubuntu上装一个eclipse的集成开发环境。 eclipse简介 eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标
[单片机]
不可错过的单片机STM32的5个时钟源知识
  众所周知STM32有5个时钟源HSI、HSE、LSI、LSE、PLL,其实他只有四个,因为从上图中可以看到PLL都是由HSI或HSE提供的。   其中,高速时钟(HSE和HSI)提供给芯片主体的主时钟.低速时钟(LSE和LSI)只是提供给芯片中的RTC(实时时钟)及独立看门狗使用,图中可以看出高速时钟也可以提供给RTC。   内部时钟是在芯片内部RC振荡器产生的,起振较快,所以时钟在芯片刚上电的时候,默认使用内部高速时钟。而外部时钟信号是由外部的晶振输入的,在精度和稳定性上都有很大优势,所以上电之后我们再通过软件配置,转而采用外部时钟信号.   高速外部时钟(HSE):以外部晶振作时钟源,晶振频率可取范围为4~16MHz
[单片机]
PIC单片机的内部A/D转换
//需求,将板子上电位器接RA0,设置PIC的AD相关寄存器,显示电压 #include pic.h __CONFIG(0x3831);//配置位18323831 #define uint unsigned int #define uchar unsigned char //共阴数码管(板子上用了达林顿管ULN2003,反向器) const unsigned char table ={0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,0x7f,0x6f}; //加小数点的共阴数码管显示,非常不错 const uchar table1 ={0xbf,0x86,0xdb,0xcf,0xe6,0xed
[单片机]
STM32F103将JTAG口重映射成为普通GPIO
Mini STM32的初学习者来说为什么用到PB3和PB4时无法控制输出呢? 首先,STM32F10x系列的MCU复位后,PA13/14/15 & PB3/4默认配置为JTAG功能。有时我们为了充分利用MCU I/O口的资源,会把这些 端口设置为普通I/O口。具体方法如下: 在GPIO_Configuration(); // 配置使用的 GPIO 口: GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); // 改变指定管脚的映射 GPIO_Remap_SWJ_Disable SWJ 完全禁用(JTAG+SW-DP) GPIO_PinRemapConfig(GPIO_Remap
[单片机]
【STM32Cube_03】使用GPIO点亮一个LED
1. 准备工作 硬件准备 首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi): 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码。 2.生成MDK工程 选择芯片型号 打开STM32CubeMX,打开MCU选择器: 搜索并选中芯片STM32L431RCT6: 配置时钟源 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC; 如果使用默认内部时钟(HSI),这一步可以略过; 这里我都使用外部时钟: 配置GPIO引脚 在原理图上如下: 所以接下来我们选择配置PC13引脚: 配置时钟树 STM32L4的最高主频到80M,所
[单片机]
【STM32Cube_03】使用<font color='red'>GPIO</font>点亮一个LED
STM32 之 NVIC(中断向量、优先级) 简述
一、背景 需要使用STM32的CAN进行通信,经过一系列配置后,已可正常收发,还剩下一个CAN通信的错误处理。可错 误中断使能寄存器已经配置使能了,出错后就是无法进入 CAN1_SCE_IRQHandler 中断。(让CAN通信出错的的 办法很简单,将 CAN_H 与 CAN_L 直接短接,然后让其发送数据,正常情况下,就会触发错误中断了,发送错 误寄存器会瞬间加至 128 ,如果继续发,每发一次,发送错误计数器会+8,直到256,然后CAN节点即会进入离 线状态,也就是 Bus off 状态)。 一步一步查,才发现, CAN1_SCE_IRQn 的M3内核中断没有开,也就是NVIC相关配置。对于N
[单片机]
<font color='red'>STM32</font> 之 NVIC(中断向量、优先级) 简述
基于STM32编写一个SPI接口例程
引言 SPI是串行外设接口的缩写,是一种高速的,全双工,同步的通信总线。由于SPI高速和同步的特性,使其成为嵌入式系统和小型设备中使用最广泛的几种通信接口之一。本文将详细讲解一下SPI,并且最后基于STM32编写一个例程。 介绍 SPI简介 SPI(Serial Peripheral Interface)是一种串行外设接口,用于在微控制器(MCU)或数字信号处理器(DSP)等主设备与外部设备之间进行通信。SPI的设计旨在实现高速数据传输和简单的硬件实现。 SPI接口通常由一个主设备(Master)和一个或多个从设备(Slave)组成。主设备控制通信的时序和数据传输,而从设备根据主设备的指令进行响应。SPI通信基于全双工传输方式
[单片机]
基于<font color='red'>STM32</font>编写一个SPI接口例程
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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