STM32F103ZET6之跑马灯实验
文章目录
- STM32F103ZET6之跑马灯实验
- 前言
- 一、原理图
- 二、程序源码
-
- 1.led.h
- 2.led.c
- 3.main.c
- 三、实验结果
- 总结
前言
对于STM32的学习可分为3个版本。
1.寄存器版本
2.库函数版本
3.HAL库版本
由于个人原因,选择库函数版本来进行STM32的学习。
提示:软件安装等问题,不进行讲解!!!
一、原理图
原理图可知,PB5对应LED0,PE5对应LED1。
二、程序源码
1.led.h
代码如下:
#ifndef _LED_H
#define _LED_H
void LED_Init(void);
#endif
2.led.c
代码如下:
#include "led.h"
#include "stm32f10x.h"
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_Initstr;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //时钟使能
GPIO_Initstr.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Initstr.GPIO_Pin=GPIO_Pin_5 ;
GPIO_Initstr.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_Initstr); //配置IO
GPIO_SetBits(GPIOB, GPIO_Pin_5); //输出配置
GPIO_Initstr.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Initstr.GPIO_Pin=GPIO_Pin_5 ;
GPIO_Initstr.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOE, &GPIO_Initstr);
GPIO_SetBits(GPIOE, GPIO_Pin_5);
}
3.main.c
代码如下:
#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
int main(void)
{
delay_init();
LED_Init();
while(1)
{
//方法一 LED0,LED1同时点亮,同时熄灭,间隔为500ms(库函数)
GPIO_SetBits(GPIOB, GPIO_Pin_5);
GPIO_SetBits(GPIOE, GPIO_Pin_5);
delay_ms(500);
GPIO_ResetBits(GPIOB, GPIO_Pin_5);
GPIO_ResetBits(GPIOE, GPIO_Pin_5);
delay_ms(500);
//方法二 跑马灯,间隔为500ms(位操作)
// PBout(5)=0;
// PEout(5)=1;
// delay_ms(500);
// PBout(5)=1;
// PEout(5)=0;
// delay_ms(500);
}
}
三、实验结果
如图所示,两个LED灯同时点亮,同时熄灭,间隔为500ms。
总结
学习的过程中,希望大家观看一遍视频,然后自己编写程序,遇到不会时再观看视频,最后方能灵活掌握!!!