天天看点

STM32学习笔记(三)跑马灯实验STM32F103ZET6之跑马灯实验前言一、原理图二、程序源码三、实验结果总结

STM32F103ZET6之跑马灯实验

文章目录

  • STM32F103ZET6之跑马灯实验
  • 前言
  • 一、原理图
  • 二、程序源码
    • 1.led.h
    • 2.led.c
    • 3.main.c
  • 三、实验结果
  • 总结

前言

对于STM32的学习可分为3个版本。

1.寄存器版本

2.库函数版本

3.HAL库版本

由于个人原因,选择库函数版本来进行STM32的学习。

提示:软件安装等问题,不进行讲解!!!

一、原理图

原理图可知,PB5对应LED0,PE5对应LED1。

STM32学习笔记(三)跑马灯实验STM32F103ZET6之跑马灯实验前言一、原理图二、程序源码三、实验结果总结
STM32学习笔记(三)跑马灯实验STM32F103ZET6之跑马灯实验前言一、原理图二、程序源码三、实验结果总结

二、程序源码

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。

STM32学习笔记(三)跑马灯实验STM32F103ZET6之跑马灯实验前言一、原理图二、程序源码三、实验结果总结

总结

学习的过程中,希望大家观看一遍视频,然后自己编写程序,遇到不会时再观看视频,最后方能灵活掌握!!!

程序实现步骤如下:

1.时钟使能

2.GPIO初始化

3.控制ODR寄存器输出高低电平