历史上的今天
返回首页

历史上的今天

今天是:2025年08月21日(星期四)

正在发生

2018年08月21日 | STM32F407的GPIO操作

2018-08-21 来源:eefocus

/*
#include "stm32f4_discovery.h"
#include "stm32f4xx_conf.h"
 


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(100);
        GPIOD->BSRRH = 0xf000;
        GPIOD->BSRRL = 0x1000<<1;
        Delay(100);
        GPIOD->BSRRH = 0xf000;
        GPIOD->BSRRL = 0x1000<<2;
        Delay(100);
        GPIOD->BSRRH = 0xf000;
        GPIOD->BSRRL = 0x1000<<3;
        Delay(100);
    }
}

void Delay(uint32_t nTime)
{
    Gb_TimingDelay = nTime;
    while(Gb_TimingDelay != 0);
}
void SysTick_Handler(void)
{
    if (Gb_TimingDelay != 0x00)
    {
        Gb_TimingDelay--;
    }
}
*/

#include "stm32f4_discovery.h"
#include "stm32f4xx_conf.h"
  
uint32_t Gb_TimingDelay;
void Delay(uint32_t nTime);

void main( )
{
    SysTick_Config(SystemCoreClock / 1000); //设置systemtick 一毫秒中断
    
    /*
    //Initialize LEDs mounted on STM32F4-Discovery board 
    STM_EVAL_LEDInit(LED4);
    STM_EVAL_LEDInit(LED3);
    STM_EVAL_LEDInit(LED5);
    STM_EVAL_LEDInit(LED6);
      
    //Turn on LED4 and LED5 
    STM_EVAL_LEDOn(LED4);
    STM_EVAL_LEDOn(LED5);
    
    while(1)
    {
        //Toggle LED3 and LED6 
        STM_EVAL_LEDToggle(LED3);
        STM_EVAL_LEDToggle(LED6);

        //Insert a delay 
        Delay(100);

        //Toggle LED4 and LED5 
        STM_EVAL_LEDToggle(LED4);
        STM_EVAL_LEDToggle(LED5);

        //Insert a delay 
        Delay(100);     
    }
    */
    
    //-------------------------------------
    GPIO_InitTypeDef  GPIO_InitStructure;
  
    //Enable the GPIO_LED Clock 
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

    //Configure the GPIO_LED pin 
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOD, &GPIO_InitStructure);
    //点亮这个灯
    GPIOD->BSRRL = GPIO_Pin_12;
    
    while(1)
    {
        //  
        GPIOD->ODR ^= GPIO_Pin_12;
        //Insert a delay 
        Delay(100);     
    }
    
}

void Delay(uint32_t nTime)
{
    Gb_TimingDelay = nTime;
    while(Gb_TimingDelay != 0);
}
void SysTick_Handler(void)
{
    if (Gb_TimingDelay != 0x00)
    {
        Gb_TimingDelay--;
    }
}


推荐阅读

史海拾趣

北京人民电器厂公司的发展小趣事

随着北京人民电器产品的不断优化和升级,其生产的GM系列直流断路器在发电、输变电系统中得到了广泛应用。众多电力企业和项目都选择了北京人民电器的产品,这不仅是对其产品质量和技术水平的认可,也进一步推动了公司在电力行业的深入发展。

BeagleBoard公司的发展小趣事

随着产品线的不断丰富和品质的不断提升,BeagleBoard公司在市场上逐渐获得了更多的认可。他们不仅在国内市场取得了显著的成绩,还积极拓展国际市场,与全球范围内的开发者和企业建立了广泛的合作关系。通过与合作伙伴的共同努力,BeagleBoard的产品逐渐渗透到各个行业领域,为嵌入式系统的发展做出了重要贡献。

驰兴电感(Coilank)公司的发展小趣事

随着电子行业的快速发展,驰兴电感紧跟市场趋势,不断拓展产品应用领域。除了传统的消费电子和通讯领域外,驰兴电感还成功将产品应用于汽车电子、网络通讯、智能家居等新兴领域。这些领域的拓展不仅为公司带来了更广阔的市场空间,也进一步提升了驰兴电感在电子行业中的地位。

Catalyst公司的发展小趣事

Catalyst公司在电子行业的初创期,以其独特的创新理念和前瞻性的技术布局,奠定了坚实的基础。公司创始团队由一群对电子行业充满热情的工程师和科学家组成,他们共同致力于研发高效、稳定的电子产品。通过不断的技术研发和市场调研,Catalyst成功推出了一系列具有竞争力的产品,逐步在市场中崭露头角。

DENWIRE公司的发展小趣事

Catalyst公司深知品质是企业生存和发展的根本。因此,公司始终将品质管理放在首位,从原材料采购到生产加工、产品检验等各个环节都进行严格把控。公司还建立了完善的售后服务体系,确保客户在使用过程中能够得到及时、专业的技术支持。这些举措不仅提升了Catalyst产品的品质水平,也赢得了客户的信任和好评。

国芯佳品公司的发展小趣事

随着电子行业的快速发展,Catalyst公司不断追求技术创新和突破。在某次关键的技术研发中,公司成功攻克了一项行业难题,推出了一款具有划时代意义的新产品。这款产品不仅性能卓越,而且具有极高的性价比,迅速赢得了市场的广泛认可。Catalyst凭借这一技术突破,成功引领了市场潮流,进一步巩固了其在行业内的领先地位。

问答坊 | AI 解惑

CodeWarrior 10.0

CodeWarrior for Microcontrollers v10.0 Beta同时支持HCS08, RS08, CodeFire V1-V4 http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=CW-MCU10&tid=vancwmcu10 http://www.freescale.com/webapp/sps/site/overview.jsp?code=C ...…

查看全部问答>

最新硬件测试技术

对硬件设计人员和测试人员提高设计测试水平有益。59页的内容包括: 硬件测试概述 硬件测试前准备 硬件测试的种类与操作 硬件测试的级别 可靠性测试 测试问题解决 测试效果评估 硬件测试参考的通信技术标准 测试规范制定 测试人员的培养…

查看全部问答>

如何在WinCE下用EVC连接并操作PC上的SQL Server数据库

很急的,要在PocketPC上开发一个程序,能够连接服务器上的SQLServer 数据库,并获取其中的记录数据进行显示,我查了一下资料,有的说在CE上不能直接连接PC上的数据库,有的说在CE上用SQL CE,然后与PC上的SQL连接,还有的说做个web service,那么究 ...…

查看全部问答>

请问,cc2430串口不能中断接收的问题

cc2430给的样例程序中的串口接收不是中断方式的。我写了一个串口中断方式接收的程序,发现明明收到东西了,可它怎么也不进中断。下面是我的程序,波特率。 void URX0Init(void) {   U0CSR |= UART_ENABLE_RECEIVE;   URX0I ...…

查看全部问答>

Debug 和 Release 编译方式的区别

本文主要包含如下内容:1. Debug 和 Release 编译方式的本质区别2. 哪些情况下 Release 版会出错3. 怎样“调试” Release 版的程序--------------------------------------            关于Debug和Release ...…

查看全部问答>

ise 仿真结果均为高阻态

在用fpga产生正弦波,调用ISE 的ROM 内核,但是在仿真时,结果输出均为高阻态。ROM的数据由MATLAB产生,请问是为什么?? module sincose(data,we,clk,ce,reset,sine     );          input we;//enabl ...…

查看全部问答>

CortexA8+DSP BeagleBoard 板子+扩展板

去年十一月份chipsee购买,基本没用过,九成新,运行Android完美,wifi链接完美。 原价2700,出收价:2300,可淘宝链接:   http://ershou.taobao.com/item.htm?id=14036298782    有诚意的加qq:307799870   板子详 ...…

查看全部问答>

【求助】共享库查找路径被修改导致现在终端命令不可用,如何恢复共享库路径?

昨天为了安装qt的编译环境,对环境变量进行了设置,其中包括共享库的查找路径,本来是应该进行一个临时设置的,但是我当时为了省时间,就在/etc/bash.bashrc里修改了“LD_LIBRARY_PATH”,结果昨晚关机前忘了把这个路径改回来了,导致今天登陆ubunt ...…

查看全部问答>

家用报警器技术分析

  前段时间网上一直有网友爆料:“现在的小偷特别厉害,不到三分钟时间就可以把用户的锁打开进行偷盗。”这一条新闻的爆料,让很多人都担惊受怕。\"锡纸开锁三秒不到\",讲的是如何用锡纸片去开锁。这天新闻在网上很火。由于目前城市内住户主要采 ...…

查看全部问答>

TI 的I2C代码,不出结果,有个点看不懂,求指教

代码如下,不知道为什么开的是RX中断,却用TX中断向量接受,我下到片子里,发现连时钟都没有输出,我用的G2553的LaunchPad//****************************************************************************** //  MSP430G2xx3 Demo - US ...…

查看全部问答>