嵌入式实验报告Word格式文档下载.docx

上传人:b****7 文档编号:22592876 上传时间:2023-02-04 格式:DOCX 页数:32 大小:705.52KB
下载 相关 举报
嵌入式实验报告Word格式文档下载.docx_第1页
第1页 / 共32页
嵌入式实验报告Word格式文档下载.docx_第2页
第2页 / 共32页
嵌入式实验报告Word格式文档下载.docx_第3页
第3页 / 共32页
嵌入式实验报告Word格式文档下载.docx_第4页
第4页 / 共32页
嵌入式实验报告Word格式文档下载.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

嵌入式实验报告Word格式文档下载.docx

《嵌入式实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《嵌入式实验报告Word格式文档下载.docx(32页珍藏版)》请在冰豆网上搜索。

嵌入式实验报告Word格式文档下载.docx

11.单步调试

12.记录实验过程,撰写实验报告

六.实验结果及测试

源代码:

两个灯LED0与LED1实现交替闪烁的类跑马灯效果,每300ms闪烁一次。

七.实验总结

通过本次次实验我了解了STM32开发板的基本使用,初次接触这个开发板和MDKKEILC软件,对软件操作不太了解,通过这次实验了解并熟练地使用MDKKEIL软件,用这个软件来编程和完成一些功能的实现。

作为STM32的入门第一个例子,详细介绍了STM32的IO口操作,同时巩固了前面的学习,并进一步介绍了MDK的软件仿真功能。

实验二按键输入实验

在实验一的基础上,使用按键控制流水灯速度,及使用按键控制流水灯流水方向。

熟练使用库函数操作GPIO,掌握中断配置和中断服务程序编写方法,掌握通过全局变量在中断服务程序和主程序间通信的方法。

实现初始化GPIO,并配置中断,在中断服务程序中通过修改全局变量,达到控制流水灯速度及方向。

PC计算机(宿主机)、亮点STM32实验板、JLINK、示波器。

1在实验1代码的基础上,编写中断初始化代码

2在主程序中声明全局变量,用于和中断服务程序通信,编写完成主程序

3编写中断服务程序

4编译代码,使用JLINK下载到实验板

5.单步调试

6记录实验过程,撰写实验报告

 

我们将通过MiniSTM32板上载有的3个按钮,来控制板上的2个LED,其中KEY0控制LED0,按一次亮,再按一次,就灭。

KEY1控制LED1,效果同KEY0。

KEY_2(KEY_UP),同时控制LED0和LED1,按一次,他们的状态就翻转一次。

通过本次实验,我学会了如何使用STM32的IO口作为输入用。

TM32的IO口做输入使用的时候,是通过读取IDR的内容来读取IO口的状态的。

这里需要注意的是KEY0和KEY1是低电平有效的,而WK_UP是高电平有效的,而且要确认WK_UP按钮与DS18B20的连接是否已经断开,要先断开,否则DS18B20会干扰WK_UP按键!

并且KEY0和KEY1连接在与JTAG相关的IO口上,所以在软件编写的时候要先禁用JTAG功能,才能把这两个IO口当成普通IO口使用。

实验三串口实验

编写代码实现串口发送和接收,将通过串口发送来的数据回送回去。

掌握STM32基本串口编程,进一步学习中断处理。

编写主程序,初始化串口1,设置波特率为9600,无校验,数据位8位,停止位1位。

编写中断服务程序代码实现将发送过来的数据回送。

PC机WINDOWS系统、MDKKEIL软件、ISP软件、串口调试助手。

1编写串口初始化代码

2编写中断服务程序代码

3编译代码,使用JLINK或ISP下载到实验板

4记录实验过程,撰写实验报告

把代码下载到MiniSTM32开发板,可以看到板子上的LED0开始闪烁,说明程序已经在跑了。

接着我们打开串口调试助手,看到如下信息:

证明串口数据发送没问题。

接着,我们在发送区输入上面的文字,输入完后按回车键。

然后单击发送,可以得到如下结果:

通过本次实验,我进一步了解了串口的使用,学会了通过串口发送和接收数据,将通过串口发送来的数据回送回去。

该实验的硬件配置不同于前两个实验,串口1与USB串口默认是分开的,并没有在PCB上连接在一起,需要通过跳线帽来连接一下。

这里我们把P4的RXD和TXD用跳线帽与P3的PA9和PA10连接起来。

实验四外部中断实验

STM32的IO口在本章第一节有详细介绍,而外部中断在第二章也有详细的阐述。

这里我们将介绍如何将这两者结合起来,实现外部中断输入。

进一步掌握串口编程,进一步学习外部中断编程,提高编程能力。

初始化IO口的输入,开启复用时钟,设置IO与中断的映射关系,从而开启与IO口相对应的线上中断事件,设置触发条件。

配置中断分组(NVIC),并使能中断,编写中断服务函数。

1.编写中断服务程序代码

2.使用ISP下载到实验板

3.测试运行结果

4.记录实验过程,撰写实验报告

打开串口助手。

首先需要将IO设置为中断输入口:

1)初始化IO口为输入。

2)开启IO口复用时钟,设置IO口与中断线的映射关系。

3)开启与该IO口相对的线上中断/事件,设置触发条件。

4)配置中断分组(NVIC),并使能中断。

5)编写中断服务函数。

这一节,使用的是中断来检测按键,通过WK_UP按键实现按一次LED0和LED1同时翻转,按KEY0翻转LED0,按KEY1翻转LED1。

试验中外部中断函数不能进入的原因分析 

1)GPIO或者AFIO的时钟没有开启。

2)GPIO和配置的中断线路不匹配。

3)中断触发方式和实际不相符合。

4)中断处理函数用库函数时,写错,经常可能出现数字和字母之间没有下划线。

5)外部中断是沿触发,有可能不能检测到沿,比如 

中断线是低电平(浮空输入),触发是下降沿触发,可能会出现一直是低电平,高电平的时候是一样的情况,电平持续为高电平。

6)没有用软件中断来触发外部中断,调用函数EXTI_GenerateSWInterrupt;

,因为软件中断先于边沿中断处理。

实验五独立看门狗实验

一.实验简介

独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。

窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。

通过编程,编写一个独立看门狗驱动程序

启动STM32的独立看门狗,从而使能看门狗,在程序里面必须间隔一定时间喂狗,否则将导致程序复位。

利用这一点,我们本章将通过一个LED灯来指示程序是否重启,来验证STM32的独立看门狗。

1.参考教材独立看门狗部分,编写独立看门狗驱动程序。

建立和配置工程

2.编写代码

3.使用ISP下载到实验板

在配置看门狗后,看到LED0不停的闪烁,如果WK_UP按键按下,就喂狗,只要WK_UP不停的按,看门狗就一直不会产生复位,保持LED0的常亮,一旦超过看门狗定溢出时间(Tout)还没按,那么将会导致程序重启,这将导致LED0熄灭一次。

通过本次实验,我掌握了启动独立看门狗的步骤:

1)向IWDG_KR写入0X5555。

2)向IWDG_KR写入0XAAAA。

3)向IWDG_KR写入0XCCCC。

通过上面3个步骤,启动STM32的看门狗,从而使能看门狗,在程序里面就必须间隔一定时间喂狗,否则将导致程序复位。

利用这一点,本章通过一个LED灯来指示程序是否重启,来验证STM32的独立看门狗。

在配置看门狗后,LED0将常亮,如果WK_UP按键按下,就喂狗,只要WK_UP不停的按,看门狗就一直不会产生复位,保持LED0的常亮,一旦超过看门狗溢出时间(Tout)还没按,那么将会导致程序重启,这将导致LED0熄灭一次。

实验七定时器中断实验

STM32的定时器是一个通过可编程预分频器(PSC)驱动的16位自动装载计数器(CNT)构成。

STM32的通用定时器可以被用于:

测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和PWM)等。

使用定时器预分频器和RCC时钟控制器预分频器,脉冲长度和波形周期可以在几微秒到几毫秒间调整。

STM32的每个通用定时器都是完全独立的,没有互相共享的任何资源。

熟练掌握定时器中断,学会对定时器中断的编程操作。

使用定时器产生中断,然后在中断服务函数里面翻转LED1上的电平,来指示定时器中断的产生,修改中断时间。

1.参考教材定时器中断部分,编写定时器中断的驱动程序。

2.编写主程序

3.编译代码,使用JLINK或ISP下载到实验板

通过本次实验,认识到时间中断来控制LED灯的闪烁,同时也可以将时间中断应用到控制其他的程序块。

以TIME3为例产生中断的步骤为

1)TIM3时钟使能。

2)设置TIM3_ARR和TIM3_PSC的值。

3)设置TIM3_DIER允许更新中断。

4)允许TIM3工作。

5)TIM3中断分组设置。

6)编写中断服务函数。

在中断产生后,通过状态寄存器的值来判断此次产生的中断属于什么类型。

然后执行相关的操作,我们这里使用的是更新(溢出)中断,所以在状态寄存器SR的最低位。

在处理完中断之后应该向TIM3_SR的最低位写0,来清除该中断标志。

实验十三ADC实验

通过DAC将STM32系统的数字量转换为模拟量。

使用ADC将模拟量转换为数字量。

掌握DAC和ADC编程。

编写代码实现简单的DAC单次发送

编写代码实现ADC采集DAC发送的数据,并发送到串口

1编写主程序

2编译代码,使用JLINK或ISP下载到实验板,使用串口调试助手观察数据

3记录实验过程,撰写实验报告

本节将利用STM32的ADC1通道0来采样外部电压值,并在串口调试助手中显示出来。

步骤如下:

1)开启PA口时钟,设置PA0为模拟输入。

2)使能ADC1时钟,并设置分频因子。

3)设置ADC1的工作模式。

4)设置ADC1规则序列的相关信息。

5)开启AD转换器,并校准。

6)读取ADC值。

在上面的校准完成之后,ADC就算准备好了。

接下来我们要做的就是设置规则序列0里面的通道,然后启动ADC转换。

在转换结束后,读取ADC1_DR里面的值。

通过以上几个步骤的设置,可以正常的使用STM32的ADC1来执行AD转换操作。

通过本次实验的学习,我们了解了STM32ADC的使用,但这仅仅是STM32强大的ADC功能的一小点应用。

STM32的ADC在很多地方都可以用到,其ADC的DMA功能是很不错的,

实验十五DMA实验

直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。

无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。

熟练掌握DMA编程,学会对EPC02的读写操作,学习双缓冲兵乓操作,理解互斥资源。

提高编程能力。

利用外部按键KEY0来控制DMA的传送,每按一次KEY0,DMA就传送一次数据

到USART1,然后在串口调试助手观察进度等信息。

LED0还是用来做为程序运行的指示灯。

这里我们使用到的硬件资源如下:

1)按键KEY0。

2)指示灯LED0。

3)使用串口调试助手观察数据

PC机WINDOWS系统、MDKKEIL软件、ISP软件、网络调试助手。

伴随LED0的不停闪烁,提示程序在运行。

我们打开串口调试助手,然后按KEY0,可以看到串口显示如下内容:

本节利用STM32的DMA来实现串口数据传送,DMA通道的配置需要:

1)设置外设地址。

2)设置存储器地址。

3)设置传输数据量。

4)设置通道4的配置信息。

5)使能DMA1通道4,启动传输。

通过以上5步设置,我们就可以启动一次USART1的DMA传输了。

DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。

当CPU执行完当前总线周期即可释放总线控制权。

此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。

DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。

在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过中不需要中央处理器的参与。

开始时需提供要传送的数据的起始位置和数据长度。

当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。

当I/O接口收到结束信号后,一方面停 

止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。

最后,带着本次操作结果及状态继续执行原来的程序。

由此可见,DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU的效率大为提高。

实验十六I2C实验

编程实现对使用I2C接口的EPC02芯片进行写和读操作。

熟练掌握I2C编程,学会对EPC02的读写操作。

编写I2C驱动程序,使用驱动程序初始化EPC02,判断设备正确性。

写256个0x5A到EPC02,读出并发送给串口,通过串口调试助手判别是否读到的都是0x5A.

1参考教材I2C部分,编写I2C驱动程序。

2编写主程序

我们先按下KEY0,可以看到如下所示的内容,证明数据已经被写入到24C02了。

接着我们按KEY2,可以看我们刚刚写入的数据被显示出来了,如下图所示:

IIC是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。

在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps以上。

IIC总线在传送数据过程中共有三种类型信号,它们分别是:

开始信号、结束信号和应答信号。

这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。

程序在开机的时候会检测24C02是否存在,如果不存在则会在TFTLCD模块上显示错误信息,同时LED0慢闪。

大家可以通过跳线帽把PC11和PC12短接就可以看到报错了。

通过本次实验,我掌握了如何使用IIC写入与读出数据,学习了编写I2C驱动程序,使用驱动程序初始化EPC02,判断设备正确性,以及如何在助手上显示。

实验十七SPI实验

编程实现对SPI接口的W25Q64进行读写操作。

熟练掌握SPI编程,学会对的W25Q64读写操作。

1.编写SPI驱动程序

2.初始化SPI接口

3.读取SPIFLASH的ID,如果正确继续,否则报错

4.向SPIFALSH地址0x12AB00开始写一串字符,再读出比较判断是否与写入的一致

5.向SPIFALSH地址0x12AB00开始写连续256个字节的0x5A,然后读出并发送给串口,通过串口调试助手判别是否读到的都是0x5A.

1参考SPI及SPIFLASH部分,编写SPI及SPIFLASH驱动程序(可参考书上代码)。

我们先按下KEY0,可以看到如图所示的内容,证明数据已经被写入到W25X16了。

SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,STM32也有SPI接口。

SPI的设置步骤:

1)配置相关引脚的复用功能,使能SPI时钟。

2)设置SPI工作模式。

3)使能SPI。

程序在开机的时候会检测W25X16是否存在,如果不存在则会在TFTLCD模块上显示错误信息,同时LED0慢闪。

大家可以通过跳线帽把PA5和PA6短接就可以看到报错了。

通过本实验,我掌握了编写SPI程序写入和读取FLASH的方法,掌握了对学会对的W25Q64读写操作。

对STM32开发板有了进一步的了解。

实验二十一红外遥控实验

编程实现通过在ALIENTEKMiniSTM32开发板上实现红外遥控器的控制。

掌握编程实现红外遥控控制开发板的方法。

1.编写红外遥控驱动程序

2.编写红外遥控程序代码

3.使用红外遥控控制开发板

4.编写红外遥控驱动程序

5.编写红外遥控程序代码

6.编译代码,使用JLINK或ISP下载到实验板

7.记录实验过程,撰写实验报告

使用串口调试助手观察数据

红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。

通过本节实验,我学习到了如何编程使用红外遥控控制,在本程序中只是简单地输出一个数值,在以后的应用中可以实现更强大的功能,比如用红外远程输入控制开发板进行一些操作。

对STM32有了进一步的认识。

实验二十二DS18B20实验

一.在ALIENTEKMiniSTM32开发板上,通过DS18B20来读取环境温度值。

巩固SPI编程。

掌握使用感应器获取环境温度的方法。

1.复位脉冲和应答脉冲

2.写时序

3.读时序

1.参考教材DS18B20编程部分,编写DS18B20驱动程序

使用串口调试助手观察数据:

DS18B20是由DALLAS半导体公司推出的一种的“一线总线”接口的温度传感器。

与传统的热敏电阻等测温元件相比,它是一种新型的体积小、适用电压宽、与微处理器接口简单的数字化温度传感器。

通过本次实验,我认识到STM32的强大,在开发板上可以添加其他感应器从而实现更强大的功能。

添加了DS18B20后的开发板可以感应外界的温度,通过公式计算显示出来。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1