嵌入式系统实验报告.pdf

上传人:深夜****等你... 文档编号:75955153 上传时间:2023-03-06 格式:PDF 页数:25 大小:2.49MB
返回 下载 相关 举报
嵌入式系统实验报告.pdf_第1页
第1页 / 共25页
嵌入式系统实验报告.pdf_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《嵌入式系统实验报告.pdf》由会员分享,可在线阅读,更多相关《嵌入式系统实验报告.pdf(25页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、文档 实验报告 课程名称:嵌入式系统 学 院:信息工程 专 业:电子信息工程 班 级:学生姓名:学 号:指导教师:开课时间:学年 第一 学期 1 实验名称:IO 接口(跑马灯)实验时间:11.16 实验成绩:一、实验目的 1.掌握 STM32F4 基本 IO 口的使用。2.使用 STM32F4 IO 口的推挽输出功能,利用 GPIO_Set函数来设置完成对 IO 口的配置。3.控制 STM32F4 的 IO 口输出,实现控制 ALIENTEK 探索者 STM32F4 开发板上的两个 LED 实现一个类似跑马灯的效果。二、实验原理 本次实验的关键在于如何控制STM32F4的 IO 口输出。IO

2、主要由:MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR、AFRH 和 AFRL 等 8 个寄存器的控制,并且本次实验主要用到 IO 口的推挽输出功能,利用 GPIO_Set 函数来设置,即可完成对 IO 口的配置。所以可以通过了开发板上的两个 LED 灯来实现一个类似跑马灯的效果。三、实验资源 实验器材:探索者 STM32F4开发板 硬件资源:1.DS0(连接在 PF9)2.DS1(连接在 PF10)四、实验内容及步骤 1.硬件设计 2.软件设计(1)新建 TEST 工程,在该工程文件夹下面新建一个 HARDWARE 文件夹,用来存储以后与硬件相关的代码。然后在 HARD

3、WARE 文件夹下新建一个 LED 文件夹,用来存放与 LED 相关的代码。(2)打开 USER 文件夹下的 test.uvproj 工程,新建一个文件,然后保存在 LED 文件夹下面,保存为 led.c,在 led.c 中输入相应的代码。2(3)采用 GPIO_Set 函数实现 IO 配置。LED_Init 调用 GPIO_Set 函数完成对 PF9 和 PF10 ALIENTEK 探索者 STM32F407 开发板教程 119 STM32F4 开发指南(寄存器版)的模式配置,控制 LED0 和 LED1 输出 1(LED 灭),使两个 LED 的初始化。(4)新建一个 led.h 文件,保

4、存在 LED 文件夹下,在 led.h 中输入相应的代码。3.下载验证 使用 flymcu 下载(也可以通过 JLINK 等仿真器下载),如图 1.2 所示:图 1.2 运行结果如图 1.3 所示:3 图 1.3 五、实验源程序 相关代码如下所示:(1)led.c 文件#include led.h void LED_Init(void)RCC-AHB1ENR|=15;/GPIO_Set(GPIOF,PIN9|PIN10,GPIO_MODE_OUT,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);/PF9,PF10 设置 LED0=1;/LED0 关闭 L

5、ED1=1;/LED1 关闭 (2)led.h 文件#ifndef _LED_H#define _LED_H#include sys.h /LED 端口定义#define LED0 PFout(9)/DS0#define LED1 PFout(10)/DS1 void LED_Init(void);/初始化#endif(3)main 函数#include sys.h#include delay.h#include led.h 4 int main(void)Stm32_Clock_Init(336,8,2,7);/设置时钟,168Mhz delay_init(168);/初始化延时函数 LED

6、_Init();/初始化 LED 时钟 while(1)LED0=0;/DS0 亮 LED1=1;/DS1 灭 delay_ms(500);LED0=1;/DS0 灭 LED1=0;/DS1 亮 delay_ms(500);六、实验总结 本次实验过程中,由于第一次实验,对实验器件,还有实验过程都不大了解,使得做实验过程中遇到很大的问题。也花费了不少时间,不过在慢慢的摸索中,以及老师的指导和同学的帮助下,最终也了解了探索者 STM32F4 开发板的外部结构,以及各个引脚的作用,还有各个串口和并口的具体使用,还观察了跑马灯的运行状态,以及它的运行程序。七、预习思考题 八、注意事项(1)新建文件夹时

7、,区分不同的文件夹之间的关系。(2)编写代码时,注意格式和符号,在英文环境下输入。1 实验名称:触摸屏 实验时间:11.23 实验成绩:一、实验目的 1.掌握触摸屏的工作原理。2.通过外接带触摸屏的LCD 模块,来实现触摸屏控制。3.通过对电阻触摸和电容触摸的学习,实现触摸屏驱动,最终实现一个手写板的功能。二、实验原理 电阻式触摸屏原理:当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,控制器检测到这个接通点并计算出X、Y 轴的位置。特点:精度高、价格便宜、抗干扰能力强、稳定性好;易被划伤、透光性差、不支持多点触摸。电容式触摸屏原理:利用人体的电流感应进行工作。当手指触摸金属层时,由于人体电

8、场,用户和触摸屏表面形成一个耦合电容。对于高频电流来说电容是直接导体,于是手指从接触点吸走一个很小的电流。这个电流分别从触摸屏的 4 个角的电极流出,并且流经 4 个电极的电流与手指到 4 角的距离成正比。控制器通过对电流比例的计算,得到触摸点的位置。特点:手感好、无需校正、透光性好、支持多点触摸;成本高、精度不高、抗干扰力差。三、实验资源 实验器材:探索者 STM32F4开发板 硬件资源:1、DS0(连接在 PF9)2、串口 1(波特率:115200,PA9/PA10连接在板载USB 转串口芯片CH340 上面)3、ALIENTEK 2.8/3.5/4.3/7 寸 TFTLCD 模块(通过

9、FSMC 驱动,FSMC_NE4 接 LCD 片选/A6 接 RS)4、按键 KEY0(PE4)四、实验内容及步骤 1.硬件设计 2 图 2.1 触摸屏与 STM32F4 连接原理图 2.软件设计(1)打开上一章的工程,由于本次实验不要用到USMART 和 CAN 相关代码,所以,先去掉USMART相关代码和can.c(此时HARDWARE组剩下:led.c、ILI93xx.c和key.c)。不过,本次实验要用到 24C02,所以要添加 myiic.c 和 24cxx.c 到 HARDWARE 组下。(2)然后,在 HARDWARE 文件夹下新建一个 TOUCH 文件夹。然后新建一个 touc

10、h.c、touch.h、ctiic.c 等十个文件,并保存在 TOUCH 文件夹下,并将这个文件夹加入头文件包含路径。其中,touch.c 和 touch.h 是电阻触摸屏部分的代码,顺带兼电容触 摸屏的管理控制,其他则是电容触摸屏部分的代码。3.下载验证 使用 flymcu 下载(也可以通过 JLINK 等仿真器下载),如图 2.2 所示:图 2.2 运行结果如图 2.3 所示:3 图 2.3 五、实验源程序(1)main函数 int main(void)Stm32_Clock_Init(336,8,2,7);/设置时钟,168Mhz delay_init(168);/延时初始化 uart_

11、init(84,115200);/初始化串口波特率为115200 LED_Init();/初始化 LED LCD_Init();/LCD 初始化 KEY_Init();/按键初始化 tp_dev.init();/触摸屏初始化 POINT_COLOR=RED;/设置字体为红色 LCD_ShowString(30,50,200,16,16,Explorer STM32F4);LCD_ShowString(30,70,200,16,16,TOUCH TEST);LCD_ShowString(30,90,200,16,16,ATOMALIENTEK);LCD_ShowString(30,110,200

12、,16,16,2014/5/7);if(tp_dev.touchtype!=0XFF)LCD_ShowString(30,130,200,16,16,PressKEY0to 4 Adjust);delay_ms(1500);Load_Drow_Dialog();if(tp_dev.touchtype&0X80)ctp_test();/电容屏测试 else rtp_test();/电阻屏测试 (2)/电阻触摸屏测试函数 void rtp_test(void)u8 key;u8 i=0;while(1)key=KEY_Scan(0);tp_dev.scan(0);if(tp_dev.sta&TP_

13、PRES_DOWN)/触摸屏被按下 if(tp_dev.x0lcddev.width&tp_dev.y0(lcddev.width-24)&tp_dev.y016)Load_Drow_Dialog();else TP_Draw_Big_Point(tp_dev.x0,tp_dev.y0,RED);/画图 else delay_ms(10);/没有按键按下的时候 if(key=KEY0_PRES)/KEY0 按下,则执行校准程序 LCD_Clear(WHITE);/清屏 TP_Adjust();/屏幕校准 TP_Save_Adjdata();Load_Drow_Dialog();i+;if(i%

14、20=0)LED0=!LED0;(3)/电容触摸屏测试函数 void ctp_test(void)u8 t=0;u8 i=0;u16 lastpos52;/最后一次的数据 while(1)tp_dev.scan(0);for(t=0;t5;t+)5 if(tp_dev.sta)&(1t)if(tp_dev.xtlcddev.width&tp_dev.yt(lcddev.width-24)&tp_dev.yt20)Load_Drow_Dialog();/清除 else lastpost0=0XFFFF;delay_ms(5);i+;if(i%20=0)LED0=!LED0;六、实验总结 基本达到

15、实验的要求,了解触摸屏基本概念与原理,以及通过编程实现对触摸屏的控制,以及知道如何验证实验结果是否属于预期目标,并了解实验原理,为今后嵌入式的学习打下一定的学习基础。七、预习思考题 八、注意事项(1)新建文件夹时,区分不同的文件夹之间的关系。(2)编写代码时,注意格式和符号,在英文环境下输入。1 实验名称:串口通信 实验时间:11.30 实验成绩:一、实验目的 1.了解 STM32F4串口。2.掌握如何使用STM32F4的串口来发送和接收数据。3.学会如何初始化串口。4.掌握串口编程与调试方法。二、实验原理 串行通信需要将传输的数据分解成二进制位,然后采用一条信号线将多个二进制数据位按一定的时

16、间和顺序,逐位由信息发送端传到信息的接收端。根据数据的传输方向和发送接收是否能同时进行,数据传输的工作方式分为单工方式,半双工方式和全双工方式。单工通信是指信息只能单方向传输的工作方式,发送端和接收端的方向是固定的。半双工通信方式可以实现双向的通信,不能在两个方向上同时进行工作,但可以轮流交替地进行通信,即通信信道的任意端,既可以是发送端也可以是接收端。全双工通信方式是指在通信的任意时刻,允许数据同时在两个方向上传输,即通信双方可以同时发送和接收数据。三、实验资源 实验器材:探索者 STM32F4开发板 硬件资源:a.DS0(连接在 PF9)b.串口 1(波特率:115200,PA9/PA10

17、连接在板载 USB 转串口芯片 CH340 上面)2 四、实验内容及步骤 1.硬件设计 所需硬件资源:1)指示灯 DS0 2)串口 1 图 3.1 硬件连接图示意图 2.软件设计(1)打开上一章的 TSET 工程,因为本章我们用不到按键和蜂鸣器等功能,所以把key.c 和 beep.c 从 HARDWARE工程组里面删除,从减少工程代码量,仅留下必须的.c文件,节省空间,加快编译速度。(2)然后在 SYSTEM 组下双击 usart.c,就可以看到文件里的代码。3.下载验证 使用 flymcu 下载(也可以通过 JLINK 等仿真器下载),如图 3.2 所示:图 3.2 运行结果如图 3.3

18、所示:图 3.3 五、实验源程序(1)uart_init 函数/初始化 IO 串口 1 /pclk2:PCLK2 时钟频率(Mhz)/bound:波特率 3 void uart_init(u32 pclk2,u32 bound)float temp;u16 mantissa;u16 fraction;temp=(float)(pclk2*1000000)/(bound*16);/得到 USARTDIVOVER8=0 mantissa=temp;/得到整数部分 fraction=(temp-mantissa)*16;/得到小数部分OVER8=0 mantissaAHB1ENR|=1APB2ENR

19、|=1BRR=mantissa;/波特率设置 USART1-CR1&=(1CR1|=1CR1|=1CR1|=1CR1|=113;/串口使能 (2)test.c 函数#include sys.h#include delay.h#include usart.h#include led.h int main(void)u8 t;u8 len;u16 times=0;Stm32_Clock_Init(336,8,2,7);/设置时钟,168Mhz delay_init(168);/延时初始化 uart_init(84,115200);/串口初始化为 115200 LED_Init();/初始化与 LE

20、D 连接的硬件接口 while(1)4 if(USART_RX_STA&0 x8000)len=USART_RX_STA&0 x3fff;/得到此次接收到的数据长度 printf(rn 您发送的消息为:rn);for(t=0;tDR=USART_RX_BUFt;while(USART1-SR&0X40)=0);/等待发送结束 printf(rnrn);/插入换行 USART_RX_STA=0;else times+;if(times%5000=0)printf(rnALIENTEK 探索者 STM32F407 开发板 串口实验rn);printf(正点原子ALIENTEKrnrnrn);if(

21、times%200=0)printf(请输入数据,以回车键结束rn);if(times%30=0)LED0=!LED0;/闪烁 LED,提示系统正在运行.delay_ms(10);六、实验总结 在程序设计方面,对串口通信的过程有了更深刻的理解和领会。通过本次实验,使我对 ARM嵌入式开发有了一定的掌握和理解,巩固了我在课程中所学的基本理论知识和实验技能,使我对嵌入式系统课程有了更深入的了解,熟悉了串口的使用,了解了内部功能模块及内核架构。七、预习思考题 八、注意事项(1)新建文件夹时,区分不同的文件夹之间的关系。(2)编写代码时,注意格式和符号,在英文环境下输入。5 1 实验名称:RTC 实时

22、时钟 实验时间:12.7 实验成绩:一、实验目的 1.学会使用 TFTLCD 模块来显示日期和时间,实现一个简单的实时时钟,并可以设置闹钟 2.了解和掌握 STM32F4的 RTC 的工作原理 二、实验原理 STM32F4的 RTC时钟的使用:1)时钟和分频;2)日历时间(RTC_TR)和日期(RTC_DR)寄存器;3)可编程闹钟;4)周期性自动唤醒 RTC 正常工作的一般配置步骤如下:1)使能电源时钟,并使能 RTC 及 RTC 后备寄存器写访问;2)开启外部低能振荡器,选择 RTC 时钟,并使能;3)取消 RTC 写保护;4)进入 RTC 初始化模式;5)设置 RTC 的分频,以及配置 R

23、TC 参数 通过以上的 5 个步骤,我们就完成了对 RTC 的配置,RTC 即可正常工作,而且这些操作不是每次上电都必须执行的,可以视情况而定。三、实验资源 实验器材:探索者 STM32F4 开发板 四、实验内容及步骤 硬件资源:1、DS0(连接在 PF9),DS1(连接在 PF10)2、串口 1(波特率:115200,PA9/PA10 连接在板载 USB 转串口芯片 CH340 上)3、ALIENTEK 2.8/3.5/4.3/7 寸 TFTLCD 模块(通过 FSMC 驱动,FSMC_NE4 接 LCD 片选/A6 接RS)2 1.硬件设计 RTC 属于 STM32F4 内部资源,期配置也

24、是通过软件设置好就可以了。不过 RTC 不能断电,否则数据就丢失了,我们如果想让时间在断电后还可以继续走,那么必须确保开发板的电池有电。2.软件设计 打开上一章的工程,首先在 HARDWARE 文件夹下新建一个 RTC 的文件夹。然后打开 USER文件夹下的工程,新建一个 rtc.c 的文件和 rtc.h 的头文件,保存在 RTC 文件夹下,并将 RTC 文件夹加入头文件包含路径。rtc.c 中的代码中的 RTC_Init 函数用来初始化 RTC 时钟,在这里设置时间和日期,分别是通过 RTC_Set_Time 和 RTC_Set_Data 函数来实现的,其中 RTC_Set_Time 用于设

25、置时间,RTC_Set_Data 用于设置日期。Test.c 中通过 RTC_Sst_WakeUp(4,0);设置 RTC 周期型自动唤醒周期为 1 秒钟,类似于 STM32F1 的秒钟中断。然后,在 main 函数不断的读取 RTC 的时间和日期(每 100ms一次),并显示在 LED 上面。将 RTC 的一些相关函数加入了 usmart,这样通过串口就可以直接设置 RTC 时间、日期、闹钟 A、周期性唤醒和备份寄存器读写等操作。3.下载验证 使用 flymcu 下载(也可以通过 JLINK 等仿真器下载),如图 4.2 所示:运行结果如图 4.3 所示:图 4.2 3 图 4.3 五、实验

26、源程序 1.RTC_Init/RTC 初始化 /返回值:0,初始化成功;/1,LSE 开启失败;/2,进入初始化模式失败;u8 RTC_Init(void)4 u16 retry=0X1FFF;RCC-APB1ENR|=1CR|=1BDCR|=1BDCR&0X02)=0)/等待 LSE 准备好 retry-;delay_ms(5);if(retry=0)return 1;/LSE 开启失败.RCC-BDCR|=1BDCR|=1WPR=0 xCA;RTC-WPR=0 x53;if(RTC_Init_Mode()return 2;/进入 RTC 初始化模式 RTC-PRER=0XFF;/RTC 同

27、步分频系数(07FFF),必须先设置同步分频,/再设置异步分频,Frtc=Fclks/(Sprec+1)*(Asprec+1)RTC-PRER|=0X7F16;/RTC 异步分频系数(10X7F)RTC-CR&=(116);/RTC 设置为,24 小时格式 RTC-ISR&=(1=2 */#define OS_SCHED_LOCK_EN 1u /*Include code for OSSchedLock()and OSSchedUnlock()*/#define OS_TICK_STEP_EN 1u /*Enable tick stepping feature for uC/OS-View *

28、/#define OS_TICKS_PER_SEC 200u /*Set the number of ticks in one second */2)led.c#include led.h /初始化 PF9 和 PF10 为输出口.并使能这两个口的时钟 /LED IO 初始化 void LED_Init(void)RCC-AHB1ENR|=15;/使能 PORTF 时钟 GPIO_Set(GPIOF,PIN9|PIN10,GPIO_MODE_OUT,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);/PF9,PF10 设置 LED0=1;/LED0 关闭

29、LED1=1;/LED1 关闭 5 六、实验总结 在了解了基础知识之后,我开始进行上机操作,当然,其中遇到很多的难题,很多东西都是第一次接触,又没有别人在旁边指导操作,完全凭借自己去摸索练习。其中的困难可想而知。然而坚持就是胜利,牙一咬眼一闭坚持做下去,而通过本次实验,我感觉收获还是蛮多的。可能我对于嵌入式的知识学习的还是不太多,但是这之外的东西收获颇丰。它让我学会了如何通过自己的努力去认知一个新事物,更重要的是端正自己的学习态度,只有真正下功夫去学习,才能有收获,正所谓一份耕耘,一份收获。没有付出,何谈回报呢?再者,通过本次实验,我也学会了如何去分析问题,如何找出自己设计中的不足,继而去排除解决问题,这就是一个自我学习的过程。当我们通过实验去学习理论知识时,自己动手得出的结论,不仅能加深我们对嵌入式的理解,更能加深我们对此的记忆。七、预习思考题 八、注意事项

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com