单片机STM32试验报告.docx

上传人:b****8 文档编号:27734251 上传时间:2023-07-04 格式:DOCX 页数:31 大小:295.91KB
下载 相关 举报
单片机STM32试验报告.docx_第1页
第1页 / 共31页
单片机STM32试验报告.docx_第2页
第2页 / 共31页
单片机STM32试验报告.docx_第3页
第3页 / 共31页
单片机STM32试验报告.docx_第4页
第4页 / 共31页
单片机STM32试验报告.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

单片机STM32试验报告.docx

《单片机STM32试验报告.docx》由会员分享,可在线阅读,更多相关《单片机STM32试验报告.docx(31页珍藏版)》请在冰豆网上搜索。

单片机STM32试验报告.docx

单片机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-

打定时器彳中豔饕昜程字

veldTlM3_iRQHanaier(voi

{_

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-代摘僉

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

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);

实验总结

通过这三次实验,我遇到了很多问题,比如,如何开始去新建一个工程,如何运行一个程序,如何下载到开发板中。

也学到了如何去解决这些问题,遇见软件问题也多不胜数,比如:

调试文件系统程序时,程序编译没有错,仿真时程序总是跑飞到硬件中断。

这是因为初始化文件系统时,前面忘记调用设备选择函数,导致一些参数未能及时存储变量的值,致使程序跑飞,加入设备选择函数后,该现象解决。

这样的还

有很多很多,问题越多,在与别人交流的过程中受益匪浅,别人的程序往往使人豁然开朗,通过这几次实验,我不仅加深了对单片机的了解,将理论很好的融

入到实践中,同时也让我意识到自己的不足,无论是理论上还是遇到问题的处理能力还有待提高。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1