STM32入门学习(开源)DAY1

本文介绍了如何使用STM32F10X系列PZ6806L开发板上的GPIO和Systick定时器实现8个LED每隔1秒轮流显示,包括自左向右和自右向左的循环。主要展示了主函数、LED初始化代码以及相关的库函数使用。
摘要由CSDN通过智能技术生成

<DAY1>流水灯的实现


实验要求:

(1)8个led每隔1秒轮流显示;

(2)1秒延时使用系统Systick定时器实现;

(3)8个led自左向右轮流显示后,再自右向左显示。然后依次循环。


(本实验所用开发板为STM32F10X系列的PZ6806L(普中的),采用库函数编程方法)


//主函数代码
#include "system.h"
#include "SysTick.h"
#include "led.h"
int main()
{
	SysTick_Init(72);
	LED_Init();
	while(1)
	{
		GPIO_ResetBits(LED_PORT,GPIO_Pin_0);//点亮第1个LED
		delay_ms(1000);  
		GPIO_SetBits(LED_PORT,GPIO_Pin_0);  //熄灭第1个LED
		GPIO_ResetBits(LED_PORT,GPIO_Pin_1);//点亮第2个LED
		delay_ms(1000);  
		GPIO_SetBits(LED_PORT,GPIO_Pin_1);  //熄灭第2个LED
		GPIO_ResetBits(LED_PORT,GPIO_Pin_2);
		delay_ms(1000);  
		GPIO_SetBits(LED_PORT,GPIO_Pin_2);
		GPIO_ResetBits(LED_PORT,GPIO_Pin_3);
		delay_ms(1000);
		GPIO_SetBits(LED_PORT,GPIO_Pin_3);
		GPIO_ResetBits(LED_PORT,GPIO_Pin_4);
		delay_ms(1000);
		GPIO_SetBits(LED_PORT,GPIO_Pin_4);
		GPIO_ResetBits(LED_PORT,GPIO_Pin_5);
		delay_ms(1000);
		GPIO_SetBits(LED_PORT,GPIO_Pin_5);
		GPIO_ResetBits(LED_PORT,GPIO_Pin_6);
		delay_ms(1000);  
		GPIO_SetBits(LED_PORT,GPIO_Pin_6);
		GPIO_ResetBits(LED_PORT,GPIO_Pin_7);
		delay_ms(1000);
		GPIO_SetBits(LED_PORT,GPIO_Pin_7);
		
	}
}
//LED初始化代码
#include "led.h"

/*******************************************************************************
* 函 数 名         : LED_Init
* 函数功能		   : LED初始化函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void LED_Init()
{
	GPIO_InitTypeDef GPIO_InitStructure;//定义结构体变量
	
	RCC_APB2PeriphClockCmd(LED_PORT_RCC,ENABLE);
	
	GPIO_InitStructure.GPIO_Pin=LED_PIN;  //选择你要设置的IO口
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;	 //设置推挽输出模式
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;	  //设置传输速率
	GPIO_Init(LED_PORT,&GPIO_InitStructure); 	   /* 初始化GPIO */
	
	GPIO_SetBits(LED_PORT,LED_PIN);   //将LED端口拉高,熄灭所有LED
}
//LED.H的代码
#ifndef _led_H
#define _led_H

#include "system.h"

/*  LED时钟端口、引脚定义 */
#define LED_PORT 			GPIOC   
#define LED_PIN 			(GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7)
#define LED_PORT_RCC		RCC_APB2Periph_GPIOC
void LED_Init(void);

有什么问题可以在评论区或者私信我,大家一起学习!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值