一 GPIO寄存器整体上分为三类:a.控制寄存器;b.数据寄存器;c.锁存寄存器
A.控制寄存器(GPIO_CRL或者GPIO_CRH(CRL对应低8,CRH对应高8位))。具体如下见手册106页
CNFx[1:0]MODE[1:0]
XX00-----输入模式(一般不谈速率)
XX01-----输出模式(10M速率)
XX10----输出模式(2M速率)
XX11----输出模式(50M速率)
在输出模式下(50M为例)
0011----通用推挽输出
0111----通用开漏输出
1011----复用推挽输出
1111----复用开漏输出
在输入模式下
0000---模拟输入(ADC用)
0100---浮空输入
1000---上拉/下拉输入(当对应为ODR输出1时为上拉,输出0时为下拉)
具体应用如下:
B.数据寄存器 1)输入数据寄存器IDR; 2)输出数据寄存器ODR; 3)位设置/清除寄存器BSSR ;4)位清除寄存器BRR
BSSR可以实现两个位同步变化;也可以实现“读改写”
C.锁存寄存器
这个还是有点问题????????
前两类是一定要掌握的,每个外设的每个寄存器一定要看一遍,必须得过一边。
关键字:STM32 GPIO 寄存器
引用地址:
STM32的GPIO寄存器概述
推荐阅读最新更新时间:2024-03-16 16:12
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寄存器映射)
[单片机]
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,所
[单片机]
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
[单片机]
基于STM32编写一个SPI接口例程
引言 SPI是串行外设接口的缩写,是一种高速的,全双工,同步的通信总线。由于SPI高速和同步的特性,使其成为嵌入式系统和小型设备中使用最广泛的几种通信接口之一。本文将详细讲解一下SPI,并且最后基于STM32编写一个例程。 介绍 SPI简介 SPI(Serial Peripheral Interface)是一种串行外设接口,用于在微控制器(MCU)或数字信号处理器(DSP)等主设备与外部设备之间进行通信。SPI的设计旨在实现高速数据传输和简单的硬件实现。 SPI接口通常由一个主设备(Master)和一个或多个从设备(Slave)组成。主设备控制通信的时序和数据传输,而从设备根据主设备的指令进行响应。SPI通信基于全双工传输方式
[单片机]