STM32F4的IO设置测试

STM32F4的IO设置测试


本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.


环境:

主机: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 %d\r\n", file, line) */

  /* Infinite loop */
  while (1)
  {
  }
}
#endif

/**
  * @}
  */ 

/**
  * @}
  */ 

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


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值