嵌入式B205实验报告串口通信实验.docx
- 文档编号:822949
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:8
- 大小:191.70KB
嵌入式B205实验报告串口通信实验.docx
《嵌入式B205实验报告串口通信实验.docx》由会员分享,可在线阅读,更多相关《嵌入式B205实验报告串口通信实验.docx(8页珍藏版)》请在冰豆网上搜索。
嵌入式B205实验报告串口通信实验
实验成绩:
指导老师:
嵌入式系统与应用
实验报告
学院:
自动化学院
专业:
电气工程及其自动化
班级:
姓名:
学号:
姓名:
学号:
串口通信实验
一、实验目的
1.熟悉STM32F4串口硬件控制器及相应寄存器,基于STM硬件基库编写串口驱动程序,实现串口与PC机通信。
二、实验内容
1.学习STM32F4USART硬件模块;
2.基于提供的stm32f4xx_usart.h和stm32f4xx_usart.c文件,编写main.c文件,实现与PC机之间通过串口数据收发功能。
三、预备知识
C语言的基础知识,ARM-MDK程序调试的基础知识和方法。
C语言的基础知识,ARM-MDK程序调试的基础知识和方法。
四、实验设备及工具
硬件:
ALIENTEK探索者STM32F4开发板、ST-Link调试器、PC机、串口连接线。
软件:
PC机Windows操作系统、ARMMDK5集成开发环境、仿真器驱动程序、超级终端通讯程序。
五、实验步骤
1.USART硬件模块学习
2.USART驱动代码学习
2.1printf函数支持
2.2uart_init函数
2.3USART1_IRQHandler函数
3.main()参考代码
结果:
开始程序,灯亮。
实验四uCOS-II嵌入式实时操作系统实验
一、实验目的
1.了解uCOS-II嵌入式实时操作系统原理,能够编写简单应用程序。
二、实验内容
1.学习uCOS-II基本概念,Task调度机制,信号量机制;
2.基于提供的uCOS-II基础工程代码,添加信号量功能,使得开发板开机后led1熄灭,led0闪烁led010次后熄灭,led1接着闪烁10次后led0再闪烁,如此反复。
三、预备知识
C语言的基础知识,ARM-MDK程序调试的基础知识和方法,RTOS嵌入式实时操作系统基本概念。
四、实验设备及工具
硬件:
ALIENTEK探索者STM32F4开发板、ST-Link调试器、PC机、串口连接线。
软件:
PC机Windows操作系统、ARMMDK5集成开发环境、仿真器驱动程序、超级终端通讯程序。
五、实验步骤
1.uCOS-II基础知识学习
UCOSII是一个可以基于ROM运行的、可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS)。
为了提供最好的移植性能,UCOSII最大程度上使用ANSIC语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP)。
UCOSII构思巧妙。
结构简洁精练,可读性强,同时又具备了实时操作系统的全部功能,虽然它只是一个内核,但非常适合初次接触嵌入式实时操作系统的朋友,可以说是麻雀虽小,五脏俱全。
UCOSII(V2.91版本)体系结构如图4.1所示:
图4.1UCOSII体系结构图
UCOSII的每个任务都是一个死循环。
每个任务都处在以下5种状态之一的状态下,这5种状态是:
睡眠状态、就绪状态、运行状态、等待状态(等待某一事件发生)和中断服务状态。
UCOSII任务的5个状态转换关系如图61.1.2所示:
图61.1.2UCOSII任务状态转换关系
接下来,我们看看在UCOSII中,与任务相关的几个函数:
1)建立任务函数
OSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INTUprio)。
2)任务删除函数
INT8UOSTaskDel(INT8Uprio);
3)请求任务删除函数
INT8UOSTaskDelReq(INT8Uprio);
4)改变任务的优先级函数
INT8UOSTaskChangePrio(INT8Uoldprio,INT8Unewprio);
5)任务挂起函数
INT8UOSTaskSuspend(INT8Uprio);
6)任务恢复函数
INT8UOSTaskResume(INT8Uprio);
7)任务信息查询
INT8UOSTaskQuery(INT8Uprio,OS_TCB*pdata);
UCOSII与任务相关的函数我们就介绍这么多。
最后,我们来看看在STM32F4上面运行UCOSII的步骤:
1)移植UCOSII
2)编写任务函数并设置其堆栈大小和优先级等参数。
。
3)初始化UCOSII,并在UCOSII中创建任务
4)启动UCOSII
2.添加信号量功能
接下来我们看看在UCOSII中,与信号量相关的几个函数(未全部列出,下同)。
1)创建信号量函数
OS_EVENT*OSSemCreate(INT16Ucnt);
2)请求信号量函数
voidOSSemPend(OS_EVENT*pevent,INT16Utimeout,INT8U*err);
3)发送信号量函数
INT8UOSSemPost(OS_EVENT*pevent);
4)删除信号量函数
OS_EVENT*OSSemDel(OS_EVENT*pevent,INT8Uopt,INT8U*err)
六、实验代码
#include"sys.h"
#include"delay.h"
#include"usart.h"
#include"led.h"
#include"includes.h"
voidstart_task(void*pdata);
#defineLED0_TASK_PRIO7
#defineLED0_STK_SIZE64
OS_STKLED0_TASK_STK[LED0_STK_SIZE];
voidled0_task(void*pdata);
#defineLED1_TASK_PRIO6
#defineLED1_STK_SIZE64
OS_STKLED1_TASK_STK[LED1_STK_SIZE];
voidled1_task(void*pdata);
intmain(void)
{
delay_init(168);
LED_Init();
OSInit();
OSTaskCreate(start_task,(void*)0,(OS_STK*)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO);
OSStart();
}
voidstart_task(void*pdata)
{
OS_CPU_SRcpu_sr=0;
pdata=pdata;
OS_ENTER_CRITICAL();
led0_led1=OSSemCreate(0);
led1_led0=OSSemCreate
(1);
OSTaskCreate(led0_task,(void*)0,(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],LED0_TASK_PRIO);
OSTaskCreate(led1_task,(void*)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);
OSTaskSuspend(START_TASK_PRIO);
OS_EXIT_CRITICAL();
}
//LED0ÈÎÎñ
voidled0_task(void*pdata)
{
intt;
while
(1)
{
OSSemPend(led0_led1,0,0);
for(t=0;t<10;t++)
{
LED0=0;
delay_ms(80);
LED0=1;
delay_ms(92);
}
OSSemPost(led1_led0);
};
}
voidled1_task(void*pdata)
{
intt;
while
(1)
{
OSSemPend(led1_led0,0,0);
for(t=0;t<10;t++)
{
LED1=0;
delay_ms(300);
LED1=1;
delay_ms(300);
}
OSSemPost(led0_led1);
};
}
心得体会:
在做B205的实验过程中,掌握了一部分创建嵌入式开发环境的流程,学习了串口通信,ADC转换及uCOS-II嵌入式实时操作系统,了解了STM32F4串口硬件控制器及相应寄存器。
虽然只是了解皮毛,可能很多东西还不明白,但经过对程序的理解和对相应软件的应用,对嵌入式开发产生了兴趣,学会了简单应用程序的编写,对概念有更加深刻的认识。
“兴趣是最好的老师”,相信在这两节课的引导下,在以后遇到这类情形时能更好地处理,更能激发学习兴趣和动手能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 B205 实验 报告 串口 通信