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

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

  • 一、 实验目的
  • 二、 实验原理
  • 2.1.STM32F103ZET6简介
  • 2.2.LED原理图
  • 2.3.流水灯原理
  • 三、实验步骤
  • 3.1.下载keil 5软件。
  • 3.2.配置ST-Link Debugger环境:
  • 四、实验代码
  • 4.1.main.c
  • 4.2.led.c
  • 4.3.led.h
  • 五、实验结果展示
  • 六、心得体会
  • 一、 实验目的

    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的流水灯效果。通过该实验,不仅巩固了对单片机基本功能的理解,还提高了实际动手能力和调试技巧,为后续更复杂的嵌入式开发打下了坚实基础。

    作者:放晴了94

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【嵌入式系统学习笔记之“流水灯”——STM32(一)】

    发表回复