STM32跑马灯实验——基于正点原子mini板

STM32跑马灯实验

本实验基于正点原子stm32mini开发板
该板PA8,PD2为LED

主要代码:

led.c:

#include "led.h"
#include "stm32f10x.h"//引用顶层头文件,否则以下函数不可见
void LED_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);//功能:使能GPIOD
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//功能:使能GPIOA
	
	/*也可以使用或运算|合并:	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOA,ENABLE);*/
	
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	
	GPIO_Init(GPIOD,&GPIO_InitStructure);
	//GPIOD2初始化
	GPIO_SetBits(GPIOD,GPIO_Pin_2);//设置GPIO口为高电平,
	
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	
	GPIO_Init(GPIOA,&GPIO_InitStructure);
	//GPIOA8初始化
	GPIO_SetBits(GPIOA,GPIO_Pin_8);
}

led.h:

#ifndef __LED_H
#define __LED_H

void LED_Init(void);


#endif

main.c:

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"

int main(void)
{
	delay_init();//初始化延时
	LED_Init();
	while(1){
		GPIO_ResetBits(GPIOD,GPIO_Pin_2);//设置GPIO口为低电平,
		GPIO_SetBits(GPIOA,GPIO_Pin_8);
		delay_ms(300);
		
		GPIO_SetBits(GPIOD,GPIO_Pin_2);//设置GPIO口为高电平,
		GPIO_ResetBits(GPIOA,GPIO_Pin_8);
		delay_ms(300);//延时,以毫秒为单位,300
	}	
}
main.c中,delay前为一次同步执行。故需要ResetBits和SetBits同时运行,以控制两个LED灯不同时亮起

你可能感兴趣的:(STM32,stm32,单片机)