环境:
主机: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****/
上一篇:STM32F103停机模式测试
下一篇:STM32单片机用FSMC接口控制SRAM
推荐阅读最新更新时间:2024-11-12 05:48
设计资源 培训 开发板 精华推荐
- LTC3101EUFE 演示板、宽输入电压、多输出 DC/DC 转换器和电源路径管理器
- INA282 电流采集
- EVAL-AD7682CBZ,PulSAR AD7682 评估板,16 位,250KSPS,4CH,PulSAR 模数转换器
- 采用 LT6350 的 LTC2379-18 单电源、10V 单端驱动器
- 【训练营_进阶班】基于ESP-07的智能物联网功率计-带小夜灯
- TAR5SB17 点稳压器(低压降稳压器)的典型应用
- 使用 NXP Semiconductors 的 TDA8593J 的参考设计
- NSI45060JDT4G 大电流 LED 灯串的典型应用
- 辉光板照明部分
- AN1143 - 基于AP3401 1A降压DC-DC转换器的应用电路