《Linux-AD采样多线程.docx》由会员分享,可在线阅读,更多相关《Linux-AD采样多线程.docx(8页珍藏版)》请在优知文库上搜索。
1、嵌入式系统原理及应用试验报告试验六多线程试验和AD试验院(系)专业小组成员成绩一指导老师一试验要求1 .参考试验指导书多线程试验和AD试验,分析源码。2 .编写AD采集多线程程序,实现以下功能:D线程1:在循环中对指定的AD通道进行转换和显示,显示格式为:ADx=*vo其中X为通道号0-2,初始值为0。每循环一次延时300ms02)线程2:接受用户输入,当输入数值0-2时表示指定AD通道线程1的通道号要随指定值变更;当输入字符S时显示暂停,输入ESC时程序终止退出。输入其他键值时维持原状。3 .扩展部分:将线程1分为2个线程,一个用来计算,一个用来显示。2.1试验步骤1将编成完的程序打包放入虚
2、拟机192.168O.10/arm2410s;2将arm2410s挂载到开发板中新建的host文件夹里毛连林开发5XhdZO6eEdityw100UWindowHelpJ-I-Ja-凶,Address(TCd三ntyaffa(natyffaBcutYnf192.168.0.10zm2410Mtyffboc(nntyffj)la485controlboflckbdQPSp3ca-B0botlbusybox-l.OO-prelOexx03ICernel-2410,HexpBlcrovindcve0C。心Rlnl9ulex&xOlTOQZexazO2xn3ight-6.0sh3进入到虚拟机的文件夹里
3、make,生成.。文件utr4UiMiie2S年CCC匚scMtroICd.4tIU;Sa24139K1.abotcvCteUacUlU4life1.onfcwmcat彳r三rootAlAtftecur*x*ft?StMtnM41.Mt84f24ie/:VMC|:c;Mt28ltct:,*a3BgXaCiutt才“roa金;:cccl:xe3tu*243B2KoeBl.Olb.*.0Mvr*,41.-uA3vs-l1.3tx-9scY-*UJgak.c,:vr4:.UkMv.:1.-o.tt,(MMs.s-trdnMiaxkE2scdmi&.eX3rvMlrw2O1(V三.73,4进入串口连接
4、开发板中运行(三Dtj,ffi)cdexaafil/m*0mua03xp.)三rjtyffbortede(anr,Ewp】1.eXa3;,sakbicboc(Wrtyff9!Ee*Bb9ic(.,antrffovt.*%*c1,ClJJtllO6SQOZjthmM04cn3.,yS.gpoejlj三e3n-oo12!5lZC4X:4_0C-bttpd“_Xd(BDi7jffi,telcd04二A”biab1ex8S*ytcE(三ntrCffcor.tp.*toic.*,M-d-0S三试验程序bythreewaterthreewaterup-techindude#indudeistd.h#inc
5、ludeindude#indude#indude/includeVfCnt1.h*includes3c2410-adc.h#defineADC_DEVdevadc0rav,staticintadcjd=-1;staticintini1.ADdeVi8(VOid)if(adcJd=open(ADC_DEV.O_RDWR)tadjnum;ntch;/.*r*.*e退出m*/staticvoid*ComMomtOf(void*data)(while(l)stop=l;exit(l);break;)returnNU1.1.;/采样02路A/D值/intadn;intpausenum=0.voidsho
6、w(void*data)(floatd:while(adn=0ad=ladn=2)采样0-2路A/D值WhiIe(Stop=O)(While(PaiJSenUm=0)(d=(foat)GetADresut(ad11)3.3)1024.0:printf(CHd=8.4fvf.adn,d);usleep(l):Printf(V);)break.)/*a.b,c显示02路-*/voidinput(voiddata)charchr:Pthreadjth_show.while(l)(SCanfrHC”.&chr);chr=getchar():if(chr-48chr=49chr=50ya.b,c-0-2
7、路(adc.num=chr;adn=adc_num-48/)adc,num=chcadn=adJnlJm-48“hif(chr=43)adc,num=chr;ad=O;)if(chr=38)adc,num=chr;dn=ljif(chr=77)adc.num=chr;ad11=2;)*/elseif(chr=115)/S停止(pausenum=1;)elseif(chr=27)esc退出(ch=chr;stop=l;)elseif(chr!=115/随意键接者(pausenum=。;)/break;)intrain(void)inti;floatd:pthreadtth_com.th_sbow
8、.thinput;voidretval:“sets3c44bADregisterandstartADif(init,ADdevceO91ccd.Iiyffaccrolexpcd.(三ntyffwetrel)Cd!ntyaff-tnfs192.1(8.0.10zara24109三ntyaffscctttrol(/MltZyeffeJcdCOQttOl/sntyaffseetolxbielIs01-ello02-phre02JSM103Fy04.dCC-ca6%oe-prs09二MtR10adCAtorIlfepeocor12二463aatyaffseeetroljcb*ie)cd04-4d2I三
9、ntyaffsceetroVep,lm9ic04,ad2J./ad13-lccaxdtesbluetooth14.ledIre)tordNftbefllte3M.UIbxn9etthekeyleputC100.OOCCirrCHl-322HvCH2-3.2SwCBO0.00001CHl-322H4vCH2-3.294CVCHO0.a00CvCHO-0.OOOOvgCHO-0.*0JvCHO0.OOOGv(BntyffcontrolejbMXc04.d2p.r3jH1S9W四试验总结4.1 试验完成效果可以实现多线程AD采样效果;:当输入数值1、2、3时表示指定AD通道线程1的通道号要随指定值变更:当输入字符s时显示暂停;当输入随意字符时重新起先;输入ESC时程序终止退出。输入其他键值时维持原状;可以实现暂停、更新起先、退出功能;分为3个线程.一个用来获得键值,一个用来显示,一个用来退出。