历史上的今天
返回首页

历史上的今天

今天是:2024年09月24日(星期二)

正在发生

2020年09月24日 | STM32F4的IO设置测试

2020-09-24 来源:eefocus

环境:


主机:WIN7


开发环境:MDK4.72


MCU:STM32F407VGT6




说明:


目标板上有一个LED,有一个按键,按键实现LED状态翻转.




LED:PE2,低电平亮,高电平灯灭


按键:PC13,低电平按下,高电平松开




源代码:


main.c



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

*   主文件

* (c)copyright 2014,jdh

*   All Right Reserved

*新建日期:2014/3/25 by jdh

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

 

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

* 头文件

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

 

#include "main.h"

#include "stm32f4xx_rcc.h"

#include "stm32f4xx_gpio.h"

 

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

* 全局变量

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

 

static __IO uint32_t TimingDelay;

 

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

* 函数定义

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

 

void Delay(__IO uint32_t nTime);

 

 

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

* 函数

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

 

int main(void)

{

    //定义IO初始化结构体

GPIO_InitTypeDef GPIO_InitStructure;

    

    //系统时钟:1ms滴答1次

    if (SysTick_Config(SystemCoreClock / 1000))

    { 

        while (1);

    }

  

    //设置LED的IO口

    //初始化时钟

    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);

    //管脚模式:输出口

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;

    //类型:推挽模式

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

    //上拉下拉设置:不使能

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

    //IO口速度

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;

    //管脚指定

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;

    //初始化

GPIO_Init(GPIOE, &GPIO_InitStructure);

    

    //设置按键的IO口

    //初始化时钟

    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);

    //管脚模式:输出口

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;

    //类型:推挽模式

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

    //上拉下拉设置:不使能

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

    //IO口速度

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;

    //管脚指定

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;

    //初始化

GPIO_Init(GPIOC, &GPIO_InitStructure);

 

    while (1)

    {

        //GPIO_SetBits(GPIOE,GPIO_Pin_2);

        //Delay(500);

        //GPIO_ResetBits(GPIOE,GPIO_Pin_2);

        //Delay(500);

        //按键检测

        if (GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13) == 0)

        {

            GPIO_ToggleBits(GPIOE,GPIO_Pin_2);

            Delay(500);

        }

    }

}

 

/**

  * @brief  Inserts a delay time.

  * @param  nTime: specifies the delay time length, in milliseconds.

  * @retval None

  */

void Delay(__IO uint32_t nTime)

  TimingDelay = nTime;

 

  while(TimingDelay != 0);

}

 

/**

  * @brief  Decrements the TimingDelay variable.

  * @param  None

  * @retval None

  */

void TimingDelay_Decrement(void)

{

  if (TimingDelay != 0x00)

  { 

    TimingDelay--;

  }

}

 

#ifdef  USE_FULL_ASSERT

 

/**

  * @brief  Reports the name of the source file and the source line number

  *         where the assert_param error has occurred.

  * @param  file: pointer to the source file name

  * @param  line: assert_param error line source number

  * @retval None

  */

void assert_failed(uint8_t* file, uint32_t line)

  /* User can add his own implementation to report the file name and line number,

     ex: printf("Wrong parameters value: file %s on line %drn", file, line) */

 

  /* Infinite loop */

  while (1)

  {

  }

}

#endif

 

/**

  * @}

  */ 

 

/**

  * @}

  */ 

 

/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/


推荐阅读

史海拾趣

FUJIKURA公司的发展小趣事

FUJIKURA(株式会社藤仓)在电子及光纤通信行业中有着悠久而辉煌的发展历程。以下是五个关于FUJIKURA公司发展起来的相关故事,每个故事均基于事实描述,并尽量保持字数在500字以上:

1. 创立与早期发展

FUJIKURA公司成立于1885年,由藤仓善八先生创立,起初专注于发电机用的绢卷线制造。这一初创阶段为公司奠定了坚实的电线电缆制造基础。随着技术的不断积累,FUJIKURA逐渐扩展到更广泛的电气和电子领域,为公司的长期发展奠定了坚实的基础。

2. 技术创新与行业领导地位

在多年的发展中,FUJIKURA始终致力于技术创新,不断推出具有行业影响力的新产品。特别是在光纤通信领域,FUJIKURA凭借其强大的研发能力和技术实力,成为了全球领先的光纤通信产品研发与生产商。公司不仅在光纤制造方面取得了显著成就,还在光纤熔接、光数据传输等领域拥有多项专利技术,推动了整个行业的发展。

3. 全球化战略与市场拓展

随着全球市场的不断开放和竞争的加剧,FUJIKURA积极实施全球化战略,通过设立海外分支机构、与当地企业合作等方式,不断拓展海外市场。目前,FUJIKURA的商务与服务网络已经覆盖全球多个国家和地区,为全球客户提供优质的产品和服务。这一战略不仅提升了公司的国际影响力,还为公司带来了更多的商业机会和发展空间。

4. 企业文化与团队建设

FUJIKURA注重企业文化的建设和团队精神的培养。公司秉承“向客户提供价值”的企业理念,致力于为员工创造一个积极向上、团结协作的工作环境。通过定期的培训、团队建设活动等方式,FUJIKURA不断提升员工的综合素质和团队协作能力,为公司的持续发展提供了有力的人才保障。

5. 应对挑战与持续发展

面对全球经济大萧条等严峻挑战,FUJIKURA展现出了强大的韧性和适应能力。公司全体员工团结一致,以共享目标和积极态度应对挑战,将危机视为机遇。通过实施“第三次创业”和企业文化改革等措施,FUJIKURA不仅成功度过了难关,还实现了持续稳健的发展。未来,FUJIKURA将继续秉持顾客价值创造的理念,积极应对社会需求,为实现赢得客户信赖的承诺而努力。

Emerson Embedded Power公司的发展小趣事

在电子行业的早期,Emerson Embedded Power就开始注重技术创新。该公司不断投入研发资源,开发高效、可靠的电源解决方案,以满足不断增长的市场需求。其创新的电源管理技术不仅提高了设备的性能,还降低了能源消耗,赢得了客户的广泛认可。

BB公司的发展小趣事

2000年,BB公司迎来了发展史上的一个重要时刻——被美国德州仪器公司收购。这一收购对于BB公司来说,既是挑战也是机遇。德州仪器作为全球领先的半导体公司,为BB公司提供了更广阔的平台和更丰富的资源。在德州仪器的支持下,BB公司得以继续深化技术创新和市场拓展,进一步提升了其在电子行业的地位。

GISMA Steckverbinder GmbH公司的发展小趣事

GISMA深知产品质量对于企业生存和发展的重要性。因此,公司建立了完善的质量管理体系,并通过了DIN ISO 9001(DNV)等国际质量认证。这一认证不仅证明了GISMA在产品生产过程中的严格质量控制能力,也为其赢得了更多客户的信任和认可。GISMA始终坚持质量第一的原则,不断提升产品质量和服务水平,确保每一款产品都能达到客户的期望和要求。通过持续的质量管理和改进活动,GISMA在电子行业中树立了良好的品牌形象和口碑。

Hi-Light Electronic Co Ltd公司的发展小趣事

GISMA深知客户需求的重要性,因此始终将客户需求放在首位。公司拥有一支专业的研发团队和客户服务团队,能够根据客户的具体需求量身定制产品,提供从设计到生产的全方位服务。这种定制化服务模式不仅赢得了客户的广泛赞誉,也进一步巩固了GISMA在电子行业中的市场地位。通过深入了解客户需求,GISMA不断优化产品设计和生产流程,为客户提供更加优质的产品和服务。

德国ACAM公司的发展小趣事

2023年,ACAM公司与上海科技大学智造系统工程中心(CASE)签署了增材制造联合研发、应用研究和教育培训协议。这次合作标志着ACAM公司在增材制造领域的布局进一步深化,双方将共同推动增材制造技术的创新和应用,为行业的发展贡献更多的力量。

这五个故事展示了德国ACAM公司在电子行业中的发展历程和取得的成就。从创立之初的技术突破,到被收购后的技术实力大增,再到超声波计量领域的革命性突破,以及与高校合作推动增材制造发展,ACAM公司始终保持着创新的精神和不断进取的态度,为电子行业的发展做出了重要贡献。

问答坊 | AI 解惑

我的PIC单片机调试心得,给像我一样曾经苦苦寻觅的初学者一点启示

我是一位初学者,pic初学者,但是在单片机行当已经混迹多年了。说句实话,c开发环境都大同小异,只不过烧写和在线仿真大同小异。钻研了两天,收到了很多回应和启发。 下面应soso的请求,把最近的调试心得和大家分享 1、 先说说我要做的东西 说来 ...…

查看全部问答>

Mini2440学习笔记

看到了一篇学习笔记,觉得不错,转载来 来源:ouravr foxfox 入手Mini2440,根据优龙的代码,修改了LCD驱动,增加了中英文显示,另外增加了一个贪吃蛇的游戏。 MDK中国版例程服务包,里面有优龙的代码。 http://arm.embedinfo.com/down-li ...…

查看全部问答>

Edge Detection Reference Design

Introduction Video and image processing typically require very high computational power. Given the increasing processing demands, the parallel processing capabilities of Altera® programmable logic devices (PLDs) make them a ...…

查看全部问答>

关于FPGA总线的问题

问题是这样的:从CPU过来的数据总线,接到FPGA了,FPGA后面又接了一个CPLD,等于说,FPGA既要将数据总线自己用,又要输出给CPLD用,该怎么实现了? 难题是数据总向是双向的不好办! 因为两片FPGA之间的连线资源较多,把它们之间的数据总结分为送 ...…

查看全部问答>

有做ARM的大侠没有?keiluv3有下的没有?

有做ARM的大侠没有?keiluv3有下的没有?…

查看全部问答>

请问arm 模块驱动?

请问各位大虾,现在我用ARM模块作了一个模块,需要计算机把它识别成一个人体学输入设备,该模块现在用的是windows ce系统,请问是否可以做一个驱动程序?大概应该怎么做?…

查看全部问答>

CEdit控件不能输入

从CWnd继承一个类CInputInfoWnd,在CInputInfoWnd用Create动态创建Edit控件m_editTest,此Edit控件上可以看到输入光标,但不能输入任何东西?…

查看全部问答>

2007年E题 开关稳压电源方案、原理图、程序

本帖最后由 paulhyde 于 2014-9-15 03:46 编辑 2007年E题 开关稳压电源方案、原理图、程序    …

查看全部问答>

STM32L151xx,STM32L151xx

ESC月底在即,大量新品争相冒头。 ST的STM32L151/STM32L152该出门啦。 以下链接估计有人有兴趣:http://www.st.com/stonline/products/literature/bd/17350.pdf…

查看全部问答>

STM32中输出比较TIM1与其他TIMx的不同之处

这是一段MDK目录下的示例代码:   /* ---------------------------------------------------------------     TIM2 Configuration: Output Compare Toggle Mode:     TIM2CLK = 36 MHz, Prescaler = 0x2, ...…

查看全部问答>