【嵌入式系统学习笔记之“流水灯”——STM32(一)】

一、 实验目的

1.1 掌握STM32F103ZET6单片机的基本结构与工作原理。
1.2 学习使用GPIO端口进行简单的输出控制。
1.3 了解定时器的基本使用方法,通过定时器控制LED灯的流水效果。
1.4 提升对嵌入式系统开发的理解与应用能力。

二、 实验原理

2.1.STM32F103ZET6简介

STM32F103ZET6是一款基于ARM Cotex-M3内核的微控制器,由意法半导体STMicroelectronics)公司生产,它具有高性能,低功耗、丰富的外设和强大的处理能力,广泛应用于工业控制、汽车电子、智能家居等领域。该芯片具有512KB的Flash存储器和64KB的SRAM,支持多种通信接口,如SPI、I2C、USART等。此外,它还具有多个定时器、ADC、DAC等模块,可满足各种应用需求。

STM32F103ZET6内部资源
–最高72MHz工作频率
–内嵌经出厂调教的8MHz的RC振荡器
–串行单线调试(SWD)和JTAG接口
–多达8个定时器
–3个16位定时器,每个定时器有多达4个用于输入捕获/输出比较/PWM或脉冲计数的通道和增量编码器输入
–2个看门狗定时器(独立的和窗口型的):防止程序跑飞,单片机自动复位
–系统时间定时器:一种简单的,24位写清零、递减、自装载同时具有可灵活控制机制的计数器。
–2个I2C接口(支持SMBus/PMBus):一种简单、双向二线制同步串行总线
–3个USART接口(支持ISO7816接口,LIN,IrDA接口和调制解调控制):通用同步/异步串行接收/发送器USART是一个全双工通用同步/异步串行收发模块
–2个SPI接口(18M位/秒):总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。
————————————————
参考链接:
stm32f103zet6芯片及其单片机(硬件)的总结

2.2.LED原理图

在这里插入图片描述

2.3.流水灯原理

①GPIO配置:将STM32F103ZET6的GPIO引脚配置为输出模式,用于驱动LED灯。
②延时控制:通过延时函数来控制LED的点亮和熄灭时间,从而实现LED的流水效果。
③代码实现:通过简单的循环和延时,实现LED的依次点亮和熄灭。

三、实验步骤

3.1.下载keil 5软件。

3.2.配置ST-Link Debugger环境:

单击“魔术棒”:在这里插入图片描述
选择“STM32F103ZE”系列:
在这里插入图片描述
点击“Debug”并在下方选择“ST-Link Debugger”:
在这里插入图片描述接下来就可以编写代码了。

四、实验代码

4.1.main.c

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
 int main(void)
 {	
	delay_init();	  	  
	LED_Init();		 
	while(1)
	{
		LED0=0;
		LED1=1;
		delay_ms(300);	 
		LED0=1;
		LED1=0;
		delay_ms(300);	
	}
 }

4.2.led.c

#include "led.h"


void LED_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);	 
 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;				
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
 GPIO_Init(GPIOB, &GPIO_InitStructure);					 
 GPIO_SetBits(GPIOB,GPIO_Pin_5);					

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;	    		 
 GPIO_Init(GPIOE, &GPIO_InitStructure);	  				 
 GPIO_SetBits(GPIOE,GPIO_Pin_5); 						 
}
 

4.3.led.h

#ifndef __LED_H
#define __LED_H	 
#include "sys.h"
 
#define LED0 PBout(5)
#define LED1 PEout(5)

void LED_Init(void);

		 				    
#endif

五、实验结果展示

最终得到的效果如下:

流水灯

六、心得体会

本实验通过结合硬件连接和软件编程,成功实现了基于STM32F103ZET6的流水灯效果。通过该实验,不仅巩固了对单片机基本功能的理解,还提高了实际动手能力和调试技巧,为后续更复杂的嵌入式开发打下了坚实基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值