好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

嵌入式控制实验报告.docx

14页
  • 卖家[上传人]:枫**
  • 文档编号:452953392
  • 上传时间:2023-11-13
  • 文档格式:DOCX
  • 文档大小:125.29KB
  • / 14 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 嵌入式控制系统及应用实验报告小组成员:912110200231.1最小系统设计一、实验目的(1)熟悉 Proteus 与 Keil for ARM 的使用;(2) 掌握Proteus与Keil for ARM联合调试方法;(3) 掌握嵌入式系统最小系统的设计与调试方法;(4) 掌握嵌入式系统的仿真设计技术二、 实验内容本次实验利用电路仿真软件Proteus与嵌入式开发环境Keil for ARM进行嵌入式系统的仿真在Proteus 中进行嵌入式系统最小系统的硬件电路设计,并在Keil for ARM中完成最小系统测试程序的编写和编译, 最后将编译成的可执行代码装载到嵌入式微处理器中进行电路的仿真运行三、 预备知识C语言的基础知识,Proteus与Keil for ARM软件的基本使用方法和设置四、 实验设备硬件:PC机(或笔记本电脑)软件:Windows xp以上操作系统,Proteus 7.8以上版本,Keil for ARM 3.0以上版本五、 实验步骤(1) 安装 Proteus 及 Keil for ARM 软件(2) 在Proteus中建立嵌入式最小系统电路XTAL1 PD.mMMiPWMIXTAL2 PC. I.'RCQPWMSPD_2ffiCL'CAPDJi PDjiEEWMAE.mENTI RST PDJffiCKa>iCAPC.1PD.a'MISCQ^MATD.I PD.E^MOSI&'CAPDi pa.z^sELH'PWMa^rrra PD.BiT(D1iFWH4 Pa.9.'RxD1'PW M&rEN73 Pa.1WRT51i'CAP1Xl Pa.11.'CTS1iCAP1.1 Pa.IZfDSRIi'MATIjD IPD.13rtJTiRlJMAT1.1P0.14iDCD1irEINT1 PCL1 狗 1JEINT2PD. lai'EINTCL'MATD.ai'CAPDi PD.17iCAP 1 i'SCKi iMATIi PQ.I&'CAPl.a'MEOl po.ia'MATi.awoen POJa.MATI.l'SSELVEim pa.avpwfe&CAPij P022jCAPD.WMATOJ5 PD-23 PDJ4 PD25PD27/AllsniCAPD.1.'MATO.1 PD^a?AIN1 iCAPD.2.'MATO2 PD.2S'AIN2jCAPD.l'MATO.3 Ptl.3D.,AJNl'EINT]i,CAPD.DV3AP1.1&/TRACEPKTlipi.it/tiracepktiP1J&/TRACEPKT2PUS/TRACEPmP1.2&1RACESVNCV1BAP1.21.'WPESTA1DVI &P1.22rPIPESTATIVI &P1.23irP1PESTA12Pl.a^TRACECLKVSSA^RLlPIJS^EXIINDW5SA~P1J&RTCKVSSP1-27/TOOVSSPhS-TDIVSSPI^TTCKVSSP1.30™SVSSP1.31JT^T腰EMLnJL]图1.1.1嵌入式最小系统原理图(3)在Keil for ARM中编写最小系统测试程序测试程序源代码如下:#include#include void delay(){int i;int j;for(i=0;i<100;i++)for(j=0;j<1000;j++);}int main(void){int i;IO0PIN=0;for(i=7;i<=10;i++) {/*IO0DIR=1<<7I1<<8I1<<9I1<<10I;*//*IO0CLR=1<<7I1<<8I1<<9I1<<10I;*/IO0DIR=1<

      1.2串行通信设计一、实验目的(1)掌握UART部件的使用与接口扩展方法;(2)掌握嵌入式系统的仿真设计技术二、 实验内容本次实验利用电路仿真软件Proteus与嵌入式开发环境Keil for ARM进行嵌入式系统的仿真在Proteus 中进行嵌入式系统的UART接口硬件电路设计,并在Keil for ARM中完成串行通信程序的编写和编译,最 后将编译成的可执行代码装载到嵌入式微处理器中进行电路的仿真运行三、 预备知识C语言的基础知识,Proteus与Keil for ARM软件的基本使用方法和设置四、 实验设备硬件:PC机(或笔记本电脑)软件:Windows xp以上操作系统,Proteus 7.8以上版本,Keil for ARM 3.0以上版本五、 实验步骤(1)在Proteus中建立嵌入式系统电路图1.2.1 嵌入式系统原理图(2)在Keil for ARM中编写系统测试程序测试程序源代码如下:#include#includechar string[]={"We are students\n"};int send(int ch){if(ch=='\n'){while (!(UOLSR & 0x40)); return (UOTHR=ch);}void delay(void){unsigned volatile long i;for(i=0;i<400000;i++);}void sendstr(char *p){while(*p!='\0'){send(*p++);}}int main (void){PINSEL0 = 0x0000005;U0LCR = 0x83;U0DLL = 122;U0LCR = 0x03;I00DIR = 0x000001;while (1){sendstr(string);delay();}}2.2多线程应用程序设计一、实验目的(1)了解多线程程序设计的基本原理。

      2)学习pthread库函数的使用二、实验内容熟悉几个重要的PTHREAD库函数的使用,掌握共享锁和信号量的使用方法进入/arm2410s/exp/basic/02_pthread目录,运行make产生pthread程序,使用NFS方式连接开发主机进 行运行实验三、 预备知识有C语言基础掌握在Linux下常用编辑器的使用掌握Makefile的编写和使用掌握Linux下的程序编译与交叉编译过程四、 实验设备硬件:UP-NETARM2410-S嵌入式实验平台,PC机软件:PC机操作系统REDHAT LINUX 9.0+ARM-LINUX开发环境五、 实验步骤(1) 编写并编译简单的多线程示例程序(2) 阅读源代及编译应用程序(3) 下载和调试(4) 在任意一个示例程序中,加入一个新的线程用于处理键盘的输入,并在按键为ESC时终止所有线程该线程的流程图及关键代码如下include #include #include #include "pthread.h"#include #define BUFFER_SIZE 16struct prodcons(int buffer[BUFFER_SIZE];pthread_mutex_t lock;int reapdpos,writepos;pthread_cond_t notempty;pthread_cond_t notfull;}void init(struct prodcons*b){pthread_mutex_init(&b->lock,NULL);pthread_cond_init(&b->notempty,NULL);pthread_cond_init(&b->notfull,NULL);b->reaapos=0;b->writepos=0;} void put(struct prodcons*b,int data){pthread_mutex_lock(&b->lock);while((b->writepos+1)%BUFFER_SIZE==b->readpos){ printf("wait for not full\n");pthread_cond_wait(&b->notfull,&b->lock);}b->buffer[b->writepos]=data;b->writepos++;if(b->writepos>=BUFFER_SIZE)b->writepos=0;pthread_cond_signal(&b->notempty);pthread_mutex_unlock(&b->lock);}int get(struct prodcons*b){int data;pthread_mutex_lock(&b->lock);while((b->writepos==b->readpos){printf("wait for not empty\n");pthread_cond_wait(&b->notempty,&b->lock);}data=b->buffer[b->readpos];b->readpos++;if(b->readpos>=BUFFER_SIZE)b->readpos=0;pthread_cond_signal(&b->notfull);pthread_mutex_unlock(&b->lock);return data;}#define OVER(-1)struct prodcons buffer;void*producer(void*data){int n;for(n=0;n<1000;n++){printf("put-->%d\n");put(&buffer,n);usleep(1);}put(&buffer,OVER);printf("producer stopped!\n");return NULL;} void*consumer(void*data){int d;while(1){usleep(1);d=get(&buffer);if(d==OVER)break;printf(" %d->get\n",d);}printf("consumer stopped!\n");return NULL;}void *th_me(pthread_t a,pthread_t b){char c;while(1){c=getchar();if(c==27){pthread_cancal(a);pthread_cancal(b);pthread_exit(0);}}}int 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.