stm32f407之GPIO(操作寄存器)

发布者:MysticEssence最新更新时间:2018-09-20 来源: eefocus关键字:stm32f407  GPIO  操作寄存器 手机看文章 扫描二维码
随时随地手机看文章

四、GPIO


stm32f407VG这款单片机上共有PA-PE共5×16共80个复用IO口,每个通用I / O端口有4个32位配置寄存器(GPIOx_MODERGPIOx_OTYPER GPIOx_OSPEEDR GPIOx_PUPDR),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位的置位/复位寄存器(GPIOx_BSRR),32位锁定寄存器(GPIOx_LCKR)和两个32位的备用功能选择寄存器(GPIOx_AFRHGPIOx_AFRL)。



设置步骤:


1.     使能相关时钟


2.     设置相应的IO口为输入或输出


3.     设置输入\输出的类型


4.     设置输出的速度(如果设置为输入,此步跳过)


5.     如果输出速度>=50M,开启补偿单元


6.     设置上拉下拉寄存器


7.     通过复位置位寄存器和输入输出数据寄存器进行操作。







程序:


[cpp] view plaincopy

/************************************ 

    标题:操作GPIO的练习 

    软件平台:IAR for ARM6.21 

    硬件平台:stm32f4-discovery 

    主频:168M 

     

    author:小船 

    data:2012-01-16 

*************************************/  

  

#include   

  

uint32_t Gb_TimingDelay;  

  

void Delay(uint32_t nTime);  

  

void main ()  

{     

  SysTick_Config(SystemCoreClock / 1000);    //设置systemtick一毫秒中断  

    

  RCC->AHB1ENR |= 0x00000008;    //使能GPIOD时钟  

  RCC->APB2ENR |= (1<<14);     //使能syscfg时钟  

    

  GPIOD->MODER &= 0x00FFFFFF;     //设置PD12,13,14,15输出  

  GPIOD->MODER |= 0x55000000;   

    

  GPIOD->OTYPER &= 0xFFFF0FFF;   //设置PD12,13,14,15推挽输出  

    

  GPIOD->OSPEEDR &= 0x00FFFFFF;  //PD12,13,14,15 速度100m  

  GPIOD->OSPEEDR |= 0xff000000;  

    

  SYSCFG->CMPCR = 0x00000001;    //使用IO补偿单元,  

//当GPIO速度超过50M的时候要考虑使用此设置  

    

  GPIOD->PUPDR &= 0x00FFFFFF;    //PD12,13,14,15 无上拉无下拉  

    

  GPIOD->BSRRH = 0xf000;      //reset register GPIOx_BSRRH, write only  

                            //set register GPIOx_BSRRL, write only  

    

  while(1)  

  {  

      GPIOD->BSRRH = 0xf000;  

      GPIOD->BSRRL = 0x1000;   

      Delay(500);  

        

      GPIOD->BSRRH = 0xf000;  

      GPIOD->BSRRL = 0x1000<<1;  

      Delay(500);  

        

      GPIOD->BSRRH = 0xf000;  

      GPIOD->BSRRL = 0x1000<<2;  

      Delay(500);  

        

      GPIOD->BSRRH = 0xf000;  

      GPIOD->BSRRL = 0x1000<<3;  

      Delay(500);  

  }  

}  

  

void Delay(uint32_t nTime)  

{   

  Gb_TimingDelay = nTime;  

  

  while(Gb_TimingDelay != 0);  

}  

  

  

void SysTick_Handler(void)  

{  

  if (Gb_TimingDelay != 0x00)  

  {   

    Gb_TimingDelay--;  

  }  

}  


关键字:stm32f407  GPIO  操作寄存器 引用地址:stm32f407之GPIO(操作寄存器)

上一篇:VR ELF文件的生成与烧录
下一篇:stm32f407之ADC(操作寄存器)

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

STC15W408AS单片机GPIO口介绍及其工作模式
一、GPIO口介绍 STC15W408AS单片机有14个I/O口。其所有I/O口均可由软件配置成4种类型。4种类型分别为:准双向口/弱上拉(标准8051输出模式)、推挽输出/强上拉、高阻输入(电流既不能流入也不能流出)或开漏输出功能。每个口由2个控制寄存器中的相应位控制每个引脚工作类型。STC15系列单片机的I/O口上电复位后为准双向口/弱上拉(传统8051的I/O口)模式。每个I/O口驱动能力均可达到20mA,但40-pin及40-pin以上单片机的整个芯片最大不要超过120mA,20-pin以上及32-pin以下(包括32-pin)单片机的整个芯片最大不要超过90mA。 P3口类似。 注意: 虽然每个I/O口在弱上拉(准双
[单片机]
STC15W408AS单片机<font color='red'>GPIO</font>口介绍及其工作模式
STM32库函数中GPIO_Init的理解
STM32中GPIO的配置风格和以往研究的MCU有很大的不同,研究了好一段时间才搞通。 typedef enum { GPIO_Mode_AIN = 0x0, GPIO_Mode_IN_FLOATING = 0x04, GPIO_Mode_IPD = 0x28, GPIO_Mode_IPU = 0x48, GPIO_Mode_Out_OD = 0x14, GPIO_Mode_Out_PP = 0x10, GPIO_Mode_AF_OD = 0x1C, GPIO_Mode_AF_PP = 0x18 }GPIOMode_TypeDef; 配置一个引脚只需要4位寄存器,而上面却定义了8位,仔细研究GPIO_Init()
[单片机]
小熊stm32学习总结:stm32f407 GPIO_PinAFConfig 函数
备用功能配置(除ADC和DAC外的所有非GPIO功能),使用函数 void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF) * This GPIO_AF can be one of the following values: * @arg GPIO_AF_RTC_50Hz: Connect RTC_50Hz pin to AF0 (default after reset) * @arg GPIO_AF_MCO: Connect MCO pin (MCO1 and MCO2) to AF0
[单片机]
GPIO寄存器描述
一、端口配置低寄存器(GPIOx_CRL) (x=A..E) 控制低8位引脚 二、端口配置高寄存器(GPIOx_CRH) (x=A..E) 控制高8位引脚 三、端口输入数据寄存器(GPIOx_IDR) (x=A..E) 四、端口输出数据寄存器(GPIOx_ODR) (x=A..E) 五、端口位设置/清除寄存器(GPIOx_BSRR) (x=A..E) 六、端口位清除寄存器(GPIOx_BRR) (x=A..E) 七、端口配置锁定寄存器(GPIOx_LCKR) (x=A..E)
[单片机]
<font color='red'>GPIO</font><font color='red'>寄存器</font>描述
STM32 基于 CubeMX配置GPIO点亮LED灯
1 前言 本文基于ST的STM32F767ZI NUCLEO144开发板,结合CubeIDE的插件CubeMX配置生成代码点亮板载的LED,点亮可谓是单片机开发中的hello world,非常简单; 2 理论分析 2.1 LED 原理 发光二极管简称为LED,生活中几乎无处不在,由含镓(Ga)、砷(As)、磷(P)、氮(N)等的化合物制成。当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管。在电路及仪器中作为指示灯,或者组成文字或数字显示。砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光,氮化镓二极管发蓝光。因化学性质又分有机发光二极管OLED和无机发光二极管LED 1 。 LED是正向
[单片机]
STM32 基于 CubeMX配置<font color='red'>GPIO</font>点亮LED灯
1.10.7_I2C_测试_P
测试总结: 中断没产生:未配置GPIO用于IIC功能; 只产生一次中断,并且出错:tx err, no ack:启动传输前,IICSTAT = (1 4); 第一次读OK,再次写卡死,复位仍然卡死,重新上电再写OK:查看AT24cxx芯片手册,读最后一个数据时,不要回应ACK给AT24cxx。
[单片机]
1.10.7_I2C_测试_P
三星S3C2440的GPIO输出驱动led
从今天开始stm32先告一段落了,开始学习ARM920T架构三星公司的S3C2440,今天是头一天学习,感觉难度要比STM32的难度大得多,主要还是涉及到操作系统就脑袋疼,和学习51和stm32时的步骤一样,第一次都是先从IO输出学起,与stm32的IO相比,S3C2440的IO功能起码现在感觉不如stm32,和stm32一对比stm32若要驱动IO,必须先要开启对应的IO时钟,而且输出速率可为10M 3M50M,并可以配置为4种输出模式,三种输入模式,并且每个IO都能够用来产生外部中断,相比之下S3C2440的IO共130个,使用之前并不需要开启对应的IO时钟,从低功耗来说,stm32简直太强大了,而且只有24个管脚能产生外部中
[单片机]
用AT91 RM9200构建高可靠嵌入式系统
   摘要 提出一种基于AT91RM9200处理器的高可靠双机温备解决方案。利用EPlC6、MAX6374设计两个冗余的外部Watchdog监控处理器系统的工作状态,利用AT91RM9200自带的Watchdog作为内部监测机制监控处理器本身的故障;设计并给出了以AT91RM9200为核心的监控机制的具体实现,包括心跳信号的发送和中断服务程序的设计。   本文设计了一种以AT91RM9200处理器为核心的高可靠嵌入式系统。系统具有两台机组,当一台机组发生故障后,另一台机组接管工作并继续运行。系统提供外部和内部Watchdog(看门狗)监控机制构成一级冗余、两级监控的可靠性设计方案。其中外部Watchdog分别采用MAX6374和
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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