你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

[STM32F401-DISCO开发板]实验三、2路ADC采样+2路PWM输出实验

[复制链接]
zhjb1 发布时间:2017-12-10 10:53
[STM32F401-DISCO开发板]实验一、STM32F401 DISCO开发板介绍,点亮LED
( }. p  i5 {) I* U  X" d[STM32F401-DISCO开发板]实验二、驱显黑白LCD_6903,串口调试* W" }. {* M) S5 h2 Q! B: T

! T0 v4 R, `, l' T# Y2 l7 |/ ?* {$ m
3 d3 X& R7 S" }; [4 Q
本实验较为简单,设置2论ADC采样和2路PWM输出,并且显示在LCD上同时从串口输出数据。
' u0 p. b  j: k4 B6 F0 I( A6 b定义对象:- I9 w* l4 [4 s+ U' \
AnalogIn adc0(PA_4);! U0 G, l+ _2 q# \
AnalogIn adc1(PA_5);! }- c# A( ^9 w1 a. d! E
PwmOut pwm0(PA_10);
5 ]2 P' a; L- }& H2 K7 e& kPwmOut pwm1(PA_8);
: g3 {' m  c/ q- @4 l' a1 HTicker tick;//Time Interupt Clock9 l: A2 f! h8 M) o
//DigitalOut led(LED1);& v4 a3 S% c; \4 N, v
Serial sout(PA_2,PA_3);//(USBTX, USBRX);1 l* i7 I! Z( j  p$ W) E
定义显示函数:
. U$ b+ p2 I% t( k+ j5 W8 Zvoid dispBase(void);
) r( A7 I8 X9 ]+ F; u+ \! vvoid dispMes(void);
3 W, y7 x9 E5 `8 Y$ M定义变量:
% |* O+ S: G& R( Y" S//DEFINE VARIABLE4 Q  U& w: M. }5 N. p( S' j2 e- s
int32_t jsq;
3 V  U; I& O- b* J* e2 ^float val0,val1,dut0=0.330f,dut1=0.450f,ddu0=0.003f,ddu1=0.002f;1 Y" E- m" m0 ?, X2 d
int pdir0=1,pdir1=1,twAddr1=0xBC,twAddr2=0xBB;# r! @- ^) c1 w0 f. F& J
char twData[2]={0,0};
! W% g7 G9 y% l" f% l定义中断Tick实现程序计数器:
, w& r0 m$ {$ h; Bvoid tipInt(void){jsq++;}
0 c, b% c5 w  Z5 P$ d0 N( M! ?, @定义GPIO[仅仅PWM周期]:' ]/ b, [# G4 r
void ioInit(void){
: y: h% X! i2 K( \; p/ p$ A" p% _+ b pwm0.period(0.003f);//pwm0) `# e7 M1 d0 R2 c% Y7 X
pwm1.period(0.004f);//pwm1
1 D+ v8 g( O/ m& W, v$ B}
5 g; N* a3 O- [7 umain函数:
, E( ~$ A, H* zint main(){# E% n% O, ~! H  ]; I
ioInit();
$ }/ D& ~! L+ g lcdInit();; e2 v. ]$ e" \" C; x- i. B2 @5 d
lcdClear();
7 T. d1 m5 q3 i# ]$ Z dispBase();6 ?4 }5 X$ c) _% e2 k1 I8 W% W
tick.attach(&tipInt,0.005f);
) C2 V) K  g7 i% f* f- U8 b0 { sout.printf("TEST 2ADC 2PWM a LCD Display\n\r");
8 v" H! @1 E: S9 Y8 O/ k/ C while(true){+ r( `9 |5 S! z' A7 D
  val0=adc0.read();) [3 {) q9 l1 _. g: _
  val1=adc1.read();2 B3 N' n( ]9 b, r& l
  if(dut0>0.810f){pdir0=0;};if(dut0<0.180f){pdir0=1;}+ F2 z8 C& g6 C8 b8 l$ V( i( L
  if(pdir0==0){dut0 -=ddu0;};if(pdir0==1){dut0 +=ddu0;}
; ?' X( B# t3 x+ y: R  pwm0=dut0;
0 Z% F6 C# n0 l3 A3 W5 G5 t$ O# l  if(dut1>0.610f){pdir1=0;};if(dut1<0.160f){pdir1=1;}6 t' \5 w4 v( T9 I( p' y1 S3 ~4 g7 e
  if(pdir1==0){dut1 -=ddu1;};if(pdir1==1){dut1 +=ddu1;}# s6 T) D2 q: W( r, k& a* C
  pwm1=dut1;2 b- H$ Q6 g5 A& C2 j+ C1 o5 h$ I
  //i2c.read(twAddr1,twData,2);
( Y& f" q; j8 L1 [, E7 c" S: i; o  if((jsq/5)%5==1){dispMes();}
; J7 H4 E, i& M; i% N  sout.printf("ADC1=%0.4f ADC2=%0.4f PWM1=%0.3f PWM2=%0.3f ",val0,val1,dut0,dut1);4 J* ]: n; l+ w2 m* Y3 Q1 F: L0 Y
  sout.printf("DATA0:%d DATA1:%d \n\r",twData[0],twData[1]);
7 U/ b( d, S( w* [- Z# C0 N  Z  //led=!led;
0 d8 v/ d- Z* K1 ?- w1 U: @  //wait(0.05);
7 h" J# x5 q  }! p" L }
% M) j  y+ D  Z6 D}* u0 u7 k1 ^; {! f/ d
显示固定字符函数:2 H5 I7 F+ b) H' `" H1 p7 e
//Display Base Meseger  O$ K3 ^0 g' t( {, d2 b# f
void dispBase(void){/ A5 Z4 @& M! B% O3 i; c
c2l(0,0,19);c2l(1,0,28);c2l(2,0,26);c2l(3,0,40);//JSQ:+ ~6 q6 ~" B. Q' \" z3 @' T/ R) y1 w
c2l(0,1,10);c2l(1,1,13);c2l(2,1,0);c2l(3,1,40);//AD0:
) m# N& B+ ~+ o0 o: ? c2l(9,1,10);c2l(10,1,13);c2l(11,1,1);c2l(12,1,40);//AD1:) _3 G* J  V% w7 N+ A
c2l(0,2,25);c2l(1,2,32);c2l(2,2,0);c2l(3,2,40);//PW0:& j* @6 X/ s; d8 U
c2l(9,2,25);c2l(10,2,32);c2l(11,2,1);c2l(12,2,40);//PW1:
1 M* t6 i# L* N. C8 F; @+ x" f c2l(0,3,29);c2l(1,3,14);c2l(2,3,22);c2l(3,3,40);//TEM:4 F4 g7 n' u% C, T! y& ?8 J  [! a
c2l(9,3,17);c2l(10,3,30);c2l(11,3,22);c2l(12,3,40);//HUM:
- E& V+ n6 Y. B9 E, O  y- P% q8 N5 K}
2 V2 r6 t' m/ g# Q) s显示采样和PWM输出计数器输出数据:
2 M% Z3 C6 [6 ], c& m: V5 F//Display Messeg, k6 f- m9 u8 t7 w9 g4 O4 }. S3 r9 N
void dispMes(void){# Z! X8 x5 N4 G- r& ^
c2l(4,0,(jsq/1000000)%10);c2l(5,0,(jsq/100000)%10);c2l(6,0,(jsq/10000)%10);c2l(7,0,(jsq/1000)%10);//JSQ:9 G. X  H: ^- l5 y) Z
c2l(8,0,(jsq/100)%10);c2l(9,0,(jsq/10)%10);c2l(10,0,(jsq)%10);//JSQ:
& b" B. H1 x- e; _6 z c2l(4,1,int(val0*10)%10);c2l(5,1,int(val0*100)%10);c2l(6,1,int(val0*1000)%10);c2l(7,1,int(val0*10000)%10);//ad0
! B( B" C) E2 C c2l(13,1,int(val1*10)%10);c2l(14,1,int(val1*100)%10);c2l(15,1,int(val1*1000)%10);c2l(16,1,int(val1*10000)%10);//ad0
' W/ ?0 @4 K1 Y/ r6 D- @; o c2l(4,2,int(dut0*10)%10);c2l(5,2,int(dut0*100)%10);c2l(6,2,int(dut0*1000)%10);+ E" c8 C- V( ?) i
c2l(13,2,int(dut1*10)%10);c2l(14,2,int(dut1*100)%10);c2l(15,2,int(dut1*1000)%10);
* J, b0 C: @* x9 |2 E: ?7 P c2l(4,3,(twData[0]/100)%10);c2l(5,3,(twData[0]/10)%10);c2l(6,3,(twData[0])%10);
0 g& w- U' B3 n0 l, ~) t c2l(13,3,(twData[1]/100)%10);c2l(14,3,(twData[1]/10)%10);c2l(15,3,(twData[1])%10);
! M' d3 E& `" T2 y) X}
0 }4 c; w* I( k- n6 p6 l. Y编译后下载运行结果见照片和截图。照片31为硬件连接;照片32为LCD显示结果;照片33为PWM控制2个LED轮流渐亮暗;截图34为牟尼出口输出的ADC和PWM数据。' U( z* Q1 q- r) K" Y8 r

31

31

32

32

33

33

34

34
收藏 评论4 发布时间:2017-12-10 10:53

举报

4个回答
anywill 回答时间:2017-12-10 13:30:10
继续点赞
浪花雷雨 回答时间:2017-12-11 09:03:58
赞,很不错
wolfgang 回答时间:2017-12-11 21:09:39
很不错~~
stm32f107 回答时间:2018-7-5 09:55:13
不错
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版