嵌入式实验报告.docx_第1页
嵌入式实验报告.docx_第2页
嵌入式实验报告.docx_第3页
嵌入式实验报告.docx_第4页
嵌入式实验报告.docx_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实 验 报 告 课程名称 嵌入式系统原理 学生学院 自动化学院 专业班级 物联网1班 学 号 学生姓名 指导教师 2015 年 10 月 24日实验一:跑马灯一、 实验目的:1. 熟悉并掌握ALIENTEK MiniSTM32开发板的使用,2. 熟悉Keil u Vision3的嵌入式编程环境,3. 实现控制这两个灯实现交替闪烁的类跑马灯效果,4. 如何控制 STM32 的 I/O 口输出。二、 实验设备:ALIENTEK MiniSTM32 开发板、PC机、Keil u Vision3开发软件、MCUISP下载器三、 实验内容:1. 硬件设计:首先,根据电路图找到LED0、LED1分别接在PA8、PD2管脚,根据STM32不完全手册,每个IO口有7个寄存器控制,其中我们常用的有四个,分别是CRL、CRH、IDR、ODR。DR寄存器是可读写的寄存器,向对应的位写数据就可以控制IO输出的电平。根据要求,我们需要将两个端口设置从推挽输出模式因此我们只需要将其对应在第8位和第2位写入1,就可以控制输出高电平。2. 软件设计:首先,根据以上硬件设置写一个LED的初始化代码。首先是寻址到PA8和PD2,根据自带的system文件,可以找到宏定义:根据宏定义,我们可以直接使用PAout(n)来找到A输出端口的第n位,因此可以通过这语句来定义LED1和LED0,代码如下:然后写一个LED的初始化程序,程序代码如下:将以上两个部分包括进led.h文件中,作为LED部分的定义与初始化。在主文件中,代码如下:其中头文件除了包含led.h外还包含了系统的头文件以及延迟程序头文件、串口头文件。Mian函数的前两句是对系统延时程序的设置,接着调用写好的LED初始化程序进行设置,最后在大循环中,另LED0和LED1反复亮灭,形成跑马灯效果。四、 实验结果:测试效果如图:红灯和绿灯循环顺序亮灭,附和实验要求,实验成功。实验二:串口实验一、 实验目的:1. STM32 串口的基本使用方法,2. 串口的调试方法二、 实验设备:ALIENTEK MiniSTM32 开发板、PC机、Keil u Vision3开发软件、MCUISP下载器三、 实验内容:1、 硬件设计:根据参考手册解释,使用串口首先需要做一系列的初始化设置。串口时钟使能、波特率的设置和使能接受中断等等。其中涉及到的寄存器有APB2RSTR、USART1_BRR、USART1_CR1。其中对APB2RSTR的第1位设置可以使能串口时钟,对其第14位设置能控制复位,对USART1_BRR设置可以设置波特率,对USART1_CR1设置可以选择串口功能。对于串口输入输出信号是通过数据寄存器USART_DR控制,其中包含了TDR和RDR,就是往其中写数据时,将发送数据;而从中读数据时,就是接受数据。串口状态可以通过状态寄存器USART_SR得知,其中主要用到几个位。第5位RXNE可以判断是否有接收到数据,第6位TC可以知道是否发送完成同时产生中断。串口接受状态寄存器USART_RX_STA是一个8位寄存器,其中最高位是接受完成标志位,第7位是是否接受到0x0d标志位,剩下的位为接收计数。2. 软件设计:首先,需要对串口进行初始化。串口初始化定义在system文件的usart.c中,代码如下:以上代码根据上面讨论,分别对相应寄存器进行赋值,可以设置串口波特率、中断使能等等。1、 串口的中断处理函数,也包含在usart.c文件中,代码如下:可以看出,其中主要用到了USART_SR寄存器和USART_RX_STA寄存器。其中,通过USART_SR中的第5位来判断是否接收到数据,然后定义一个无符号8位变量res来保存USART_DR中接受到的内容。然后通过USART_RX_STA的第8位来判断是否接受完成,如果接受完成,再通过第7位来判断是否接收到回车的信号,如果接收到回车的第一个信号0x0d则说明接受完成,否则则继续接受并且读取缓存区BUF中的数据,同时让记数值增加。2、 主函数中,第一步通过调用系统的函数进行初始化设置:接下来是循环体:在主循环中,首先通过接收状态寄存器读取接收数据的长度,然后将接收入缓存的数据赋值给USART_DR寄存器令其通过串口发送数据,同时清零接收状态寄存器。同时,在等待过程中,间隔固定的时间闪烁LED灯进行提示并且发送提示信息。四、 实验结果:编译烧录程序后,实验板上LED灯闪烁,证明程序正在运行。打开串口调试工具来监听串口的信息,收发信息如图:实验三:外部中断实验一、 实验目的:1. 掌握STM32基本的I/O口控制2. 掌握外部中断控制输入口二、 实验设备:ALIENTEK MiniSTM32 开发板、PC机、Keil u Vision3开发软件、MCUISP下载器三、 实验内容:1. 硬件设计首先,初始化 IO 口为输入。这里仍然是针对某个IO口进行设置,原理跟跑马灯一样,同样用到GPIO的CHL和CHR找到相应的IO口。然后开启 IO 口复用时钟,设置复用时钟,设置 IO 口与中断线的映射关系。这样我们要先开启复用时钟,然后配置IO口与中断线的对应关系。才能把外部中断与中断线连接起来。其次开启与该 IO 口相对的线上中断口相对的线上中断/事件,设置触发条。这里根据自己的实际情况来配置,同时开启中断线上的中断。配置中断分组( NVIC),并使能中断。对STM32的中断来说,只有配置了NVIC的设置,并开启才能被执行,否则是不会执行到中断服务函数里面去的。2. 软件设计首先,对应着电路图,找到3个按键对应的IO口,进行IO口的设置:然后编写扫描函数,读取按键的输入:按键的过程中手按下的时间远大于电路扫描的时间,因此为了避免重复扫描造成的抖动,要设置10MS的延迟,防止抖动发生。这里按键的设置完成。然后编写exti.c文件,设置中断以及中断处理函数。首先是中断的设置:通过调用函数分别设置三个按键的触发方式以及NVIC优先级。然后为按键添加中断处理函数:通过SCAN函数,等待按键的按下,一旦按下按键,通过EXTIX_Init函数,将能通过中断函数调用,来响应。最后在主函数中进入循环等待:四、 实验结果:分别按下KEY0、KEY1和WK_UP,LED灯能够做出动作:KEY0控制DS0,按一次亮,再按一次,就灭。KEY1控制DS1,效果同KEY0。WK_UP按键则同时控制DS0和DS1,按一次,他们的状态就翻转一次。实验四:TFTLED显示实验一、 实验目的:1. 对TFTLCD的基础知识的掌握;2. 控制ALINETEK TFT模块显示字符和色彩的变换;3. 掌握TFTLED的嵌入式显示功能实现;4. 利用模块采用 TFTLCD 面板,可以显示 16 位色的真彩图片。二、 实验设备:ALIENTEK MiniSTM32 开发板、PC机、Keil u Vision3开发软件、MCUISP下载器三、 实验内容:1.硬件设计:首先,设置STM32与TFTLCD模块相连接的IO。根据电路连线图,把鱼与LCD模块相连的IO设置为输出。其次初始化TFTLCD模块。向LCD模块写入一系列初始化的设置,使其工作在所需要的模式中。最后通过函数将字符和数字显示到TFTLCD模块上。将所需要显示的字符输出到LCD模块中。2.软件设计:1.函数LCD_ReadRAM,用于读取TFTLCD模块数据。该函数直接返回读到的GRAM值。该函数使用之前要先设置读取的GRAM地址,通过LCD_SetCursor函数来实现。LCD_ReadRAM的代码如下:2.在LCD_ReadPoint函数中,全局变量DeviceCode用来记录LCD的ID。而读出和写入过程中需要做一个颜色转换,这个工作由LCD_BGR2RGB函数来完成。函数LCD_SetCursor,该函数用于设置坐标,其中(Xpos,Ypos)为要写入或读取的像素点坐标,其代码如下:3.画点函数LCD_DrawPoint,该函数带2个参数(x,y)就代表TFTLCD上的坐标,x的范围为0239,代表横坐标。Y的范围为0319,代表纵坐标,写入点的颜色是根据全局变量POINT_COLOR来决定的。16位全局变量POINT_COLOR代表要写入的点的颜色,而BACK_COLOR则代表背景色。函数代码如下:4.字符显示函数LCD_ShowChar,该函数可以控制显示方式为叠加或者非叠加。叠加方式显示多用于在显示的图片上再显示字符。非叠加方式一般用于普通的显示。代码如下:5.最后是我们的主函数:该部分代码将显示一些固定的字符,然后不停的切换背景颜色,每1s切换一次。而LED0也会不停的闪烁。 四、 实验结果:实验五:ADC实验一、 实验目的:1. 进一步巩固TFTLCD 模块显示知识的运用;2. 利用STM32开发板上的ADC来采样外部电压值。二、 实验设备:ALIENTEK MiniSTM32 开发板、PC机、Keil u Vision3开发软件、MCUISP下载器三、 实验内容:1.硬件设计:1. 开启PA口时钟,设置PA02. 使能ADC1时钟,并设置分频因子。3. 设置ADC1的工作模式。4. 设置ADC1规则序列的相关信息。5. 开启AD转换器,并校准。6. 读取ADC2. 软件设计:首先进行ADC的初始化(省略部分代码)主要针对需要设置的寄存器相应的位置进行设置。写好接收ADC结果的接受函数:其中,设置好了通道,读取SR接受状态寄存器,当转换结束时,将数据寄存器的内容返回。为了显示方便,需要用到LCD屏进行显示,这里用到第4个实验的LCD的设置,不重复描述。在主函数中,写入大循环:其中,用变量adcx接受ADC的结果,然后通过temp变量进行计算,得出正确的adc转换值。四、 实验运行结果实验结果如图:实验六:内部温度传感器实验一、 实验目的:通过内部温度传感器的显示掌握STM32开发板的一些传感器的编程设计以及使用。二、 实验设备:ALIENTEK MiniSTM32 开发板、PC机、Keil u Vision3开发软件、MCUISP下载器三、 实验内容:1. 硬件设计设置ADC,并开启ADC_CR2的AWDEN位。采用与ADC实验相同的设置,这里只需要增加使能AWDEN位即可。读取通道16的AD值,计算结果。在设置完之后,我们就可以读取温度传感器的电压值了,得到该值就可以用上面的公式计算温度值了。2. 软件设计对上一个实验中的Adc_Init函数稍作修改,添加“ADC1-CR2|=123”这一句话,通过该句使能温度传感器,才能使用STM32的内部温

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论