四、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(操作寄存器)

推荐阅读

阿里巴巴逐步加码芯片领域的投入。 9月19日,阿里巴巴首席技术官张建锋宣布,达摩院的神经网络芯片Ali-NPU将于明年4月正式商用落地,同时成立平头哥半导体有限公司。张建锋向21世纪经济报道等媒体透露,平头哥的形象取自“世界上最无所畏惧的动物”蜜獾,寓意这家公司学习“不怕”的精神,要持续地负重前行。 阿里巴巴进军芯片领域,步伐不可谓...
汽车电子是当前一个热门开发领域,中国汽车市场的蓬勃发展为本土汽车电子产业带来了新的机遇。越来越多的企业纷纷加大了在汽车电子产品上的投入力度,包括ECU、ABS、DVD、GPS、HVAC、CANBUS等在内的大量汽车电子产品的本土化设计制造厂商如雨后春笋般冒升,这也为从事电路保护设计的电子元器件厂商开辟出一片崭新的天地。安全、可靠性至关重要保险丝是一类...
彭博社最新报道,美国总统特朗普已经“原则上”同意美国政府收到的关于TikTok的解决方案。该方案不涉及技术与算法转让。“我已经对这笔交易表达了祝福,”特朗普9月19日离开白宫前往参加竞选集会时告诉记者,“我在原则上同意了这笔交易。”法新社消息,美国总统特朗普当地时间18日表示,他预计与TikTok的交易将很快达成,以缓解美国政府所谓的“安全”担...
9月16日-18日,第23届中国国际光电博览会将在深圳国际会展中心盛大举行,而作为本届CIOE中国光博会重要活动之一,光子产业发展及投融资论坛于9月17日举行,该论坛以 “与光同行·探索科技新生态”为主题,中科创星、外号科技、飞芯电子、彗晶新材料、中科微光、光舟半导体等厂商及各投资机构共商光子科技成果转化,引导市场价值新方向。当前,新一轮科技...

史海拾趣

问答坊 | AI 解惑

单片机来电显示器的设计与实现

摘要:介绍一种利用单片机AT89C52接收并显示电话主叫号码的来电显示器。该显示器在被叫挂机状态下接收以频移键控(FSK)方式传送的主叫识别信息,可显示主叫电话号码、呼叫日期、时间等信息,并可存储多达120条的主叫号码信息。用户使用上、下翻转 ...…

查看全部问答∨

常用ARM指令集及汇编

各种命令的简单讲解,很好的查阅资料…

查看全部问答∨

这个电路能改成电子控制的吗?

这是一个机械臂继电器控制电路!想用电子电路改造一下!不知可否? (机械臂原始位置在A点XW1位,启动按钮后开始向B点运动电机正转,接触到XW2时电机反转,返回到A点停止等待下一次启动!)…

查看全部问答∨

91program ,yashi高手都来看看,EventModify函数的实现问题

控制面版里的显示里面有一个背景光的对话框,这里只是实现了注册表的更改,现在我想在这里实现对背光的控制。 我找到了实现代码的地方在D:\\WINCE500\\PUBLIC\\WCESHELLFE\\OAK\\CTLPNL\\CPLMAIN这里的screen.cpp里面 HANDLE hEvent = CreateEven ...…

查看全部问答∨

朗科U盘变成OTi的U盘了

我在使用一些U盘量产工具时,不知道怎么搞的,朗科U盘变成OTi的U盘了.现在无论在哪台电脑上,插上U盘后就变成了OTi设备了. 请教? …

查看全部问答∨

大家赶快开博吧

从今天开始,如果时间允许,我想每天都写一篇博客,所以从今开始我要开博了,希望大家多多光顾我的博客!~ 其实早就想开博了,但是由于种种原因没有开,现在实习了,想把工作和学习的一些事情写上来,帮助那些还在学校的学弟学妹们了解一下工作人 ...…

查看全部问答∨

【MSP430共享】MSP430F1系列单片机常用模块应用原理

这个是我以前从微控网找到的,非常不错,我就是看它学MSP430的 从基本模块讲起,是不可多得的好资料哟       [ 本帖最后由 ddllxxrr 于 2011-9-8 18:38 编辑 ]…

查看全部问答∨

一种新型433M无线传感自组网--spidermesh

    Spidermesh 是一个无线自组网系统,一个低功耗、小功率(无线发射功率10毫瓦)、短距离(节点间30-70m)、短数据(小于50字节)无线传感网络系统。它的无线工作频段首选433MHz,所有无线设备都工作在同频半双工、双向数据传输的 ...…

查看全部问答∨

PWM输出的端口问题 大神求解!!

PWM输出的口怎么确定        为什么 设置P1SEL就可以了           把P1SEL 寄存器对应的口设为1,代表使用外部模块,但是外部模块有这么多。。 单片机是怎么识别的把他用作 ...…

查看全部问答∨

LED半导体照明应用中存在的问题

1、散热 2、缺乏标准,产品良莠不齐 3、存在价格与设计品质问题,最终消费者选择LED照明,缺乏信心 4、半导体照明在电气设计方面与传统照明有很大差别,传统灯具企业需要经验/技能积累过程 5、大家都看好该市场,但是还没有规模上量 特点: ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved