单片机STM32试验报告.docx
- 文档编号:27734251
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:31
- 大小:295.91KB
单片机STM32试验报告.docx
《单片机STM32试验报告.docx》由会员分享,可在线阅读,更多相关《单片机STM32试验报告.docx(31页珍藏版)》请在冰豆网上搜索。
单片机STM32试验报告
实验报告
课程名称:
单片微机原理与车载系统
学生姓名蒋昭立
班级电科1601
学号
指导教师易吉良
2018年12月17日
实验1GPIO实验
实验目的
1)熟悉MDK开发环境;
2)掌握STM32单片机的GPIO使用方法。
实验设备
1)一台装有Keil和串口调试软件的计算机;
2)—套STM32F103开发板;
3)STlink硬件仿真器。
基本实验内容
1)熟悉MDK开发环境,参考《STM32F1开发指南(精英版)-寄存器版本》第3章,安装MDK并新建test
工程,运行例程,在串口窗宽观察结果,并记录如下:
从图片可以看出,例程运行成功,没有错误。
Uir.^iici^|^hunn
MiiMVlitaPl■毎HIAMbvhitteMMS押缶jr*电
tSh'Cj^ni,H
二&z
亠CM
|J
_Jeiarti<.EteiiUtltta_liMie丄!
」Mtr-c
□咿■
口ttrw4«
qUM
.!
lilHfMd
ij血曲直电百
TtHl^lOl4HfA
InLlTYTV&vl
kg»FUFw&pta_0PXcaPim «B^idl_i&.iE.St.tuElMiE«.91Id^iN■*Dlja_^kfi_Sj,»L±I-»■»f5.Swsarl ap3»wZB4.E|ccuei^».gFIC_H«i*■-EFJd.feh曲气护m: Nr打limpid ajr^o^1114-*cwin.■■矢事'>*t^K^waWi-# 辛■二耳■(! »[啊_0■谒-■lrll」: l|l//HLrl・二|( 4FZ? -lHiLs3lE-iumiiE>fl9^VIQ~F&n~"ffTZOi_V'! |riiH>J-'-ZXC-LH tFlO^lEJ-Ef&flOE>PIO_iillESLl«n: iir»tJrjteUG4X0 iEPTO^VbiRii■*SFJil[兀L・〕pf/PT.I■睥■ iFia_a«ii4-^ad.TMigfiod.,weq_fsji._5]丫科gHvfwiohw・wa&jrr^tTjwins-till: Ht||r曲理W・iL■■何时*■酣toFiAIDJ1■丁点七汕鼻I曲囲■亍fSfLBs .*4(.'L3IHfIMliRiii*■■・ ^Min・&♦-◎liri-«ri»pri&tt4i: nuf|»|・ 2)按键输入实验,《STM32F1开发指南(精英版)-寄存器版本》第8章。 实现功能: 3个按钮(KEY_URKEY0和KEY1),来控制板上的2个LED(DS0和DS1)和蜂鸣器,其中KEY_UP控制蜂鸣器,按一次叫,再按一次停;KEY1控制DS1,按一次亮,再按一次灭;KEY0则同时控制DS0和DS1,按一次,他们的状 态就翻转一次。 理解连续按概念及其实现代码。 参数mode为0的时候,KEY_Scan函数将不支持连续按,扫描某个 按键,该按键按下之后必须要松开,才能第二次触发,否则不会再响应这个按键,这样的好处就是可以防止按一次多次触发,而坏处就是在需要长按的时候比较不合适。 当mode为1的时候,KEY_Scan函数将 支持连续按,如果某个按键一直按下,则会一直返回这个按键的键值,这样可以方便的实现长按检测。 寄存器方法实现不支持连续按的关键代码,以及程序运行后的效果。 由程序可知,给KEY_Scan函数输入的值为0,为不支持连按模式。 总支螂;of^nedv.匚匸兀. T魚星勇屯子科技有霞土圧 11mtmain(vaxd} 歩*r5二E? I■耐初鼻化 KEYInit(}; LEDO-'; 3T-5C7EiTiT*fci-_T®Ta_tj- 20 21 庄厂阻匚5can〔匚}: //SS.rtl if(key) ( rwitchdcey) < 3i3eNKUP_PRES: 3EEP=? 3EEP;break; 6&seKE¥2_PRE£s//tSMlfDOflW LEDO-? LEDO;breat; caseKEYX^PRES: 总刮LID亠相眉 LED1-! LED1;bre^at; c*«cKEyO_PRESi"同0H£1H1EDO*LED1毎轉 LEOO-? LEDO;LEDSLED"bz&at; )elaedelay_^(2->; 寄存器方法实现支持连续按的关键代码,以及程序运行后的效果。 由程序可知,给KEY_Scan®数输入的值为1,为支持连按模式。 3)采用库函数方法实现按键输入实验,参考《 STM32F1开发指南(精英版卜库函数版本》第 c 8早。 库函数实现不支持连续按的关键代码,以及程序运行后的效果。 由程序可知,给KEY_Scan函数输入的值为0,为不支持连按模式。 r"J*. u8ji SmaS^Clock^lBL^(? );delay_ime「_) LEDImt(i: 3EEP_Init(); KEY^init(i: led3=while 互疚对井设賈這时 5^与1«ED逹黑 //< "初始址域喝器漏口 "钿歯比与HEflt连療曲硬洋接口f先点壬红H ke^KEY_Scan();if caseWKUPFRE5: BEEF*'BEEP;breaks 匚aseKEI2_PRES! LEDQ-! ££DOrbr»Kz ca«eKEY^_PRES: LEPJ.-J.LiDL;breakz xnuKE'i-_FR£5: LEDO-ttXOOrI£Dl-fL£DL^breaks "同时控畧LZire.LEPlii? ? ? 库函数实现支持连续按的关键代码,以及程序运行后的效果。 由程序可知,给KEY_Scan函数输入的值为1,为支持连按模式。 创新实验内容 在实验步骤的基础上,通过修改代码,实现如下功能: 1)按下任意一个按键,蜂鸣器响x下后停止,然后DSO闪烁y次,DS1闪烁z次(x、y、z分别为你学 号的末3位的数); 由我学号最后三位为119,所以蜂鸣器响1下后停止,然后DS0闪烁1次,DS1闪烁9次。 37 38 39申 40 41 42 daseKEYO^PRES: ! for(i^0;i () //得到键It switch KEY1 WKUP PRES PRES Init(> Inxt BEEPKEY_LEDO-O;I;while (1) y=KEY_Scan(0)if(key)』[ —T血屋删 「〃初始化与按键连接的硬件 //红miSKIIia aIt 鴛 27 28 29[ 30 31 32 33 34 35 36 BEEP=IBEEP;delayms(Lp ■ BEEP=! SEEP;de 43 44卜 } lay_rcis : LEDO; 实验2定时器实验 实验目的 1)理解定时器工作原理; 2)掌握STM32定时器的使用方法。 实验设备 1)一台装有Keil和串口调试软件的计算机; 2)一套STM32F103开发板; 3)STlink硬件仿真器。 基本实验内容 1)定时器中断实验,参考《STM32F1开发指南(精英版)-库函数版本》第13章,利用TIM3的定时器中断来控制DS1的翻转,在主函数用DS0的翻转来提示程序正在运行。 通过本例程,理解定时器中断原理,记录关键代码,写出定时器中断过程: 一开始程序会一直执行死循环里面的代码,让LEDO不断的亮然后熄灭来提示程序正在运行。 当计数器 计数500ms之后,程序将跳出循环,去执行定时器里面的程序,实现DS1的反转 气TMR agHW 屛「AtiHI EJ«hr -」*nltf1bi_t£ E科HWWUI 由」■占 ■Jl^nrj-u言档TH*曇出cm-亠UM*-』*fj™n EG3XV子” M-奄1『士鼻*: -口丁并■港・_富-: 工■哀乐尊-I4: 卄Elt*: *朋Hir.”-A_・s■关*咋- HNr .■-T xnt■arIk工曲 耳V 旺1*1匚4*1昭汁//ja.1'5£B.<4 HVZfTwn■吟口|1呼||1¥1: Pri4ii 雀fit・: unrt: gm弭二: 切囂•□'<*3--1-: o' g3UI111/X3JDII□*7Vk iiSL5_i±.T_L±LlE115? -,! -! ■^I=.J.JEJ: 上朝计17呛鼻汙眩b! : IW』勺乩.a «U,M1Jik BC g>*」uc暫j d»3*T_nw«: 2C>-,; HTB- 打定时器彳中豔饕昜程字 {_ iti(TIH3rT1B_1I_Jpdate)! - <--- TIKTCLearITFencLingBj.LiTZM3FTIM_IT_t;pd*teLEOl-flXDl; RESET*//tt»lH3£fF中斷发生与否);"摘寒"Mir更新中汗标志 2)PWM输出实验,参考《STM32F1开发指南(精英版)-库函数版本》第14章,使用TIM3的通道2,把通道2重映射到PB5,产生PWM来控制DS0的亮度。 通过本例程,理解定时器PWM输出功能的使用方法,记录关键代码,写出STM32定时器PWM输出实现过程: 本实验通过重映射复用功能,将TIM3的通道2,把通道2重映射到PB5引脚,通过PWM的高低电平来控制DS0的亮度,电平为高电平时为亮,低电平时为熄灭,由主函数的程序可以看出,随着ledOpwmval 的数越大,PWM输出的占空比就越大,此时灯就越亮。 ±=trr.air(uoid) delay_F3 (1); i*(dir)leiup^xrai++: led'jTW^TS;--; ■Sit 阳+jLz3i UAXtIKAt{亠-E二■>;LED_I*icO; TIH3_FWH_Init(1whil« (1) <1 -80Kh= l£(ledQpwmva1>i? S)dir-..';最六可if(1edOpwmva1—.)dir-^; TIHSetCcrqpareZTlM3jledCpUTtvalJ: rtfr4*^B_^ai—■ 即y范为9 3= 22 : /台和tr平子工 uil^dCf^rrveil"7r USdll*2; delay_init(J;"延时話整初姻化 MVICFxlGrltyGroipConflg(ET^'ICPilarltySrijf_2”;-一"S2O0];//♦口 /ME>瑞口韦 分麵.PW痺率 设需SVI 3)定时器输入捕获实验,参考《STM32F1开发指南(精英版)-库函数版本》第15章,利用TIM5的通道1(PAO)做输入捕获,捕获PAO上高电平的脉宽(用WK_UP按键输入高电平),通过串口打印高电平脉宽时间。 通过本例程,掌握定时器输入捕获实现过程,记录关键代码,并写出捕获输入实现原理: C■£.Il 别tv.NT rt9-3: 胡: : 蟲妙Hlop訂台M41G啄霏寻芋孑膨itWW1甲-■■7电丐玉实: "tt.-Ja诵咅三壬圧權7亠|±朱叱匕 亠三亠二IS声去L作 J LBUBTLM5匚5U_CaFTUM_5lA7■牺人壇兼社去 LB«XTarnUlfrTIMSCMT_iZRPTUwi_VAL;/ 20ibxmin(void) uJZrenif"? 1; d«l*y_iait<|i: "延Jt畠麺初谄址 irvic_piior11v&JtouioCQafia13VIcf;f讨*kvi: 申眇号俎2 uirt_init|.1? '》;丿;串Z1打Sf比,询\13」d". 却%亍niu[};fiUE3可也tt TUtJpni^iaie(iss,ojj"不井■・PMMffA«? 2000/^+1}*S0KS± : l”匸牯匸肚丄3宁旷FF""-_;k'l 血le(T) delay^niai(丄: ): TIH^SttCenfNiixe^ETIM3,TIH^Geiue2ITIKI|丰J; 38a 3&«G4丄 ifiTLK^tC*p^we2(TM3—: =ITIH=5«C™p«c: (TLH3.j|i; *irnB<3LL_e*>TORt_STA—X冋"晝功ft快列T—it上羿幡t tsp-TIHSi: H._C*FTURE_5TJUj刖和 t«nsp"*^5S3£;/.7二討商总和reEp^=TIM5CBl_GAPTUKE_VAL;=£3.: 蔓电年时可^*XniE£Ut邛才八色些□/打洛遷•jlS: .戶干另伺 TIM5CJ! l_C*>TUM_SrA"L-J//? ffiT-代摘僉 4£ 4fi 创新实验内容 在实验步骤的基础上,通过修改代码,实现如下功能: 1)通过定时器相关功能实现控制蜂鸣器音调。 查找资料理解蜂鸣器发出不同音调的控制原理,按下某个按键,实现“多来米发梭拉西”的发声; )freeze JIE筋」E叫 J」Hm32ri0wJ*mx w^ilc{■! ) 科□ £ 31 delay_ru(|; 321 for(a-: ;a<: 1■; 日") 33B { 討 BEEP-! BEEP; 35 delay_vs(..1j 3£ hi > for(b-; 39□ ( REELBEEF; delay_u3(H 12 > 13k for(c-;c<..j'; c*+) 佃申 { BEEf-^BEEf; delayus(tj.); > 49k 50 for(d™I? '■; 戎屮 SIR ( 551 BEEF-1BEEF; 汨 delayus(z? }; 5勺 > 55k 5枣 tor(e-j: e<: ;一: J; C++) 57S ( ss BEEP-SEEP; 59 delay_u5(i'■'I; «0 > €1 实验3ADC及显示实验 实验目的 1)理解ADC工作原理; 2)掌握STM32ADC的使用方法。 实验设备 1)一台装有Keil和串口调试软件的计算机; 2)—套STM32F103开发板; 3)STlink硬件仿真器。 基本实验内容 1)ADC实验,参考《STM32F1开发指南(精英版)-库函数版本》第22章,将利用STM32的ADC1通道1采样外部电压值(注意: 输入电压不能超过! ),并在TFTLCD模块上显示出来。 ADC输入端口查找请参 考《STM32F1开发指南(精英版)-库函数版本》第2章实验平台硬件资源详解。 通过本例程,理解ADC原理, 记录关键代码,写出ADC采样实现过程: 通过Get_Adc_Average函数可以获得由通道 1采样得到的采样值,然后经过转换计算输出我们需要的 数字量电压值。 incmibivo&d.) 4 止呂Bi: J* riiSlACL«^J de-laqr^lnlE;rr适姉曲敖初・*住 m: 」•““Li—斗—呕“中: 」"“sw-工鼻’p迥-*了虐—•: 匚担二■: 丸逼-匸燮空予一十常 M產口村站化中E1阳皿 LCDImtJ): 打工E®□初姑吒 工0_丄nit(pf Mu二Tn”o/ k»rr_gL«・《EM斡1U字 LCT_siwwB5riftfl1£=.rS二昇“八右』齢刑鼻『问||FRU^■k/ LCD_S! iot5cxxe-e? UJP"-HJ,-tBIt,5LKTUT"]; L£D~ShxwSerla-gi 翻乃H号俎比WTOt"j : LcpaiicwSEripfli«P7-■<-;丄丿一q.ij 和摄示廉示建9. neirr_>: ciLM-u»f/■^S>字*K寛亜* ICD^hwScF4B.QIU-^30pSPOB丄E*LCj1■]1 L±D±h WL)・U| *i_LK.™j^^AOeL^V#! dLg*tu>-EU||a1iF2.JB; US^MonHual114,JUOrhAK,.«vM*dTf^/S丽血JIf|t«qp-(flcat*bx±cx■().=: 」■;.t|-j ■iilZMmp; LO_Jh«WHNiMI41((»<】科川如・IrfKpftjJ/j14^.■圧(t talztb; E.i^pB*ljj-3j lcv_处pintfnai*"八wxgrkh* LEEO-! .LEM7 i3ilA-f_u\2'-J= 2)内部温度传感器实验,参考《STM32F1开发指南(精英版)-库函数版本》第23章,利用STM32F1的 内部温度传感器读取温度值,并在TFTLCD模块上显示出来。 通过本例程,理解STM32内部温度传感器的使 用方法,记录关键代码,写出读取内部温度传感器温度值的实现过程: invmibivaid» tBaxttufiF 吐2扯.gi耳I>』■/SPT西畫El饌优 if*lC_rtibtl! t^SrflapCMiTlffdl*iC_Wietlt;^rc-JF_-Ir-u.riiBisJ;.ii|>,ii/醮口暫化为Ml■: ■■门 : xd-和牛/rta匹与工匸進携韵枝呻垄口LEe^iutf>j/-! fttil峙Up |]jFrxcc軻fie■> Eci! : irziSS^IItAijft. l»j_P<-hnwSET3,ngj11..■r«vi•■,•,Bl*? -THj,j LjEDrhsowStri-n^ri.,r*_,liP.P■iBsrp*rat-ar-BTE_T■"-;yi^SwH■凝A.H41J-3#H«4: 04»llvJ■•_^m*AL;EBTIlE111jiLlD*=fldHfSrTlfl5 EOIFZ_C3LC6-<Ef芒■之忸F盖奧 g■新gMkFUg门旺祐】靳Ki"TDCFEUlTEl料-牝Ll』 I _Trwf««■vCl-r1/嘗■舟-AT西 [上■雹j 创新实验内容 在实验步骤的基础上,通过修改代码,实现如下功能: 1)用信号发生器输出正弦波、三角波信号(注意峰值小于! ),接入某ADC通道,在TFTLCD上动态 显示输入数据(也可以用图形方式显示); rLCDFill(3J,7jF200+3Ci,? D+16rWHITE}; delsyms(2JO}; i-}- )ICDStiowSrrin^OO,^0,20;,lc,L£f^SD匚axelOK"}j XCD_ShovStrin.^(30#90^200f16,16^-^FontUpdating...n);fcey=u(xiat^font{20r110,16f二0: 卄: "更新字库 (while(key)//更新■失敗 LCD_5howString11l£rltr^FonDUpdateFailedJn]; ■lelay_ics(2J: }; LCDFill(阿初110+ie,WHITE); delayins(200); }_ MH^ShawString-(30,L10r200,16,16rX^n^UpdateSuccess! n};del^y_m5(1500); LCD_Clear{TSHITl)f//i#W )_ POINT_COLOR=RED; ShcvStr(30,50,200,16,16f□}; Show2Etl(30,70,200.L£r^L64O170O115F'fl€fO}; £how_Str(30,110,200,! €,^2019^12^20SH,2t,j); 实验总结 通过这三次实验,我遇到了很多问题,比如,如何开始去新建一个工程,如何运行一个程序,如何下载到开发板中。 也学到了如何去解决这些问题,遇见软件问题也多不胜数,比如: 调试文件系统程序时,程序编译没有错,仿真时程序总是跑飞到硬件中断。 这是因为初始化文件系统时,前面忘记调用设备选择函数,导致一些参数未能及时存储变量的值,致使程序跑飞,加入设备选择函数后,该现象解决。 这样的还 有很多很多,问题越多,在与别人交流的过程中受益匪浅,别人的程序往往使人豁然开朗,通过这几次实验,我不仅加深了对单片机的了解,将理论很好的融 入到实践中,同时也让我意识到自己的不足,无论是理论上还是遇到问题的处理能力还有待提高。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 STM32 试验报告
![提示](https://static.bdocx.com/images/bang_tan.gif)