跑马灯实验-STM32F4开发
- 格式:pdf
- 大小:1.70 MB
- 文档页数:23
6.1 STM32 IO简介本章将要实现的是控制ALIENTEK战舰STM32开发板上的两个LED实现一个类似跑马灯的效果,该实验的关键在于如何控制STM32的IO口输出。
了解了STM32的IO口如何输出的,就可以实现跑马灯了。
通过这一章的学习,你将初步掌握STM32基本IO口的使用,而这是迈向STM32的第一步。
这一章节因为是第一个实验章节,所以我们在这一章将讲解一些知识为后面的实验做铺垫。
为了小节标号与后面实验章节一样,这里我们不另起一节来讲。
在讲解STM32的GPIO之前,首先打开我们光盘的第一个固件库版本实验工程跑马灯实验工程(光盘目录为:“4,程序源码\标准例程-V3.5库函数版本\实验1跑马灯/USER/LED.Uv2”),可以看到我们的实验工程目录:图6.1.1 跑马灯实验目录结构接下来我们逐一讲解一下我们的工程目录下面的组以及重要文件。
①组FWLib下面存放的是ST官方提供的固件库函数,里面的函数我们可以根据需要添加和删除,但是一定要注意在头文件stm32f10x_conf.h文件中注释掉删除的源文件对应的头文件,这里面的文件内容用户不需要修改。
②组CORE下面存放的是固件库必须的核心文件和启动文件。
这里面的文件用户不需要修改。
③组SYSTEM是ALIENTEK提供的共用代码,这些代码的作用和讲解在第五章都有讲解,大家可以翻过去看下。
④组HARDWARE下面存放的是每个实验的外设驱动代码,他的实现是通过调用FWLib下面的固件库文件实现的,比如led.c里面调用stm32f10x_gpio.c里面的函数对led进行初始化,这里面的函数是讲解的重点。
后面的实验中可以看到会引入多个源文件。
⑤组USER下面存放的主要是用户代码。
但是system_stm32f10x.c文件用户不需要修改,同时stm32f10x_it.c里面存放的是中断服务函数,这两个文件的作用在3.1节有讲解,大家可以翻过去看看。
6.1 STM32 IO简介本章将要实现的是控制ALIENTEK战舰STM32开发板上的两个LED实现一个类似跑马灯的效果,该实验的关键在于如何控制STM32的IO口输出。
了解了STM32的IO口如何输出的,就可以实现跑马灯了。
通过这一章的学习,你将初步掌握STM32基本IO口的使用,而这是迈向STM32的第一步。
这一章节因为是第一个实验章节,所以我们在这一章将讲解一些知识为后面的实验做铺垫。
为了小节标号与后面实验章节一样,这里我们不另起一节来讲。
在讲解STM32的GPIO之前,首先打开我们光盘的第一个固件库版本实验工程跑马灯实验工程(光盘目录为:“4,程序源码\标准例程-V3.5库函数版本\实验1跑马灯/USER/LED.Uv2”),可以看到我们的实验工程目录:图6.1.1 跑马灯实验目录结构接下来我们逐一讲解一下我们的工程目录下面的组以及重要文件。
①组FWLib下面存放的是ST官方提供的固件库函数,里面的函数我们可以根据需要添加和删除,但是一定要注意在头文件stm32f10x_conf.h文件中注释掉删除的源文件对应的头文件,这里面的文件内容用户不需要修改。
②组CORE下面存放的是固件库必须的核心文件和启动文件。
这里面的文件用户不需要修改。
③组SYSTEM是ALIENTEK提供的共用代码,这些代码的作用和讲解在第五章都有讲解,大家可以翻过去看下。
④组HARDWARE下面存放的是每个实验的外设驱动代码,他的实现是通过调用FWLib下面的固件库文件实现的,比如led.c里面调用stm32f10x_gpio.c里面的函数对led进行初始化,这里面的函数是讲解的重点。
后面的实验中可以看到会引入多个源文件。
⑤组USER下面存放的主要是用户代码。
但是system_stm32f10x.c文件用户不需要修改,同时stm32f10x_it.c里面存放的是中断服务函数,这两个文件的作用在3.1节有讲解,大家可以翻过去看看。
一、实验目的1. 熟悉嵌入式系统硬件电路的搭建与调试;2. 掌握C语言编程,实现跑马灯功能;3. 理解并掌握GPIO口操作,学习定时器中断的使用。
二、实验环境1. 开发板:STM32F103C8T6开发板2. 编译器:Keil uVision53. 软件库:STM32标准外设库三、实验原理跑马灯实验是通过控制LED灯的亮灭,实现LED灯依次点亮的效果。
实验原理如下:1. GPIO口控制:将LED灯连接到开发板的GPIO口,通过控制GPIO口的输出电平,实现LED灯的点亮与熄灭;2. 定时器中断:定时器产生中断,实现LED灯点亮与熄灭的时间间隔;3. 循环控制:通过循环控制LED灯的点亮顺序,实现跑马灯效果。
四、实验步骤1. 硬件电路搭建(1)将LED灯的正极连接到开发板的GPIO口,负极接地;(2)将开发板的电源和地线连接到电源模块。
2. 软件编程(1)在Keil uVision5中创建项目,并导入STM32标准外设库;(2)编写程序,实现以下功能:a. 初始化GPIO口,将LED灯连接的GPIO口配置为输出模式;b. 初始化定时器,设置定时器中断周期,使LED灯点亮与熄灭的时间间隔为1ms;c. 编写定时器中断服务程序,控制LED灯的点亮与熄灭;d. 编写主函数,实现LED灯依次点亮的效果。
3. 编译与下载(1)编译程序,生成可执行文件;(2)将开发板连接到计算机,通过串口下载程序到开发板。
4. 实验调试(1)打开串口调试助手,观察LED灯的点亮与熄灭效果;(2)调整程序参数,优化跑马灯效果。
五、实验结果与分析1. 实验结果(1)LED灯依次点亮,实现跑马灯效果;(2)LED灯点亮与熄灭的时间间隔可调。
2. 实验分析(1)通过控制GPIO口的输出电平,实现LED灯的点亮与熄灭;(2)定时器中断实现LED灯点亮与熄灭的时间间隔控制;(3)循环控制实现LED灯依次点亮的效果。
六、实验总结本次实验成功实现了跑马灯功能,加深了对嵌入式系统硬件电路、C语言编程和GPIO口操作的理解。
嵌⼊式02STM32实验04跑马灯开学STM32跑马灯的实验主要就是了解GPIO⼝的配置及使⽤,我这⾥是使⽤库函数进⾏编程,主要需要设置以下两⽅⾯: 1、使能需要使⽤的IO⼝的时钟,⼀共有A、B、C、D、E、F、G七组IO⼝ 2、初始化IO⼝(设置IO⼝的端⼝号(有GPIO_Pin_0 ~ GPIO_Pin_15,共16个IO端⼝)、设置IO⼝的输出速度、设置IO⼝的⼯作模式)代码如下1//端⼝初始化2 #include "led.h"3 #include "stm32f10x.h"45void LED_Init(void)6 {7 GPIO_InitTypeDef GPIO_KST;8910 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能端⼝B和E1112 GPIO_KST.GPIO_Mode = GPIO_Mode_Out_PP; //设置端⼝模式为推挽输出13 GPIO_KST.GPIO_Pin = GPIO_Pin_5; //选择端⼝514 GPIO_KST.GPIO_Speed = GPIO_Speed_2MHz; //IO⼝的速度设置为2MHz15 GPIO_Init(GPIOB, &GPIO_KST); //初始化GPIOB.5161718 GPIO_KST.GPIO_Mode = GPIO_Mode_Out_PP; //设置端⼝模式为推挽输出19 GPIO_KST.GPIO_Pin = GPIO_Pin_5; //选择端⼝520 GPIO_KST.GPIO_Speed = GPIO_Speed_2MHz; //IO⼝的速度设置为2MHz21 GPIO_Init(GPIOE, &GPIO_KST); //初始化GPIOE.522 }主程序1//主程序2 #include "sys.h"3 #include "delay.h"4 #include "led.h"56int main(void)7 {8 delay_init(); //延时初始化9 LED_Init(); //LED初始化10while(1)11 {12 GPIO_ResetBits(GPIOE, GPIO_Pin_5); //关闭PE5端⼝的LED13 GPIO_SetBits(GPIOB, GPIO_Pin_5); //关闭PB5端⼝的LED14 delay_ms(500); //延时100ms15 GPIO_SetBits(GPIOE, GPIO_Pin_5);16 GPIO_ResetBits(GPIOB, GPIO_Pin_5); //打开PB5端⼝的LED17 delay_ms(500); //延时100ms18 }1920 }。
微控制器综合设计与实训实验名称:实验三跑马灯实验实验三:跑马灯实验1 实训任务(1) 编写程序,实现对LED1~LED8的轮流点亮;(2) 仿真调试,调整延时时间,利用仿真示波器观察延时时间长短;(3) 下载程序,观察跑马灯运行状况。
1.1 实验说明本实验将要实现的是控制实训平台上的8个LED灯实现一个类似跑马灯的效果,LED通过控制IO口的高低电平工作,因此实验的关键在于如何控制STM32的IO口输出。
1.2 实验步骤(1) 在实训平台上将IO口与LED(LED1~LED8)连接;(2) 复制工程模板文件夹,新建led.c和led.h文件,并将新建文件加入工程中;(3) 编写led.h文件,声明void LED_Init(void)初始化函数,宏定义LED1~LED8;(4) 编写led.c文件,建立void LED_Init(void)初始化函数,实现对LED灯用到的IO端口的配置,配置为推挽输出,速度为50MHZ;(5) 编写main()函数,实现对LED1~LED8的轮流点亮;(6) 软件仿真,调整延时时间,利用仿真示波器观察延时时间长短;(7) 下载程序,观察跑马灯的运行状况。
2 程序设计2.1 通过数组实现流水灯:2.2 通过宏定义实现流水灯:2.3 通过函数实现流水灯:2.4 通过SYSTICK中断实现流水灯:3硬件原理图设计4 总结通过数组实现流水灯:通过宏定义实现流水灯:通过函数实现流水灯:通过SYSTICK中断实现流水灯:实验心得:本次实验通过四种方法来实现流水灯,分别是通过数组实现流水灯,通过宏定义实现流水灯,通过函数实现流水灯,通过SYSTICK中断实现流水灯。
让我体会到单片机代码的多样性及强大的拓展功能。
MCU通过控制IO口的高低电平来直接控制LED的亮灭,所以本实验的关键是如何控制STM32的IO口输出,来达到我们想要的效果。
就比如灯光秀。
单片机跑马灯实验报告摘要:本实验通过使用单片机来控制LED灯进行跑马灯效果的展示。
通过简单的电路连接和编程,我们成功实现了单片机跑马灯的功能。
实验结果表明,单片机跑马灯是一种简单而有效的显示系统,可广泛应用于娱乐和装饰等领域。
引言:跑马灯效果是一种常见且受欢迎的LED显示效果,它可以不断地循环显示LED灯的亮灭轮廓,给人们带来视觉上的愉悦。
单片机是一种可编程的微控制器,广泛应用于电子系统的控制和管理。
在本实验中,我们将利用单片机来实现跑马灯效果,通过编程控制LED灯的亮灭来模拟跑马灯的效果。
材料和方法:本实验所需材料如下:1. 单片机开发板2. LED灯3. 面包板4. 连接线实验步骤:1. 将单片机开发板放置在面包板上,确保连接稳固。
2. 将LED灯连接到面包板上,按照电路图正确连接。
3. 接通电源,将USB线连接到单片机开发板上。
4. 在计算机上打开开发板的编程软件。
5. 编写程序代码,实现跑马灯的效果。
6. 将程序代码下载到单片机开发板中。
7. 观察LED灯的亮灭情况,检查是否实现了跑马灯效果。
结果和讨论:经过实验,我们成功实现了单片机跑马灯的效果。
LED灯按照指定的顺序循环亮灭,产生出跑马灯的效果。
通过调整程序代码,我们可以控制跑马灯的速度和亮灭顺序,使其更加多样化和有趣。
单片机跑马灯是一种简单而有效的LED显示系统。
它可以应用于各种场景,包括室内和室外的装饰灯,新闻标语显示,广告牌等。
跑马灯效果不仅能够吸引人们的目光,还可以起到一定的宣传和广告效果。
总结:通过本次实验,我们了解了单片机的基本原理和应用,并成功实现了单片机跑马灯的效果。
单片机跑马灯具有简单、低成本、可编程等优点,适用于各种需要循环显示效果的场景。
未来,我们可以探索更多有趣的跑马灯效果,并将其应用于实际项目中。
在这个数字化时代,单片机跑马灯有着广阔的应用前景,希望能够为人们的生活和工作带来更多的灵感和乐趣。
stm32f4 寄存器点灯实验原理原理是通过编程直接操作STM32F4芯片的GPIO寄存器来控制LED的亮灭。
具体的步骤如下:1. 首先,需要设置相应的引脚为输出模式。
通过修改GPIOx_MODER寄存器的相应位可以实现,将对应的引脚设置为输出模式。
2. 然后,需要设置相应的引脚输出高电平或低电平来点亮或熄灭LED。
通过修改GPIOx_ODR寄存器的相应位可以实现,将对应的引脚输出高电平或低电平。
3. 最后,程序将会在一个循环中反复执行设置输出低电平和高电平的操作,从而实现让LED闪烁的效果。
需要注意的是,在STM32F4中,不同的引脚对应的控制寄存器和位数是不同的,具体需要根据芯片手册来查找相应的寄存器和位数。
同时,在进行寄存器操作时,需要确保停用IO模块时钟使能,以免发生错误。
下面是一个使用STM32F4的GPIO控制LED点灯的简单示例代码:```c#include "stm32f4xx.h"void Delay(uint32_t nTime);int main(void){GPIO_InitTypeDef GPIO_InitStruct;// 启用GPIO的时钟使能RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);// 配置引脚为输出模式GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;GPIO_Init(GPIOD, &GPIO_InitStruct);while (1){// 点亮LEDGPIO_SetBits(GPIOD, GPIO_Pin_12);Delay(1000000);// 熄灭LEDGPIO_ResetBits(GPIOD, GPIO_Pin_12);Delay(1000000);}}// 延时函数void Delay(uint32_t nTime){if (nTime != 0){nTime--;while (nTime != 0);}}```在上述代码中,我们使用了寄存器操作来控制GPIO的输出。
跑马灯实验1 实验目的(1) 了解通用IO口的输出类型和初始化过程,学会对GPIO库函数的使用;(2) 掌握基本IO口的使用;(3) 利用GPIO函数和延时函数实现对LED灯的交替闪烁,实现类似跑马灯的效果。
2 实验任务(1) 编写程序,实现对LED1~LED8的轮流点亮;(2) 仿真调试,调整延时时间,利用仿真示波器观察延时时间长短;(3) 下载程序,观察跑马灯运行状况。
3 实验说明本实验将要实现的是控制实训平台上的8个LED灯实现一个类似跑马灯的效果,LED通过控制IO口的高低电平工作,因此实验的关键在于如何控制STM32的IO口输出。
4预习要求(1) 初始化IO口包括哪些基础设置。
(2)GPIO的输入输出模式。
5 实验步骤(1) 在实训平台上将IO口与LED(LED1~LED8)连接;(2) 复制工程模板文件夹,新建led.c和led.h文件,并将新建文件加入工程中;(3) 编写led.h文件,声明void LED_Init(void)初始化函数,宏定义LED1~LED8;(4) 编写led.c文件,建立void LED_Init(void)初始化函数,实现对LED灯用到的IO端口的配置,配置为推挽输出,速度为50MHZ;(5) 编写main()函数,实现对LED1~LED8的轮流点亮;(6) 软件仿真,调整延时时间,利用仿真示波器观察延时时间长短;(7) 下载程序,观察跑马灯的运行状况。
硬件设计本实验用到的硬件只有LED(LED1 ~ LED8)。
电路实训平台上默认是未连接好的,所以在硬件上需要根据自己的需要将其与MCU进行连接。
注意:LED的硬件为共阳极连接,需将IO口连接端置为低电平才能点亮。
LED模块原理图如4.1所示:图4.1 LED模块原理图软件设计(1) 新建文件,命名为跑马灯实验。
复制粘贴之前的Template工程。
图4.2 跑马灯实验文件(2) 新建LED文件。
在跑马灯实验文件夹下面新建一个HARDWARE的文件夹,用来存储与硬件相关的代码,然后在HARDWARE文件夹下新建一个LED 文件夹,用来存放与LED相关的代码,如图4.3所示。
STM32F4寄存器编写跑马灯例程最近由于在学习STM32看到别⼈⽤寄存器编程控制跑马灯,于是⾃⼰也想试⼀试。
可是试了好久终究弄不出来。
回头看了下库函数的调⽤关系才搞明⽩。
⾸先通过查看GPIOA的设置函数发现设置如下:void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct){uint32_t pinpos = 0x00, pos = 0x00 , currentpin = 0x00;/* Check the parameters */assert_param(IS_GPIO_ALL_PERIPH(GPIOx));assert_param(IS_GPIO_PIN(GPIO_InitStruct->GPIO_Pin));assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));assert_param(IS_GPIO_PUPD(GPIO_InitStruct->GPIO_PuPd));/* ------------------------- Configure the port pins ---------------- *//*-- GPIO Mode Configuration --*/for (pinpos = 0x00; pinpos < 0x10; pinpos++){pos = ((uint32_t)0x01) << pinpos;/* Get the port pins position */currentpin = (GPIO_InitStruct->GPIO_Pin) & pos;if (currentpin == pos){GPIOx->MODER &= ~(GPIO_MODER_MODER0 << (pinpos * 2));GPIOx->MODER |= (((uint32_t)GPIO_InitStruct->GPIO_Mode) << (pinpos * 2));if ((GPIO_InitStruct->GPIO_Mode == GPIO_Mode_OUT) || (GPIO_InitStruct->GPIO_Mode == GPIO_Mode_AF)){/* Check Speed mode parameters */assert_param(IS_GPIO_SPEED(GPIO_InitStruct->GPIO_Speed));/* Speed mode configuration */GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (pinpos * 2));GPIOx->OSPEEDR |= ((uint32_t)(GPIO_InitStruct->GPIO_Speed) << (pinpos * 2));/* Check Output mode parameters */assert_param(IS_GPIO_OTYPE(GPIO_InitStruct->GPIO_OType));/* Output mode configuration*/GPIOx->OTYPER &= ~((GPIO_OTYPER_OT_0) << ((uint16_t)pinpos)) ;GPIOx->OTYPER |= (uint16_t)(((uint16_t)GPIO_InitStruct->GPIO_OType) << ((uint16_t)pinpos));}/* Pull-up Pull down resistor configuration*/GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << ((uint16_t)pinpos * 2));GPIOx->PUPDR |= (((uint32_t)GPIO_InitStruct->GPIO_PuPd) << (pinpos * 2));}}}GPIO_TypeDef端⼝设置结构体如下:typedef struct{__IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */__IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */__IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */__IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */__IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */__IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */__IO uint16_t BSRRL; /*!< GPIO port bit set/reset low register, Address offset: 0x18 */__IO uint16_t BSRRH; /*!< GPIO port bit set/reset high register, Address offset: 0x1A */__IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */__IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */} GPIO_TypeDef;改机构体根据结构体成员函数的⼤⼩⾃⼰形成了针对⾸地址的偏移量。
第六章跑马灯实验STM32最简单的外设莫过于IO口的高低电平控制了,本章将通过一个经典的跑马灯程序,带大家开启STM32之旅,通过本章的学习,你将了解到STM32的IO口作为输出使用的方法。
在本章中,我们将通过代码控制ALIENTEK战舰STM32开发板上的两个LED:DS0和DS1交替闪烁,实现类似跑马灯的效果。
本章分为如下四个小节:6.1,STM32 IO口简介6.2,硬件设计6.3,软件设计6.4,仿真与下载6.1 STM32 IO简介本章将要实现的是控制ALIENTEK战舰STM32开发板上的两个LED实现一个类似跑马灯的效果,该实验的关键在于如何控制STM32的IO口输出。
了解了STM32的IO口如何输出的,就可以实现跑马灯了。
通过这一章的学习,你将初步掌握STM32基本IO口的使用,而这是迈向STM32的第一步。
STM32的IO口可以由软件配置成如下8种模式:1、输入浮空2、输入上拉3、输入下拉4、模拟输入5、开漏输出6、推挽输出7、推挽式复用功能8、开漏复用功能每个IO口可以自由编程,但IO口寄存器必须要按32位字被访问。
STM32的很多IO口都是5V兼容的,这些IO口在与5V电平的外设连接的时候很有优势,具体哪些IO口是5V兼容的,可以从该芯片的数据手册管脚描述章节查到(I/O Level标FT的就是5V电平兼容的)。
STM32的每个IO端口都有7个寄存器来控制。
他们分别是:配置模式的2个32位的端口配置寄存器CRL和CRH;2个32位的数据寄存器IDR和ODR;1个32位的置位/复位寄存器BSRR;一个16位的复位寄存器BRR;1个32位的锁存寄存器LCKR;这里我们仅介绍常用的几个寄存器,我们常用的IO端口寄存器只有4个:CRL、CRH、IDR、ODR。
CRL和CRH控制着每个IO口的模式及输出速率。
STM32的IO口位配置表如表6.1.1所示:表6.1.1 STM32的IO口位配置表STM32输出模式配置如表6.1.2所示:表6.1.2 STM32输出模式配置表接下来我们看看端口低配置寄存器CRL的描述,如图6.1.1所示:图6.1.1 端口低配置寄存器CRL各位描述该寄存器的复位值为0X4444 4444,从图6.1.1可以看到,复位值其实就是配置端口为浮空输入模式。
stm32跑马灯实验报告《STM32跑马灯实验报告》实验目的:本实验旨在通过使用STM32单片机,实现一个简单的跑马灯效果,以加深对STM32单片机的理解和掌握。
实验器材:1. STM32单片机开发板2. USB数据线3. LED灯4. 电阻5. 连线实验原理:STM32单片机是一款功能强大的微控制器,具有丰富的外设和强大的处理能力。
在本实验中,我们利用STM32单片机的GPIO(通用输入输出)功能,控制LED灯的亮灭,从而实现跑马灯效果。
实验步骤:1. 连接STM32单片机开发板和电脑,使用Keil或者其他编程软件进行程序编写。
2. 编写程序,通过控制GPIO口的高低电平,实现LED灯的跑马灯效果。
3. 将编写好的程序下载到STM32单片机开发板中。
4. 连接LED灯和STM32单片机的GPIO口,确保连接正确。
5. 通过电脑或者外部电源给STM32单片机供电,观察LED灯的跑马灯效果。
实验结果:经过实验,我们成功实现了STM32单片机的跑马灯效果。
LED灯在不同的GPIO口控制下,能够呈现出流畅的跑马灯效果,整个实验过程非常顺利。
实验总结:通过本次实验,我们进一步了解了STM32单片机的GPIO控制功能,掌握了如何通过编程实现LED灯的控制。
同时也加深了对STM32单片机的理解和应用能力。
在今后的学习和工作中,我们将进一步深入研究STM32单片机的应用,为实际项目的开发和应用打下坚实的基础。
通过这次实验,我们不仅掌握了STM32单片机的基本应用,还增强了对微控制器的理解和应用能力。
希望通过不断的实验和学习,我们能够更加熟练地运用STM32单片机,为未来的工程项目做出更大的贡献。
stm32跑马灯实验报告STM32跑马灯实验报告引言:STM32是一款广泛应用于嵌入式系统开发的微控制器,具有高性能、低功耗和丰富的外设接口。
跑马灯实验是入门级的STM32实验项目,通过控制LED灯的亮灭顺序实现跑马灯效果。
本实验报告将详细介绍实验的目的、原理、实施步骤以及实验结果。
一、实验目的跑马灯实验旨在通过STM32的GPIO控制LED灯的亮灭,实现灯光在多个LED之间依次点亮和熄灭的效果。
通过这个实验,我们可以了解STM32的GPIO口的操作方式,掌握基本的STM32编程技巧。
二、实验原理STM32的GPIO口可以设置为输出模式,通过控制GPIO口的电平(高电平或低电平)来控制LED灯的亮灭。
跑马灯实验中,我们将多个LED连接到STM32的不同GPIO口上,通过依次改变GPIO口的电平状态,实现灯光在不同LED之间依次传递的效果。
三、实施步骤1. 准备材料:STM32开发板、杜邦线、若干个LED灯。
2. 连接电路:将多个LED分别连接到STM32的不同GPIO口上,确保极性正确。
3. 创建工程:使用Keil等开发环境创建STM32工程,并配置好相应的引脚。
4. 编写代码:在main函数中编写代码,通过设置GPIO口的电平状态实现跑马灯效果。
5. 编译烧录:编译代码生成可执行文件,并将其烧录到STM32开发板上。
6. 运行实验:将STM32开发板上电,观察LED灯的亮灭顺序是否符合预期。
四、实验结果经过实验,我们成功实现了跑马灯效果。
LED灯在不同的GPIO口之间依次点亮和熄灭,形成了流动的灯光效果。
通过调整代码中GPIO口的顺序和时间延迟,我们还可以改变灯光的流动速度和方向。
实验结果与预期一致,验证了我们的设计和实施的正确性。
五、实验总结通过这个实验,我们对STM32的GPIO控制和编程有了更深入的了解。
我们学会了如何通过改变GPIO口的电平状态来控制外部设备,掌握了基本的STM32编程技巧。
菜鸟学STM32之跑马灯微信公众号:⼩樊Study关注共同学习,问题或建议,请公众号留⾔作为⼀名程序员,在初步学习编程想必都绕不开⼀个最为基础的⼊门级⽰例“Hello World”,那么,在学习单⽚机时,最基础的⼊门⽰例是什么呢?没错,那就是“点亮⼀盏LED灯”本次将通过⼀个经典的跑马灯程序,带⼤家开启 STM32F4 之旅,通过本次的学习,你将了解到STM32F4 的 IO ⼝作为输出使⽤的⽅法。
我们将通过代码控制STM32F4 开发板上的两个 LED:DS0 和 DS1 交替闪烁,实现类似跑马灯的效果。
硬件连接GPIO⼯作⽅式4种输⼊模式:输⼊浮空输⼊上拉输⼊下拉模拟输⼊4种输出模式:开漏输出(带上拉或者下拉)开漏复⽤功能(带上拉或者下拉)推挽式输出(带上拉或者下拉)推挽式复⽤功能(带上拉或者下拉)4种最⼤输出速度:-2MHZ-25MHz-50MHz-100MHz软件设计led.c#include "led.h"////////////////////////////////////////////////////////////////////////////////////初始化PF9和PF10为输出⼝.并使能这两个⼝的时钟//LED IO初始化void LED_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF时钟//GPIOF9,F10初始化设置GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//LED0和LED1对应IO⼝GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHzGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIOGPIO_SetBits(GPIOF,GPIO_Pin_9 | GPIO_Pin_10);//GPIOF9,F10设置⾼,灯灭}该代码⾥⾯就包含了⼀个函数 void LED_Init(void),该函数的功能就是⽤来实现配置 PF9和 PF10 为推挽输出。
目录实验一跑马灯实验 (1)实验二按键输入实验 (3)实验三串口实验 (5)实验四外部中断实验 (8)实验五独立看门狗实验 (11)实验七定时器中断实验 (13)实验十三ADC实验 (15)实验十五DMA实验 (17)实验十六I2C 实验 (21)实验十七SPI 实验 (24)实验二十一红外遥控实验 (27)实验二十二DS18B20实验 (30)1 / 32'.实验一跑马灯实验一.实验简介我的第一个实验,跑马灯实验。
二.实验目的掌握STM32 开发环境,掌握从无到有的构建工程。
三.实验内容熟悉MDK KEIL 开发环境,构建基于固件库的工程,编写代码实现跑马灯工程。
通过ISP 下载代码到实验板,查看运行结果。
使用JLINK 下载代码到目标板,查看运行结果,使用JLINK 在线调试。
四.实验设备硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。
软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。
五.实验步骤1.熟悉MDK KEIL 开发环境2.熟悉串口编程软件ISP3.查看固件库结构和文件4.建立工程目录,复制库文件5.建立和配置工程6. 编写代码7. 编译代码8.使用ISP下载到实验板9.测试运行结果10.使用JLINK 下载到实验板11.单步调试12. 记录实验过程,撰写实验报告六.实验结果及测试源代码:int main(void}<5tm32_Clock_IniC (9); /,耒红对甘去置delay^init (72 >; "延吋初始<tLED Tnit:C>;"初维花与LED连接的硬伴接口while tl){匚EDO=O;匸ED1=1;de .lay ms (300 J ;LEDO=1;LEDL-0;delay ms(3"0^;两个灯LEDO与LED1实现交替闪烁的类跑马灯效果,每300ms闪烁一次。
目录实验一跑马灯实验 (1)实验二按键输入实验 (3)实验三串口实验 (5)实验四外部中断实验 (8)实验五独立看门狗实验 (11)实验七定时器中断实验 (13)实验十三 ADC实验 (15)实验十五 DMA实验 (17)实验十六 I2C实验 (21)实验十七 SPI实验 (24)实验二十一红外遥控实验 (27)实验二十二 DS18B20实验 (30)实验一跑马灯实验一.实验简介我的第一个实验,跑马灯实验。
二.实验目的掌握STM32开发环境,掌握从无到有的构建工程。
三.实验内容熟悉MDK KEIL开发环境,构建基于固件库的工程,编写代码实现跑马灯工程。
通过ISP 下载代码到实验板,查看运行结果。
使用JLINK下载代码到目标板,查看运行结果,使用JLINK在线调试。
四.实验设备硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。
软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。
五.实验步骤1.熟悉MDK KEIL开发环境2.熟悉串口编程软件ISP3.查看固件库结构和文件4.建立工程目录,复制库文件5.建立和配置工程6.编写代码7.编译代码8.使用ISP下载到实验板9.测试运行结果10.使用JLINK下载到实验板11.单步调试12.记录实验过程,撰写实验报告六.实验结果及测试源代码:两个灯LED0与LED1实现交替闪烁的类跑马灯效果,每300ms闪烁一次。
七.实验总结通过本次次实验我了解了STM32开发板的基本使用,初次接触这个开发板和MDK KEILC 软件,对软件操作不太了解,通过这次实验了解并熟练地使用MDK KEIL软件,用这个软件来编程和完成一些功能的实现。
作为STM32 的入门第一个例子,详细介绍了STM32 的IO口操作,同时巩固了前面的学习,并进一步介绍了MDK的软件仿真功能。
实验二按键输入实验一.实验简介在实验一的基础上,使用按键控制流水灯速度,及使用按键控制流水灯流水方向。