实验报告课程名称:嵌入式系统学院:信息工程专业:电子信息工程班级:学生姓名:学号:指导教师:开课时间:学年第一学期1实验名称:IO接口(跑马灯)实验时间:11.16实验成绩:一、实验目的1.掌握STM32F4基本IO口的使用。2.使用STM32F4IO口的推挽输出功能,利用GPIO_Set函数来设置完成对IO口的配置。3.控制STM32F4的IO口输出,实现控制ALIENTEK探索者STM32F4开发板上的两个LED实现一个类似跑马灯的效果。二、实验原理本次实验的关键在于如何控制STM32F4的IO口输出。IO主要由: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文件夹,用来存储以后与硬件相关的代码。然后在HARDWARE文件夹下新建一个LED文件夹,用来存放与LED相关的代码。(2)打开USER文件夹下的test.uvproj工程,新建一个文件,然后保存在LED文件夹下面,保存为led.c,在led.c中输入相应的代码。2(3)采用GPIO_Set函数实现IO配置。LED_Init调用GPIO_Set函数完成对PF9和PF10ALIENTEK探索者STM32F407开发板教程119STM32F4开发指南(寄存器版)的模式配置,控制LED0和LED1输出1(LED灭),使两个LED的初始化。(4)新建一个led.h文件,保存在LED文件夹下,在led.h中输入相应的代码。3.下载验证使用flymcu下载(也可以通过JLINK等仿真器下载),如图1.2所示:图1.2运行结果如图1.3所示:3图1.3五、实验源程序相关代码如下所示:(1)led.c文件#includeled.hvoidLED_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关闭LED1=1;//LED1关闭}(2)led.h文件#ifndef__LED_H#define__LED_H#includesys.h//LED端口定义#defineLED0PFout(9)//DS0#defineLED1PFout(10)//DS1voidLED_Init(void);//初始化#endif(3)main函数#includesys.h#includedelay.h#includeled.h4intmain(void){Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhzdelay_init(168);//初始化延时函数LED_Init();//初始化LED时钟while(1){LED0=0;//DS0亮LED1=1;//DS1灭delay_ms(500);LED0=1;//DS0灭LED1=0;//DS1亮delay_ms(500);}}六、实验总结本次实验过程中,由于第一次实验,对实验器件,还有实验过程都不大了解,使得做实验过程中遇到很大的问题。也花费了不少时间,不过在慢慢的摸索中,以及老师的指导和同学的帮助下,最终也了解了探索者STM32F4开发板的外部结构,以及各个引脚的作用,还有各个串口和并口的具体使用,还观察了跑马灯的运行状态,以及它的运行程序。七、预习思考题八、注意事项(1)新建文件夹时,区分不同的文件夹之间的关系。(2)编写代码时,注意格式和符号,在英文环境下输入。1实验名称:触摸屏实验时间:11.23实验成绩:一、实验目的1.掌握触摸屏的工作原理。2.通过外接带触摸屏的LCD模块,来实现触摸屏控制。3.通过对电阻触摸和电容触摸的学习,实现触摸屏驱动,最终实现一个手写板的功能。二、实验原理电阻式触摸屏原理:当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,控制器检测到这个接通点并计算出X、Y轴的位置。特点:精度高、价格便宜、抗干扰能力强、稳定性好;易被划伤、透光性差、不支持多点触摸。电容式触摸屏原理:利用人体的电流感应进行工作。当手指触摸金属层时,由于人体电场,用户和触摸屏表面形成一个耦合电容。对于高频电流来说电容是直接导体,于是手指从接触点吸走一个很小的电流。这个电流分别从触摸屏的4个角的电极流出,并且流经4个电极的电流与手指到4角的距离成正比。控制器通过对电流比例的计算,得到触摸点的位置。特点:手感好、无需校正、透光性好、支持多点触摸;成本高、精度不高、抗干扰力差。三、实验资源实验器材:探索者STM32F4开发板硬件资源:1、DS0(连接在PF9)2、串口1(波特率:115200,PA9/PA10连接在板载USB转串口芯片CH340上面)3、ALIENTEK2.8/3.5/4.3/7寸TFTLCD模块(通过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文件夹。然后新建一个touch.c、touch.h、ctiic.c等十个文件,并保存在TOUCH文件夹下,并将这个文件夹加入头文件包含路径。其中,touch.c和touch.h是电阻触摸屏部分的代码,顺带兼电容触摸屏的管理控制,其他则是电容触摸屏部分的代码。3.下载验证使用flymcu下载(也可以通过JLINK等仿真器下载),如图2.2所示:图2.2运行结果如图2.3所示:3图2.3五、实验源程序(1)main函数intmain(void){Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhzdelay_init(168);//延时初始化uart_init(84,115200);//初始化串口波特率为115200LED_Init();//初始化LEDLCD_Init();//LCD初始化KEY_Init();//按键初始化tp_dev.init();//触摸屏初始化POINT_COLOR=RED;//设置字体为红色LCD_ShowString(30,50,200,16,16,ExplorerSTM32F4);LCD_ShowString(30,70,200,16,16,TOUCHTEST);LCD_ShowString(30,90,200,16,16,ATOM@ALIENTEK);LCD_ShowString(30,110,200,16,16,2014/5/7);if(tp_dev.touchtype!=0XFF)LCD_ShowString(30,130,200,16,16,PressKEY0to4Adjust);delay_ms(1500);Load_Drow_Dialog();if(tp_dev.touchtype&0X80)ctp_test();//电容屏测试elsertp_test();//电阻屏测试}(2)//电阻触摸屏测试函数voidrtp_test(void){u8key;u8i=0;while(1){key=KEY_Scan(0);tp_dev.scan(0);if(tp_dev.sta&TP_PRES_DOWN)//触摸屏被按下{if(tp_dev.x[0]lcddev.width&&tp_dev.y[0]lcddev.height){if(tp_dev.x[0](lcddev.width-24)&&tp_dev.y[0]16)Load_Drow_Dialog();elseTP_Draw_Big_Point(tp_dev.x[0],tp_dev.y[0],RED);//画图}}elsedelay_ms(10);//没有按键按下的时候if(key==KEY0_PRES)//KEY0按下,则执行校准程序{LCD_Clear(WHITE);//清屏TP_Adjust();//屏幕校准TP_Save_Adjdata();Load_Drow_Dialog();}i++;if(i%20==0)LED0=!LED0;}}(3)//电容触摸屏测试函数voidctp_test(void){u8t=0;u8i=0;u16lastpos[5][2];//最后一次的数据while(1){tp_dev.scan(0);for(t=0;t5;t++)5{if((tp_dev.sta)&(1t)){if(tp_dev.x[t]lcddev.width&&tp_dev.y[t]lcddev.height){if(lastpos[t][0]==0XFFFF){lastpos[t][0]=tp_dev.x[t];lastpos[t][1]=tp_dev.y[t];}lcd_draw_bline(lastpos[t][0],lastpos[t][1],tp_dev.x[t],tp_dev.y[t],2,POINT_COLOR_TBL[t]);//画线lastpos[t][0]=tp_dev.x[t];lastpos[t][1]=tp_dev.y[t];if(tp_dev.x[t](lcddev.width-24)&&tp_dev.y[t]20){Load_Drow_Dialog();//清除}}}elselastpos[t][0]=0XFFFF;}delay_ms(5);i++;if(i%20==0)LED0=!LED0;}}六、实验总结基本达到实验的要求,了解触摸屏基本概念与原理,以及通过编程实现对触摸屏的控制,以及知道如何验证实验结果是否属于预期目标,并了解实验原理,为今后嵌入式的学习打下一定的学习基础。七、预习思考题八、注意事项(1)新建文件夹时,区分不同的文件夹之间的关系。(2)编写代码时,注意格式和符号,在英文环境下输入。1实验名称:串口通信实验时间:11.30实验成绩:一、实验目的1.了解STM32F4串口。2.掌握如何使用STM32F4的串口来发送和接收数据。3.学会如何初始化串口。4.掌握串口编程与调试方法。二、实验原理串行通信需要将传输的数据分解成二进制位,然后采用一条信号线将多个二进制数据位按一定的时间和顺序,逐位由信息发送端传到信息的接收端。根据数据的传输方向和发送接收是否能同时进行,数据传输的工作方式分为单工方式,半双工方式和全双工方式。单工通信是指信息只能单方向传输的工作方式,发送端和接收端的方向是固定的。半双工通信方式可以实现双向的通信,不能在两个方向上同时进行工作,但可以轮流交替地进行通信,即通信信道的任意端,既可以是发送端也可以是接收端。全双工通信方式是指在通信的任意时刻,允许数据同时在两个方向上传输,即通信双方可以同时发送和接收数据。三、实验资源实验器材:探索者STM32F4开发板硬件资源:a.DS0(连接在PF9)b.串口1(波特率:115200,PA9/PA10连接在板载USB转串口芯片CH340上面)2四、实验内容及步骤1.硬件设计所需硬件资源:1)指示灯DS02)串口1图3.1硬件连接图示意图2.软件设计(1)打开上一章的TSET工程,因为本章我们用不到按键和蜂鸣