专注电子技术学习与研究
当前位置:单片机教程网 >> STM32 >> 浏览文章

STM32之点亮LED灯程序

作者:佚名   来源:本站原创   点击数:  更新时间:2014年08月17日   【字体:

 原理图:

 头文件及完整例程下载:http://www.51hei.com/f/stm32标准例程库函数.rar
程序:

#include "stm32f10x.h"
 
GPIO_InitTypeDef GPIO_InitStructure;
#define LED1_ON GPIO_SetBits(GPIOB, GPIO_Pin_5);  
 //#define LED1_ON GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_SET);
 
#define LED1_OFF GPIO_ResetBits(GPIOB, GPIO_Pin_5); 
//#define LED1_OFF GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_RESET) ; 
 
#define LED2_ON GPIO_SetBits(GPIOD, GPIO_Pin_6);  
#define LED2_OFF GPIO_ResetBits(GPIOD, GPIO_Pin_6); 
 
#define LED3_ON GPIO_SetBits(GPIOD, GPIO_Pin_3);  
#define LED3_OFF GPIO_ResetBits(GPIOD, GPIO_Pin_3);  
 
void RCC_Configuration(void);
void LED_Config(void);
void Delay(__IO uint32_t nCount);
 
/****************************************************************************
* 名    称:void LED_Config(void)
* 功    能:LED 控制初始化函数
 

输入
****************************************************************************/ 
void LED_Config(void){
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD , ENABLE);
 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;     //LED1  V6   //将V6,V7,V8 配置为通用推挽输出  
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //口线翻转速度为50MHz
  GPIO_Init(GPIOB, &GPIO_InitStructure); 
 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_3; //LED2, LED3 V7 V8
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
//  GPIO_Init(GPIOD, &GPIO_InitStructure);
 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;      //LCD背光控制
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
  GPIO_ResetBits(GPIOD, GPIO_Pin_13);              //LCD背光关闭
 
}
 
/****************************************************************************
* 名    称:int main(void)
* 功    能:主函数
****************************************************************************/ 
int main(void)
{
  RCC_Configuration();   //系统时钟配置
  LED_Config();//LED控制配置
  while (1)
  {
  LED1_ON; LED2_OFF; LED3_OFF;//LED1亮  LED2,LED3灭(LED2,LED3 仅V5  V3,V2,V2.1板有)
    Delay(0xAFFFF);
LED1_OFF; LED2_ON; LED3_OFF;//LED2亮  LED1,LED3灭(LED2,LED3 仅V5  V3,V2,V2.1板有)
Delay(0xAFFFF);
LED1_OFF; LED2_OFF; LED3_ON;//LED3亮  LED1,LED2灭(LED2,LED3 仅V5  V3,V2,V2.1板有)
Delay(0xAFFFF);    
  }
}
 
/****************************************************************************
* 名    称:void RCC_Configuration(void)
* 功    能:系统时钟配置为72MHZ
* 入口参数:无
* 出口参数:无
* 说    明:
* 调用方法:无 
****************************************************************************/ 
void RCC_Configuration(void)
{   
  SystemInit();
}
 
/****************************************************************************
* 名    称:void Delay(__IO uint32_t nCount)
* 功    能:延时函数
* 入口参数:无
* 出口参数:无
* 说    明:
* 调用方法:无 
****************************************************************************/ 
void Delay(__IO uint32_t nCount)
{
   for(; nCount != 0; nCount--);
}

 

 

关闭窗口