STM32实验-GPIO输出-流水灯实验报告
STM32实验-GPIO输出-流水灯实验报告
![STM32实验-GPIO输出-流水灯实验报告](https://img.taocdn.com/s3/m/f3009cd80029bd64793e2c48.png)
课程实验报告学院:专业: 2018年10月18日姓名学号班级指导老师课程名称嵌入式系统原理与应用实验成绩实验名称GPIO输出-流水灯1.实验目的通过一个经典的跑马灯程序,了解 STM32F1的IO口作为输出使用的方法。
通过代码控制开发板上的4个 LED灯交替闪烁,实现类似跑马灯的效果。
2.实验内容工程文件建立、程序的调试,编译、jlink驱动的安装与配置、程序下载、实验结果验证。
3.实验环境Windouws10 Keil uVision5 4.实验方法和步骤(含设计)(1)实验硬件连接图四个led灯如图连接到GPIO的6~9引脚上。
(2)软件分析使用到的GPIO端口需配置为输出模式,使用推挽(PP)模式输出,IO口速度为 50MHz。
(3)实验步骤①建立工程文件:导入程序运行需要的库,加入主程序,调试运行环境,使程序可以成功被编译和运行且没有错误和警告。
②安装JLINK驱动程序,点击下载按钮将程序烧写进开发板中。
③检查led灯是否逐一顺序点亮,能够通过调整程序使点亮顺序改变。
(4)原函数5.程序及测试结果6.实验分析与体会如果4个LED灯是与A口的PA1、PA2、PA3、PA4相连,将led.c文件中的“GPIOC”改为“GPIOA”,并将Pin_X改为对应的1~4脚。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; GPIO_Init(GPIOC, &GPIO_InitStructure);GPIO_SetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);改为RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4);实验日期: 2018 年 10 月 18 日成绩评定教师签名:年月日Welcome To Download欢迎您的下载,资料仅供参考!。
单片机流水灯实验报告
![单片机流水灯实验报告](https://img.taocdn.com/s3/m/71e095140166f5335a8102d276a20029bd646322.png)
单片机流水灯实验报告
实验目的:
通过编程实现单片机控制的流水灯电路的设计与实现,熟悉单片机的输入输出功能和简单的控制逻辑。
实验原理:
流水灯是一种常见的LED灯控制电路,通过依次点亮多个LED灯,从而形成“流水”的效果。
单片机作为控制中心,根据程序设计的指令,通过I/0口控制LED灯的状态。
实验材料:
1. STM32F103C8T6 ARM Cortex-M3开发板
2. 杜邦线
3. LED灯
4. 220 Ω电阻
实验步骤:
1. 将STM32F103C8T6开发板与电脑连接,打开开发板软件。
2. 将LED灯分别连接到开发板的引脚PA0-PA7。
3. 在开发板软件中新建一个工程,选择合适的模板,例如“BlinkLed”模板。
4. 在程序中编写控制流水灯的代码,控制LED灯的点亮和熄灭。
5. 通过编译、下载和运行,将程序烧录到STM32F103C8T6开发板中。
6. 接通电源,观察LED灯的闪烁情况,确认流水灯控制电路的正常工作。
实验结果与分析:
经过实验,我们成功设计和实现了单片机控制的流水灯电路。
LED灯按照预定的顺序依次点亮和熄灭,形成了流水灯的效果。
调整程序中的控制逻辑,可以改变流水的速度和方向,实现不同的灯光效果。
实验总结:
通过这次实验,我们深入了解了单片机的输入输出功能和简单的控制逻辑。
通过编写程序,实现了流水灯的控制,加深了对单片机的理解和应用。
在实验过程中,我们还学会了使用开发板软件进行工程的创建、编译、下载和调试操作,提高了工程能力和实践能力。
STM32实验报告
![STM32实验报告](https://img.taocdn.com/s3/m/6152da8714791711cc7917d4.png)
实验一:一个灯的闪烁一、实验要求1.熟悉使用STM32F103ZET6开发板2.利用C语言程序实现一个灯闪烁二、电路原理图图1-1 LED灯硬件连接图三、软件分析1.本实验用到以下3个库函数(省略了参数):RCC_DeInit();RCC_APB2PeriphClockCmd();GPIO_Init();2.配置输入的时钟:SystemInit()主要对RCC寄存器进行配置,GPIOA连接在APB2上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GPIOA3.声明GPIO结构: PF6~PF10口配置为输出GPIO_InitStructure.GPIO_Pin =GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;4.应用GPIO口:点亮LED1有五种方法①ODR寄存器法:GPIOA->ODR=0xffbf;②位设置/清除寄存器法:GPIOA->BRR|=0X001;③方法③只适用于GPIOx_BSRR寄存器④GPIO_WriteBit()函数法:GPIO_Write(0xffbf);⑤置位复位库函数法:GPIO_ResetBits(GPIOF,GPIO_Pin_8);5.主函数程序:int main(void){RCC_Configuration(); /* 配置系统时钟 */GPIO_Configuration(); /* 配置GPIO IO口初始化 */ for(;;){GPIOF->ODR = 0xfeff; /* PF8=0 --> 点亮D3 */Delay(600000);GPIOF->ODR = 0xffff; /* PF8=1 --> 熄灭D3 */Delay(600000);}}四、实验现象下载程序后开发板上的LED1灯闪烁五、总结通过对本实验可以发现,和51等8位单片机相比,STM32对I/O端口的操作变得复杂了许多。
STM32实训实验1报告
![STM32实训实验1报告](https://img.taocdn.com/s3/m/ac1962d90875f46527d3240c844769eae009a390.png)
STM32实训实验1报告
实验一我的第一个工程实验
一.实验简介
我的第一个工程,STM32固件库点亮LED灯。
二.实验目的
掌握STM32开发环境,掌握从无到有的构建工程。
三.实验内容
基本要求:熟悉MDK KEIL开发环境,构建基于固件库的工程,编写代码实现GPIO 口控制开发板上LED灯亮灭。
扩展要求:实现流水灯功能。
使用JLINK下载代码到目标板,查看运行结果。
四.实验设备
硬件部分:PC计算机(宿主机)、奋斗STM32实验板、JLINK。
软件部分:PC机WINDOWS系统、MDK KEIL软件。
五.实验步骤
1.熟悉MDK KEIL开发环境
2.查看固件库结构和文件
3.建立工程目录,复制库文件
4.建立和配置工程
5.编写代码
6.编译代码
7.测试运行结果
8.使用JLINK下载到实验板
9.记录实验过程,撰写实验报告
六.实验过程
1.创建本地文件夹和软件中的文件夹
2.对软件中的文件夹进行配置
3.GPIO初始化过程
4.软件设计及代码(写一个简单的main函数)
七.实验心得体会
1.遇到的问题及解决方法。
流水灯实验报告
![流水灯实验报告](https://img.taocdn.com/s3/m/6d639868effdc8d376eeaeaad1f34693daef10f5.png)
实验一流水灯实验一、实验目的1)简单I/O引脚的输出2)掌握软件延时编程方法3)简单按键输入捕获判断二、实验实现的功能1)开机时点亮12发光二极管, 闪烁三下2)按照顺时针循环依次点亮发光二极管3)通过按键将发光二极管的显示由顺时针改为逆时针方式三、系统硬件设计单片机STC10F08XE 1片发光二极管led 红4个黄4个绿4个按键6个复位电路时钟电路如下图所示:四、系统软件设计#include<reg51.h>sbit L1=P0^5; sbit L2=P0^6; sbit L3=P0^7; void Delay(void){unsigned char i,j,k;for(i=10;i>0;i--)for(j=132;j>0;j--)for(k=150;k>0;k--); }Scan_Key(){ unsigned char FLAG=0;unsigned char n;n=(L1==0)||(L2==0)||(L3==0);if(n) { FLAG=1;}return FLAG; }main(){ unsigned char y,n,s=0,b=1,m=0;unsigned char c=1;unsigned char a[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char h[]={0xff,0x38,0x34,0x2f,0x1f};n=Scan_Key(); for(y=0;y<3;y++){ P2=0; P3=0; Delay(); Delay(); Delay();P2=0xff; P3=0xff; Delay(); Delay(); Delay(); }while(1) { while(1){ m=m+n; P3=0x3f; while(1){ for(;b<9;b++){ n=Scan_Key(); m=m+n;if((P3==0x3f)&&(m%2==0)){P2=a[b];Delay();}else { P2=0xff;break; }if(m%2==0) c=1; P2=0xff; }for(;c<5;c++){n=Scan_Key(); m=m+n;if((P2==0xff)&&(m%2==0)){ P3=h[c];Delay();}else { P3=0x3f;break;} }if(m%2==0) b=1; break; }if(m%2==1) break; }while(1){ for(;b>0;b--){n=Scan_Key(); m=m+n;if((P3==0x3f)&&(m%2==1)){P2=a[b];Delay(); } else{P2=0xff;break;} P2=0xff; }if(m%2==1) c=4; for(;c>0;c--){ n=Scan_Key(); m=m+n;if((P2==0xff)&&(m%2==1)){ P3=h[c]; Delay();}else { P3=0x3f;break;} P3=0x3f; }if(m%2==0) break;if(m%2==1) b=8; } } }五、实验过程中遇到的问题及解决方法问题1: 如何实现顺、逆时针依次点亮流水灯?解决: 利用循环右移_cror_(m,1)和循环左移_crol_(n,1)依次点亮。
实验一基于STM32固件库的MDK工程的建立及流水灯
![实验一基于STM32固件库的MDK工程的建立及流水灯](https://img.taocdn.com/s3/m/877ea2452b160b4e767fcf2c.png)
实验一基于STM32固件库的MDK工程的建立及流水灯一、实验类型验证性实验。
二、实验器材1、PC微机1台2、MDK开发环境三、实验目的与任务实验目的:1、熟悉Cortex-M3处理器开发平台MDK2、熟悉基于STM32固件库的MDK项目的配置3、理解STM32处理器GPIO的结构,掌握GPIO引脚的配置方法4、熟悉GPIO的配置过程5、熟悉MDK开发平台软件仿真环境及外设仿真方法实验任务:如下图,STM32F103R8T6处理器GPIOA的GPIO_Pin_6控制LED1 GPIO_Pin_7控制LED2,建立一个基于STM32固件库的MDK项目,实现对LED灯的控制,使LED1每秒闪烁1次。
LED2每秒闪烁2次。
四、参考资料1、《嵌入式系统基础及应用》第7章 GPIO部分2、参考手册:STM32F10xxx_RM0008_CH_Rev7V3.pdf3、数据手册:STM32F103CDE增强型系列数据手册(2009年3月).pdf4、固件库:STM32F101xx和STM32F103xx固件函数库.pdf五、实验基本原理1、STM32每个GPIO引脚具有工作模有:浮空输入、带上拉输入、带下拉输入、模拟输入、开漏输出、推挽输出、复用功能的推挽输出、复用功能的开漏输出等。
由上图可知,若驱动LED1、LED2,需要设置相应的IO引脚为开漏输出或推挽输出。
2、对于STM32 GPIO端口的配置,涉及的寄存器的作用。
2个32bits的配置寄存器(GPIOx_CRL,GPIOx_CRH),用于配置各IO引脚的输入输出方式和速度,各位含义如下:2个32bits的数据寄存器 (GPIOx_IDR,GPIOx_ODR),用于读取IO引脚的状态和设置IO 引脚输出电位。
1个32bits的置位/复位寄存器(GPIOx_BSRR),用于置位复位某些IO引脚的原子操作。
1个16bits的复位寄存器(GPIOx_BRR),用于复位某些引脚的原子操作1个32bits的Lock寄存器(GPIOx_LCKR)。
GPIO的使用实验报告
![GPIO的使用实验报告](https://img.taocdn.com/s3/m/326e769289eb172ded63b79f.png)
实验二通用GPIO的使用(4学时)
一、实验目的
1、掌握C51芯片I/O接口的性能特点。
2、掌握STM32芯片I/O接口的性能特点。
3、对于C51芯片,使用P0、P1口做I/O接口,实现输入和
输出控制。
4、对于STM32芯片掌握GPIO的功能设定方法,使用
GPIO完成输入与输出的电路驱动
二、实验内容
1. P1口做为输出口控制“单只数码管循环显示0~9”。
2. 编写一段程序,并修改硬件电路,用P1.0-P1.6口控制
LED,P1.7控制LED的亮与灭(P1.7接按键,按下时LED 亮,不按时LED灭)。
3、用STM32芯片I/O接口实现流水灯的控制。
三、思考题
1、为什么P0作为I/O接口时,要接上拉电阻?
答:因为P0口作为I/O接口时内部是漏极开路型。
2、在实验内容2中,如果P0某个管脚接按键,该如何修改硬件和软件?
3、设计一单片机控制电路,用八只开关分别控制八只LED 的亮灭。
四、实验结果分析
对于问题2
四、结论
这次对单片机GPIO口的实验,我们分别做了51单片机和STM32f103r6对GPIO端口的应用,再通过protues的仿真验证,证明我们的思路是正确的。
由于在这次实验中没有吧protues8.6版本安装好,导致实验过程中出现了了一些延误,没能按照老师课堂的进度,但在实验课过后过后,及时复习和查资料,解决了这个问题。
实验过程中不足的有,对于实验仍处于生搬硬套的阶段,无法将老师理论课所讲与实验结合在一起,对于写代码的能力有待提高。
单片机流水灯实验总结
![单片机流水灯实验总结](https://img.taocdn.com/s3/m/4524a1cb70fe910ef12d2af90242a8956becaac7.png)
单片机流水灯实验总结单片机流水灯实验是学习单片机编程的基础实验之一,通过这个实验可以了解单片机的基本输入输出功能,掌握单片机的编程和控制方法。
下面我将对单片机流水灯实验进行总结,包括实验原理、实验步骤、实验结果以及实验中遇到的问题和解决方法。
实验原理。
单片机流水灯实验是利用单片机的GPIO口控制LED灯的亮灭,通过不同的控制方式实现LED灯的流水效果。
在单片机中,通过将相应的GPIO口输出高电平或低电平来控制LED的亮灭,从而实现流水灯的效果。
实验步骤。
1. 硬件连接,将单片机和LED灯按照电路图连接好,确保连接正确无误。
2. 编写程序,利用单片机编程软件编写流水灯控制程序,设置相应的GPIO口输出高低电平的时间间隔和顺序。
3. 烧录程序,将编写好的程序通过编程器烧录到单片机中。
4. 调试程序,连接好电路后,通过上电测试程序,观察LED灯的流水效果是否符合预期。
实验结果。
经过以上步骤,我们成功实现了单片机流水灯的效果。
LED灯按照设定的顺序依次亮起和熄灭,形成了流水灯的效果。
实验结果符合预期,证明了程序编写和硬件连接的正确性。
实验中遇到的问题和解决方法。
在实验过程中,我们遇到了一些问题,例如LED灯未按照预期顺序亮起、熄灭或者有闪烁现象。
经过检查和调试,发现是程序编写中的逻辑错误或者硬件连接接触不良导致的。
通过仔细排查和调试,我们成功解决了这些问题,确保了实验的顺利进行和结果的准确性。
总结。
通过本次单片机流水灯实验,我们深入了解了单片机的GPIO口控制LED灯的方法,掌握了单片机编程和控制的基本技能。
同时,实验过程中遇到的问题也让我们学到了很多调试和排查的方法,提高了我们的实际操作能力和解决问题的能力。
希望通过这次实验,能够为我们今后的学习和实践打下坚实的基础。
结语。
单片机流水灯实验是单片机编程学习的重要实验之一,通过这个实验可以加深对单片机控制方法的理解,提高实际操作能力。
希望大家能够认真对待这个实验,通过自己的努力和实践,掌握单片机编程的基本技能,为今后的学习和工作打下坚实的基础。
嵌入式流水灯实训报告
![嵌入式流水灯实训报告](https://img.taocdn.com/s3/m/fa9984d2690203d8ce2f0066f5335a8102d26688.png)
一、实验背景随着物联网、智能家居等领域的快速发展,嵌入式系统在各个行业中的应用越来越广泛。
为了提高对嵌入式系统的理解,本实训选择了“流水灯”作为实验项目。
通过本实验,旨在掌握STM32单片机的基本操作,熟悉GPIO端口的使用,以及定时器的配置和应用。
二、实验目的1. 熟悉STM32单片机的基本结构和工作原理;2. 掌握GPIO端口的使用方法,实现LED灯的亮灭控制;3. 学习定时器的配置和应用,实现流水灯效果的实现;4. 提高嵌入式系统开发的理解和应用能力。
三、实验原理1. STM32单片机简介STM32是一款基于ARM Cortex-M3内核的微控制器,具有高性能、低功耗、丰富的外设和强大的处理能力。
本实验使用STM32F103ZET6单片机作为实验平台。
2. GPIO端口GPIO(通用输入输出)端口是STM32单片机的重要组成部分,可以用于输入或输出信号。
在本实验中,GPIO端口用于控制LED灯的亮灭。
3. 定时器定时器是STM32单片机的一个功能模块,可以用于实现定时功能。
在本实验中,定时器用于控制LED灯的流水效果。
四、实验步骤1. 准备实验环境(1)准备STM32F103ZET6单片机开发板、电源、LED灯、连接线等实验器材;(2)安装Keil 5软件,并配置ST-Link Debugger环境。
2. 编写程序(1)创建一个新的STM32工程,并添加必要的头文件和库文件;(2)编写主函数main.c,实现以下功能:a. 初始化GPIO端口,设置LED灯的引脚为输出模式;b. 初始化定时器,设置定时时间;c. 在定时器中断服务程序中,实现LED灯的流水效果;d. 主循环中,调用延时函数,实现流水灯效果的持续显示。
3. 编译程序(1)编译工程,生成可执行文件;(2)将可执行文件下载到STM32单片机中。
4. 测试实验(1)接通电源,观察LED灯的流水效果;(2)根据需要调整定时器和GPIO端口的配置,观察流水灯效果的变化。
多功能流水灯实验报告
![多功能流水灯实验报告](https://img.taocdn.com/s3/m/700c57b9a1116c175f0e7cd184254b35effd1a5a.png)
多功能流水灯实验报告第一篇:多功能流水灯实验报告课程设计报告设计课题:多功能流水灯专业班级:学生姓名:指导教师:设计时间:题目多功能流水灯一、课程设计目的1、掌握数字系统的设计方法和测试方法。
二、课程设计题目(问题)描述和要求设计一个四模式三路彩灯(红、绿、黄三种颜色)显示系统。
该系统的显示模式由外部输入Z、Y控制,要求开机自动置入初态后便按规定模式循环运行。
设各路彩灯均为8个(红灯序号为r1-r8,绿灯序号为g1-g8,黄灯序号为y1-y8),各模式规定如下: XY=00时,系统的显示模式在以下六个节拍间循环:第一节拍,依次点亮奇号红灯(r1亮→r1、r3亮→r1、r3、r5亮→r1、r3、r5、r7亮),其余灯均灭。
第二节拍,依次点亮偶号红灯,其余灯均灭。
第三节拍,依次点亮奇号绿灯,其余灯均灭。
第四节拍,依次点亮偶号绿灯,其余灯均灭。
第五节拍,依次点亮奇号黄灯,其余灯均灭。
第六节拍,依次点亮偶号黄灯,其余灯均灭。
XY=01时,系统的显示在第一、二节拍间循环。
XY=10时,系统的显示在第三、四节拍间循环。
XY=11时,系统的显示在第五、六节拍间循环。
三、系统分析与设计根据课程设计题目问题描述和要求,完成:主要器件:绘制电路原理图:确定选用的元件及其封装形式,完善电路。
原理图设计过程:进行电子电路设计时,首先要有一个设计方案,而将电路设计方案表达出来的最好方法就是画出清晰、正确的电路原理图。
根据设计需要选择出元器件,并把所选用的元器件和相互之间的连接关系明确地列出,直观地表达出设计概念。
电路原理图的基本组成是电子元器件符号和连接导线,电子元器件符号包含了该元器件的功能,连接导线则包含了元器件的电气连接信息,所以电路原理图设计的质量好坏直接影响到PCB印制电路板的设计质量。
绘制原理图的两大原则:首先应该保证整个电路原理图的连线正确,信号流向清晰,便于阅读分析和修改;其次应该做到元器件的整体布局合理、美观、实用。
嵌入式系统 流水灯、按键、定时器实验报告
![嵌入式系统 流水灯、按键、定时器实验报告](https://img.taocdn.com/s3/m/8d880292bb68a98270fefa08.png)
嵌入式系统应用实验报告姓名:学号:学院:专业:班级:指导教师:实验1、流水灯实验1、1实验要求编程控制实验板上LED灯轮流点亮、熄灭,中间间隔一定时间。
1、2原理分析实验主要考察对STM32F10X系列单片机GPIO的输出操作。
参阅数据手册可知,通过软件编程,GPIO可以配置成以下几种模式: ◇输入浮空◇输入上拉◇输入下拉◇模拟输入◇开漏输出◇推挽式输出◇推挽式复用功能◇开漏式复用功能根据实验要求,应该首先将GPIO配置为推挽输出模式。
由原理图可知,单片机GPIO输出信号经过74HC244缓冲器,连接LED灯。
由于74HC244的OE1与OE2都接地,为相同电平,故A端电平与Y端电平相同且LED 灯共阳,所以,如果要点亮LED,GPIO应输出低电平。
反之,LED灯熄灭。
1、3程序分析软件方面,在程序启动时,调用SystemInit()函数(见附录1),对系统时钟等关键部分进行初始化,然后再对GPIO进行配置。
GPIO配置函数为SZ_STM32_LEDInit()(见附录2),函数中首先使能GPIO时钟:RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE);然后配置GPIO输入输出模式:GPIO_InitStructure、GPIO_Mode = GPIO_Mode_Out_PP;再配置GPIO端口翻转速度:GPIO_InitStructure、GPIO_Speed = GPIO_Speed_50MHz;最后将配置好的参数写入寄存器,初始化完成:GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure)。
初始化完成后,程序循环点亮一个LED并熄灭其她LED,中间通过Delay()函数进行延时,达到流水灯的效果(程序完整代码见附录3)。
实验程序流程图如下:硬件方面,根据实验指南,将实验板做如下连接:1、3实验结果实验二、按键实验2、1实验要求利用STM32读取外部按键状态,按键按下一次产生一次外部中断在中断处理函数中使按键所对应的灯亮起。
STM32实验报告
![STM32实验报告](https://img.taocdn.com/s3/m/16330876a5e9856a56126058.png)
实验一:一个灯的闪烁一、实验要求1.熟悉使用STM32F103ZET6开发板2.利用C语言程序实现一个灯闪烁二、电路原理图图1-1 LED灯硬件连接图三、软件分析1.本实验用到以下3个库函数(省略了参数):RCC_DeInit();RCC_APB2PeriphClockCmd();GPIO_Init();2.配置输入的时钟:SystemInit()主要对RCC寄存器进行配置,GPIOA连接在APB2上,因此RCC_APB2PeriphClockCmd()函数需要使能APB2Periph_GPIOA3.声明GPIO结构:PF6~PF10口配置为输出=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;4.应用GPIO口:点亮LED1有五种方法①ODR寄存器法:GPIOA->ODR=0xffbf;②位设置/清除寄存器法:GPIOA->BRR|=0X001;③方法③只适用于GPIOx_BSRR寄存器④GPIO_WriteBit()函数法:GPIO_Write(0xffbf);⑤置位复位库函数法:GPIO_ResetBits(GPIOF,GPIO_Pin_8);5.主函数程序:int main(void){RCC_Configuration(); /* 配置系统时钟*/GPIO_Configuration(); /* 配置GPIO IO口初始化*/ for(;;){GPIOF->ODR = 0xfeff; /* PF8=0 --> 点亮D3 */Delay(600000);GPIOF->ODR = 0xffff; /* PF8=1 --> 熄灭D3 */Delay(600000);}}四、实验现象下载程序后开发板上的LED1灯闪烁五、总结通过对本实验可以发现,和51等8位单片机相比,STM32对I/O端口的操作变得复杂了许多。
流水灯实训报告心得体会
![流水灯实训报告心得体会](https://img.taocdn.com/s3/m/bcf7cf69effdc8d376eeaeaad1f34693dbef107f.png)
一、前言流水灯实训是嵌入式系统学习过程中的一个重要环节,通过本次实训,我对嵌入式系统有了更深入的了解,提高了自己的动手能力和实践能力。
以下是我对本次流水灯实训的心得体会。
二、实训目的与内容1. 实训目的本次流水灯实训的主要目的是:(1)掌握STM32单片机的基本结构与工作原理;(2)学习使用GPIO端口进行简单的输出控制;(3)了解定时器的基本使用方法,通过定时器控制LED灯的流水效果;(4)提升对嵌入式系统开发的理解与应用能力。
2. 实训内容本次实训主要涉及以下几个方面:(1)STM32F103ZET6单片机的基本结构和工作原理;(2)GPIO端口的使用方法;(3)定时器的基本使用方法;(4)LED流水灯的实现。
三、实训过程1. 实验准备在实验前,我首先下载了Keil 5软件和ST-Link Debugger环境,并对实验板进行了简单的认识。
接着,我学习了STM32F103ZET6单片机的基本结构和工作原理,了解了GPIO端口和定时器的使用方法。
2. 实验步骤(1)编写代码根据实验要求,我编写了main.c、led.c和led.h三个文件。
在main.c文件中,我设置了单片机的时钟频率、初始化GPIO端口和定时器。
在led.c文件中,我编写了控制LED流水灯的函数。
在led.h文件中,我定义了LED流水灯的相关宏。
(2)编译代码将编写的代码编译生成.hex文件。
(3)下载代码使用ST-Link Debugger将生成的.hex文件下载到实验板上。
(4)调试代码通过观察实验现象,我发现LED流水灯效果不理想。
经过分析,我发现是定时器设置不当导致的。
我修改了定时器的相关参数,再次下载代码并观察实验现象,最终实现了LED流水灯的效果。
3. 实验总结在实验过程中,我遇到了许多问题,如代码编译错误、下载失败等。
通过查阅资料和请教老师,我逐渐解决了这些问题。
这次实训让我深刻体会到,嵌入式系统开发需要耐心和细心,同时也需要具备一定的调试技巧。
流水灯显示实验报告
![流水灯显示实验报告](https://img.taocdn.com/s3/m/8076dd68bc64783e0912a21614791711cd797947.png)
流水灯显示实验报告流水灯显示实验报告一、实验目的本实验旨在通过单片机控制LED灯的亮灭,实现流水灯的显示效果。
通过本实验,旨在巩固学生对单片机基本理论知识的理解,掌握流水灯显示的基本原理与设计方法,提高实践操作能力。
二、实验原理流水灯是一种常见的LED显示效果,通过控制LED灯的亮灭顺序和时间间隔,使LED灯以一定的速度逐次点亮或熄灭,形成流水般的效果。
本实验采用单片机控制LED灯的亮灭,通过编程实现流水灯的显示。
三、实验步骤1.准备实验材料(1)单片机开发板(2)LED灯若干(3)杜邦线若干(4)面包板(5)镊子、电烙铁等工具2.搭建硬件电路(1)将LED灯按照一定的顺序连接到单片机开发板的GPIO口上。
(2)使用杜邦线将电源连接到LED灯的正极和负极。
(3)连接单片机开发板与电脑的串口。
3.编写程序(1)打开单片机开发板的编程软件,如Keil uVision。
(2)编写程序代码,实现流水灯的显示效果。
程序代码包括初始化、延时、循环点亮和熄灭LED灯等部分。
(3)将程序代码下载到单片机开发板中。
4.调试与测试(1)打开电源,观察LED灯的亮灭情况,检查是否实现了流水灯效果。
(2)调整程序代码中的延时参数,改变LED灯的亮灭速度。
(3)检查程序代码中的语法错误和逻辑错误,确保程序的正确性。
四、实验结果与分析1.实验结果通过本次实验,我们成功地实现了流水灯的显示效果。
当电源接通后,LED灯按照设定的顺序逐次点亮或熄灭,形成流水般的效果。
同时,通过调整程序代码中的延时参数,我们还可以改变LED灯的亮灭速度。
2.结果分析本次实验的成功得益于正确的实验方法和步骤。
首先,我们准确地搭建了硬件电路,确保LED灯与单片机的连接正确;其次,我们合理地编写了程序代码,实现了流水灯的显示效果;最后,我们对实验结果进行了仔细的观察和调试,确保实验结果的正确性。
通过本次实验,我们不仅提高了实践操作能力,还巩固了对单片机基本理论知识的理解。
STM32 LED流水灯实验报告
![STM32 LED流水灯实验报告](https://img.taocdn.com/s3/m/a1847a9ae53a580216fcfeb0.png)
} } 4. 实现功能 Led1 亮,led0 不亮,延迟两个 1000ms;Led0 亮,led1 亮,延迟两个 1000ms;Led0 亮,led1 不亮,延迟两个 1000ms;Led0 亮,led1 亮,延迟两个 1000ms,如此实现流水灯。 5. 总结 (1) delay 文件夹内包含了 delay.c 和 delay.h 两个文件,这两个文件用来实现系统的延时 功能 (2) delay 延时的编程思想:CM3 内核的处理器,内部包含了一个 SysTick 定时器,SysTick 是一个 24 位的倒计数定时器,当计数到 0 时,将从 RELOAD 寄存器中自动重装载定 时初值,开始新一轮计数。只要不把它在 SysTick 控制及状态寄存器中的使能位清除, 就永不停息 (3) 在 ucos 下 SysTick 不能再被随意更改,故利用时钟摘取法,以 delay_us 为例,比如 delay_us(50),在刚进入 delay_us 的时候先计算好这段延时需要等待的 SysTick 计数次 数,这里为 50*9(假设系统时钟为 72Mhz,那么 SysTick 每增加 1,就是 1/9us) ,然 后我们就一直统计 SysTick 的计数变化,直到这个值变化了 50*9,一旦检测到变化达 到或者超过这个值,就说明延时 50us 时间到了。 (4) sys 文件夹内包含了 sys.c 和 sys.h 两个文件。在 sys.h 里面定义了 STM32 的 IO 口 输入读取宏定义和输出宏定义。sys.c 里面只定义了一个中断分组函数。 (5) usart 文件夹内包含了 usart.c 和 usart.h 两个文件。这两个文件用于串口的初始化和
LED1=1; delay_ms(1000); delay_ms(1000); LED0=1; LED1=0; delay_ms(1000); delay_ms(1000); LED0=1; LED1=1; delay_ms(1000);//ÑÓʱ300ms delay_ms(1000); } } /* LED0=0; LED_a=0; LED1=1; LED_a=1; delay_ms(5000); LED0=1; LED0_a=1; LED1=0; LED1_a=0; delay_ms(5000);
STM32实验一 LED流水灯
![STM32实验一 LED流水灯](https://img.taocdn.com/s3/m/98a63bdeb9f3f90f76c61bb4.png)
图1.2 project文件夹下的内容
4. 在project文件夹下建立文件夹RVMDK,并将下列文 件”cortexm3_macro.s”和”stm32f10x_vector.s”复制 过来,如下图所示.
图1.3 RVMDK文件夹
1.2 进入工程建立
1.打开Keil uVision4软件. 2.新建MDK工程,然后选择Project -> New uVision Project 选项,如下图所示.
实验一 LED流水灯
1.1 创建工程的准备
1.在硬盘新建文件夹”实验一流水灯” 2.在”实验一流水灯”下建立文件夹project和library,并 将ST提供的类库头文件夹”inc”和源文件夹”src”复制 到library下,如下图所示.
图1.1 ST提供的类库
3.将下列文件”Font_Lib.h”,”hz16.h”,”hz16.c”, ”ili9320.h”,”ili9320.c”,”ili9320_font.h”,”main.c”,”platform _config.h”,”stm32f10x_conf.h”,”stm32f10x_it.h”,”stm 32f10x_it.c”复制到project文件夹下,如下图所示.
图1.4 新建工程
3.起名”LED”,并保存建立工程在RVMDK文件夹下. 4.选择STMicroelectronics下的STM32F103ZE,如下图所示.
图1.4 选择器件
5.弹出询问是否加载启动代码到工程下,选择否,如下图所 示.
图1.6 启动代码选择提示
6.在Target 1上右击,在弹出的快捷菜单中选择Manage Components,如下图所示.
图1.9 Debug选项卡设置
最新单片机实验流水灯报告
![最新单片机实验流水灯报告](https://img.taocdn.com/s3/m/739a54e8f424ccbff121dd36a32d7375a417c681.png)
最新单片机实验流水灯报告在本次实验中,我们设计并实现了一个基于单片机的流水灯系统。
该系统的主要功能是通过编程控制LED灯按照一定的顺序和时间间隔依次点亮和熄灭,从而形成流水灯效果。
以下是实验的详细报告:实验目的:1. 熟悉单片机的基本操作和编程。
2. 掌握GPIO(通用输入输出)的配置和使用。
3. 提高编程能力,理解时间控制的概念。
实验材料:- 单片机开发板- LED灯若干- 杜邦线若干- 电源适配器- 计算机及相应的编程软件实验步骤:1. 首先,将LED灯通过杜邦线连接到单片机的GPIO端口上。
确保每个LED连接正确,并且限流电阻已经安装以保护LED不被烧毁。
2. 使用编程软件编写单片机程序。
程序的主要逻辑是通过循环结构控制每个GPIO端口的高低电平,从而控制LED的亮灭。
3. 在程序中设置适当的延时函数,以控制LED点亮和熄灭的时间间隔,实现流水灯的效果。
4. 将编写好的程序通过编程软件下载到单片机中。
5. 连接电源,观察LED灯是否按照预期进行流水式点亮。
实验结果:通过实验,我们成功实现了流水灯效果。
LED灯按照预定的顺序依次点亮和熄灭,形成了流畅的动态效果。
通过调整延时参数,我们还可以改变流水的速度,从而观察不同设置下的灯光变化。
实验分析:在实验过程中,我们发现GPIO端口的配置对于LED的亮灭至关重要。
同时,延时函数的精确度直接影响了流水灯效果的平滑度。
通过对程序的不断调试和优化,我们加深了对单片机编程和硬件控制的理解。
结论:本次单片机实验不仅锻炼了我们的编程技能,而且增强了我们对电子硬件的认识和操作能力。
通过实际操作,我们更加深刻地理解了理论知识,为未来的电子设计和创新打下了坚实的基础。
STM32实验报告
![STM32实验报告](https://img.taocdn.com/s3/m/49ee440ac950ad02de80d4d8d15abe23482f03de.png)
STM32实验报告一、实验目的本次实验的目的是了解并掌握STM32单片机的基本使用方法,学习如何通过编程控制STM32来完成一系列操作,包括输入输出控制、定时器控制等。
二、实验器材和材料1.STM32单片机开发板B数据线3. 开发环境:Keil uVision 5(或其他适用于STM32的编程软件)三、实验过程1. 配置开发环境:安装Keil uVision 5,并将STM32单片机开发板与计算机连接。
2.创建一个新的工程,并选择适当的芯片型号。
3.对芯片进行配置:选择适合的时钟源,设置GPIO端口等。
4.编写程序代码:根据实验要求,编写相应的程序代码。
5. 编译程序:在Keil uVision中进行编译,生成可执行文件。
6.烧录程序:将生成的可执行文件烧录到STM32单片机中。
7.调试与测试:连接各种外设并进行测试,检查程序功能的正确性。
8.实验结果分析:根据测试结果,分析并总结实验结果。
四、实验结果在本次实验中,我成功完成了以下几个实验任务:1.输入输出控制:通过配置GPIO端口为输入或输出,我成功实现了对外部开关、LED 等外设的控制。
通过读取外部开关的状态,我能够进行相应的逻辑操作。
2.定时器控制:通过配置并启动定时器,我成功实现了定时中断的功能。
可以通过定时中断来触发一系列事件,比如定时更新数码管的显示,控制电机的运动等。
3.串口通信:通过配置UART串口模块,我成功实现了与计算机的串口通信。
可以通过串口与计算机进行数据的收发,实现STM32与计算机的数据交互。
五、实验总结通过本次实验,我对STM32单片机的使用方法有了更深入的了解。
学会了如何配置GPIO端口、定时器、串口等,掌握了相应的编程技巧。
此外,还学会了如何进行调试和测试,检查程序功能的正确性。
通过实验的实际操作,我对STM32的各项功能有了更深入的理解。
需要注意的是,在实验过程中,我遇到了一些问题,比如代码编写错误、烧录问题等,但经过仔细分析和调试,最终都得到了解决。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
改为
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;
课程实验报告
学院:专业:2018年10月18日
姓名
学号
班级
指导老师
课程名称
嵌入式系统原理与应用实验
成
绩
实验名称
GPIO输出-流水灯
1.实验目的
通过一个经典的跑马灯程序,了解STM32F1的IO口作为输出使用的方法。通过代码控制开发板上的4个LED灯交替闪烁,实现类似跑马灯的效果。
2.实验内容
工程文件建立、程序的调试,编译、jlink驱动的安装与配置、程序下载、实验结果验证。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
GPIO_Init(GPIOC, &GPIO_InitStructure);
欢迎您的下载,资料仅供参考!
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4);
实验日期:2018年10月18日
成绩评定
教师签名:
年月日
Welcome To
Download !!!
②安装JLINK驱动程序,点击下载按钮将程序烧写进开发板中。
③检查led灯是否逐一顺序点亮,能够通过调整程序使点亮顺序改变。
(体会
如果4个LED灯是与A口的PA1、PA2、PA3、PA4相连,将led.c文件中的“GPIOC”改为“GPIOA”,并将Pin_X改为对应的1~4脚。
3.实验环境
Windouws10 Keil uVision5
4. 实验方法和步骤(含设计)
(1)实验硬件连接图
四个led灯如图连接到GPIO的6~9引脚上。
(2)软件分析
使用到的GPIO端口需配置为输出模式,使用推挽(PP)模式输出,IO口速度为50MHz。
(3)实验步骤
①建立工程文件:导入程序运行需要的库,加入主程序,调试运行环境,使程序可以成功被编译和运行且没有错误和警告。