定时器控制led跑马灯
概述
1.1 资源概述
开发板:正点原子STM32F103zet6精英开发板
控芯片型号:STM32F103ZET6
开发板资料下载地址:http://www.openedv.com/thread-13912-1-1.html
1.2实现功能
使用定时器3s后亮红灯,3s后红灯灭亮绿灯,循环交替。
代码实现
main.c主函数
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
int main(void)
{
SystemInit();
delay_init();
LED_Init();
while(1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO_ResetBits(GPIOB,GPIO_Pin_6);
delay_ms(3000);
GPIO_SetBits(GPIOB,GPIO_Pin_6);
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
delay_ms(3000);
}
}
led.c
#include "led.h"
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PB,PE端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //LED1-->PE.5 端口配置, 推挽输出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOE, &GPIO_InitStructure); //推挽输出 ,IO口速度为50MHz
GPIO_SetBits(GPIOE,GPIO_Pin_6); //PE.5 输出高
}
led.h
#ifndef __LED_H
#define __LED_H
#include "sys.h"
#define LED5_OFF GPIO_Setbit(GPIOA,GPIO_Pin_5);
#define LED5_ON GPIO_Resetbit(GPIOA,GPIO_Pin_5);
#define LED6_OFF GPIO_Setbit(GPIOA,GPIO_Pin_6);
#define LED6_ON GPIO_Resetbit(GPIOA,GPIO_Pin_6);
void LED_Init(void);//初始化
#endif