STM32单片机,有了端口才能和外界联系,学会了端口控制,才能更好地利用外设。建立和外界的联系,发挥自身的优点。
首先介绍一下基本的GPIO相关的寄存器:
1, GPIOX_CRL 低8位端口配置寄存器
这个寄存器主要是对配置管脚是输入还是输出:
其中1)MODEy[1:0]主要是配置是输入端口还是输出端口的。配置为输出得时候还可以配置输出的管脚速度等级。
2)CNFy[1:0] 主要是两种形式,在端口配置输入的时候,即MODEy[1:0]位00(输入),用来配置输入的模式,主要是模拟输入,浮空输入,上拉模式和下拉模式。
3)CNFy[1:0]在端口配置为输出的时候,用来控制输入的模式。具体看手册吧。
总得来说,就是MODEy[1:0] 先配置管脚是输入还是输出,是输入就继续配置CNFy[1:0]来配置输出管脚的连接模式。要是输出的话,就继续配置MODEy[1:0]的管脚速度速度等级,之后再配置管脚的连接模式。上拉,下拉,推免,开漏等等。具体运用的时候看看手册就明白了。
2, GPIOX_CRH 高8位端口配置寄存器
和GPIOX_CRH 完全一样,只是端口换成高8位了。不说了,看看就明白了!
3, GPIOX_ODR 端口输出数据寄存器
学过AVR的都知道,输出的时候有输出数据寄存器,STM32也一样。思想COPY过来,就自然知道了GPIOX_ODR是做什么的了。不过要注意的是,这个玩意不能一个位一个位的去操作,还是51的简单啊,不过原子大哥已经把那个端口映射可操作位段,不明白,还是看自己的吧。一个GPIOA端口就16位,自然的32位的GPIOX_ODR 就只有低16位有效了,想输出什么就给这个寄存器赋值就OK了。
或者用GPIOA->ODR |=(1<ODR &=(0<
完成了这一步,我们就可以软件延时,控制输出流水灯了。前提是开启设备时钟哦。
4, GPIOX_IDR 端口输入数据寄存器
这个寄存器用到的前提是端口配置为输入模式时候。什么时候想读取值,就什么时候读取吧。大家都明白。
5, GPIOX_BSRR 端口位设置/清除寄存器
这个寄存器我用了一些,别的也不会。就感觉超级好用。用起来很方便。比如你端口配置好了。想PA5输出“1”。就GPIOA->BSRR |=(1<<5);5是对应的哦。输出“0”,一样的
GPIO->BSRR |=(1<<(5+16));为什么加16,你明白的。
6, GPIOX_BRR 端口位清除寄存器
晚上百度了一下,有了GPIOX_BSRR 为什么还要有GPIOX_BRR ,没看明白。有了拿来就用就对了。一样的和GPIOx_BSRR一样的用法。专门清除的。GPIOA->BRR |= (1<
关键字:STM32 GPIO 寄存器
引用地址:STM32 GPIO 相关寄存器(二)
7, 端口配置锁定寄存器GPIOX_LCKR,锁定了当然就不能修改了。保护了。避免不小心造成的失误。以后用到了在琢磨吧。
上一篇:基于单片机的DES加密解密算法C源码
下一篇:9G-STM32 MDK-ARM开发过程简介
推荐阅读最新更新时间:2024-03-16 14:26
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通信基于全双工传输方式
[单片机]
小广播
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐
最新单片机文章
更多精选电路图
更多热门文章
更多每日新闻
更多往期活动
11月14日历史上的今天
厂商技术中心
随便看看