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

[STM32F401-DISCO开发板]实验四、3轴加速度计L3GD20采样实验

[复制链接]
zhjb1 发布时间:2017-12-12 08:52
本实验采用官方提供的案例程序,经过修改将数据显示在LCD屏幕上,为了省事,渐亮采用源码。改动不大,具体如下:& N. Y* ^+ |) G0 z2 a, r
首先打开stm32f401_discovery.h文档,更改和增加以下内容:! ?) r! G9 @# Y, v2 ^/ Z1 q1 c8 j
定义led对象:5 O: L! O; @) x: W& m/ ~
typedef enum
2 }/ Q' u, }7 o; D+ Q- @# [$ _{! M* A: `4 |4 D
  LED4 = 0,
: o" V0 M; |: K: v& W' Z9 M  LED3 = 1,
! Z& _' Z8 _# ?& G. l  LED5 = 2,* z, G* L( _# |+ k7 V$ t! z2 n2 X
  LED6 = 3,
% @3 Y- j6 u9 N* c) m  LCDVDD = 4,
* n2 Z% O0 y  e6 s+ ~  LCDSDA = 5,
' p6 Q5 j- k& i1 M) r2 j& o  LCDSCL = 6,. i3 W6 K, g2 V/ \! t
  LCDSRE = 7,
+ r4 V  q: \1 E: G$ L4 j8 q  LCDSRG = 8" Z! Q3 y* a0 F6 y
} Led_TypeDef;: @: e2 ~/ _5 @0 E( i
leds属性定义:
% s1 g% w9 n' r; H1 Z4 k/ o, F#define LEDn                             9
# I% h( [$ l3 m- i* d- U#define LED4_PIN                         GPIO_Pin_12
6 t3 D0 M7 `2 j2 |) S#define LED4_GPIO_PORT                   GPIOD( l1 ?$ |% K1 X/ H6 k
#define LED4_GPIO_CLK                    RCC_AHB1Periph_GPIOD  7 V: U3 W% \: c8 E+ Q- O
  
; V7 ^6 B5 }1 {. {( t#define LED3_PIN                         GPIO_Pin_13
% [% e, R( H0 A5 f# T#define LED3_GPIO_PORT                   GPIOD) j( c0 a) \) h1 m0 W" m( @
#define LED3_GPIO_CLK                    RCC_AHB1Periph_GPIOD  # U2 y: o! }2 \- p
  % t) x0 Y5 @/ v, u* r
#define LED5_PIN                         GPIO_Pin_14% e2 i+ z1 n2 H+ p
#define LED5_GPIO_PORT                   GPIOD
8 |# Y7 x3 e, ~7 g: r#define LED5_GPIO_CLK                    RCC_AHB1Periph_GPIOD  
: T1 s, v9 G, \, W  
: Y& l( E; v( k: S#define LED6_PIN                         GPIO_Pin_15
- `2 K; ~: f8 p, J& e1 ^1 w#define LED6_GPIO_PORT                   GPIOD
: v6 }# y. T# |- Y: ]# o#define LED6_GPIO_CLK                    RCC_AHB1Periph_GPIOD
4 R  N! E: h: A8 ^#define LCDVDD_PIN                       GPIO_Pin_7//此引脚第一位高电平,为ks0713专用7 ~) M# T: B3 x, S& N1 }1 y
#define LCDVDD_GPIO_PORT                 GPIOE
& m  s6 a8 }$ r#define LCDVDD_GPIO_CLK                  RCC_AHB1Periph_GPIOE' Q+ i1 c$ x& Y: Q
#define LCDSDA_PIN                       GPIO_Pin_15- u9 y* J4 T1 p2 D& ^7 l
#define LCDSDA_GPIO_PORT                 GPIOE+ g  s/ N6 x( N: n$ z4 C
#define LCDSDA_GPIO_CLK                  RCC_AHB1Periph_GPIOE& ~. w7 V* F" ]6 G1 e
  
5 a4 R$ `( P  N# b! M6 Y# a#define LCDSCL_PIN                       GPIO_Pin_13
) U) \3 S$ {) H1 p" C1 ^#define LCDSCL_GPIO_PORT                 GPIOE
$ Y" X  B( L6 a5 L7 W8 l/ J#define LCDSCL_GPIO_CLK                  RCC_AHB1Periph_GPIOE ; d1 X8 R# U0 Y1 g, l
  * a5 V# F: t4 X: r! h
#define LCDSRG_PIN                       GPIO_Pin_11
4 t6 `2 {7 c1 G8 o4 \* ~#define LCDSRG_GPIO_PORT                 GPIOE. p/ \4 [5 m& t- Z
#define LCDSRG_GPIO_CLK                  RCC_AHB1Periph_GPIOE 1 Z& l+ B# u; N' w
#define LCDSRE_PIN                       GPIO_Pin_9# Q! e$ D$ u( x4 Z! f3 I
#define LCDSRE_GPIO_PORT                 GPIOE
. X- N, F9 E/ y+ L#define LCDSRE_GPIO_CLK                  RCC_AHB1Periph_GPIOE
' C. b9 m- ]/ T! I- L/ D' c而后打开stm32f401_doscover.c,更改以下内容:
# ?# P) o$ s" m/ bGPIO_TypeDef* GPIO_PORT[LEDn] = {LED4_GPIO_PORT,LED3_GPIO_PORT,LED5_GPIO_PORT,LED6_GPIO_PORT,LCDVDD_GPIO_PORT,LCDSDA_GPIO_PORT,LCDSCL_GPIO_PORT,LCDSRE_GPIO_PORT,LCDSRG_GPIO_PORT};  `5 ~" v; i9 `) Q3 d4 L/ w
const uint16_t GPIO_PIN[LEDn] = {LED4_PIN, LED3_PIN, LED5_PIN,LED6_PIN,LCDVDD_PIN,LCDSDA_PIN,LCDSCL_PIN,LCDSRE_PIN,LCDSRG_PIN};
) P) h; R, j  }; aconst uint32_t GPIO_CLK[LEDn] = {LED4_GPIO_CLK,LED3_GPIO_CLK,LED5_GPIO_CLK,LED6_GPIO_CLK,LCDVDD_GPIO_CLK,LCDSDA_GPIO_CLK,LCDSCL_GPIO_CLK,LCDSRE_GPIO_CLK,LCDSRG_GPIO_CLK};' @; F2 r1 x& N% G) b: F* }5 K; h
之后打开主函数main.cpp
/ v, e5 u+ o3 m& Z1 w- g4 Y增加include文件:# c# u0 D2 f* j9 O- ^, i
#include "6903.h"; c; o3 @7 f, t% A# n, k/ M6 P1 s
增加函数定义:
9 m/ g1 j9 Q% [! Z' Svoid delay(int counter);
+ |6 w5 n* U3 B' K8 ~- B7 jvoid dispBase(void);
$ t, V/ a* [; T4 F+ b; u: W! kvoid dispMes(void);4 |4 C& \# D% {3 ]% f
void ioInit(void);8 }# a- J' S) K# Z3 D
增加自定义变量:1 S& s$ m2 X  g- N  H
int32_t jsq;' B! i1 G! q& t/ |
//float ;; _- Z+ ?! m$ O5 r" w# h; \( Y
int pdir0=1,pdir1=1,twAddr1=0xBC,twAddr2=0xBB,k=0,graX,graY,val0,val1,val2,val3,k;$ ~4 H$ Z6 Y: P
增加4个函数:
- Z) q5 D( d% \' z9 V1 H' y, c8 z//Delayer& U) t& g) T* A+ _! F: S5 x2 W' d
void delay(int counter){7 g7 o' c% n3 N- O1 V9 U
int i,j;
( e9 d% @4 {7 ~& [( W2 \ for(i=0;i<counter;i++){for(j=0;j<i;j++){;}}
* c  x3 k. R# w7 n( ^4 I}) k* m0 b: I% Q  b  Y0 \
//GPIO Initial  `4 a$ O* v1 Z! ]" V+ t' W
void ioInit(void){6 ~0 m4 o7 u: y( @
STM_EVAL_LEDInit(LED3);4 e; ~; W# d2 A3 }9 F* B% K3 A
STM_EVAL_LEDInit(LED4);
! R  U' W9 U/ N; F5 S! ` STM_EVAL_LEDInit(LED5);7 K" n" W; L. L% U" G6 u; _8 q
STM_EVAL_LEDInit(LED6);
; x' [( }" {' n2 T" C STM_EVAL_LEDInit(LCDVDD);9 K9 ]& @& d7 {# L
STM_EVAL_LEDInit(LCDSDA);% j8 P# S' r4 P* x; R7 X
STM_EVAL_LEDInit(LCDSCL);" V; R. O& Z" e- V& M3 s/ N9 j
STM_EVAL_LEDInit(LCDSRE);- s5 U; d" P9 T( ~  c
STM_EVAL_LEDInit(LCDSRG);
: T5 u. f$ F' C' K2 [" F( H STM_EVAL_LEDOn(LCDVDD);
, _- j6 h6 ]. `1 p. V9 w- S( E& ]/ m}3 e! s, V5 V# v& n4 |+ |
//Display Base Meseger$ P3 K9 M' T; p3 x
void dispBase(void){
8 F! w- P5 }6 s! _# O# V. q c2l(0,0,19);c2l(1,0,28);c2l(2,0,26);c2l(3,0,40);//JSQ:
4 G9 N# g9 v( V+ p) ]! t& S) |* k, L c2l(0,1,16);c2l(1,1,33);c2l(2,1,40);//c2l(1,3,40);//GX:7 K" [$ n  ^! _$ S! c0 R6 Z
c2l(9,1,16);c2l(10,1,34);c2l(11,1,40);//c2l(1,12,40);//GY:
' X3 s) X9 `$ `& u7 ~ c2l(0,2,16);c2l(1,2,35);c2l(2,2,40);//c2l(2,3,40);//PW0:
' f) {9 i. B! d c2l(9,2,16);c2l(10,2,10);c2l(11,2,40);//c2l(2,12,40);//PW1:
7 [" `1 b" ?/ s" t- J% Z //c2l(0,3,29);c2l(1,3,14);c2l(2,3,22);c2l(3,3,40);//TEM:+ B  F0 t  w! C: f! j, A( G
//c2l(9,3,17);c2l(10,3,30);c2l(11,3,22);c2l(12,3,40);//HUM:
$ e% K3 _1 S5 A% y}5 C  E" s$ w, J% h6 k
//Display Messeg, B8 |; x, r- E! s9 J4 W
void dispMes(void){
  m* n, i2 N# ] 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:: N2 Y0 S% ?5 w0 O* c  I! y# L, l
c2l(8,0,(jsq/100)%10);c2l(9,0,(jsq/10)%10);c2l(10,0,(jsq)%10);//JSQ:
; B: E2 }+ P; }$ S if(val0>0)c2l(3,1,38);else c2l(3,1,39);val0=ABS(val0);! y# i+ }: E& a9 I
c2l(4,1,(val0/100)%10);c2l(5,1,(val0/10)%10);c2l(6,1,(val0)%10);//c2l(1,7,(val2)%10);//X3 K6 n) c1 E! S7 _$ G
if(val1>0)c2l(12,1,38);else c2l(12,1,39);val1=ABS(val1);
" U# `7 _. X& W4 T c2l(13,1,(val1/100)%10);c2l(14,1,(val1/10)%10);c2l(15,1,(val1)%10);//c2l(1,16,(val3)%10);//Y
$ A2 D: W1 M4 c if(val2>0)c2l(3,2,38);else c2l(3,2,39);val2=ABS(val2);
  A* l$ z; @( r7 K& Z c2l(4,2,(val2/100)%10);c2l(5,2,(val2/10)%10);c2l(6,2,(val2)%10);//c2l(2,7,(val0)%10);//Z
+ G0 r( T0 ^; D3 p0 N" Z8 L3 r if(val3>0)c2l(12,2,38);else c2l(12,2,39);val3=ABS(val3);9 d0 Y( h" y4 h( ^1 v! d
c2l(13,2,(val3/100)%10);c2l(14,2,(val3/10)%10);c2l(15,2,(val3)%10);//c2l(2,16,(val1)%10);//第4个变量——实际永远为0
/ l3 ?% P- f! Q1 n3 E; E+ r# n}
9 M# Q# [% l2 G/ N2 A: f
5 G* A! \# Z! ]编译下载运行结果见视频:41-3轴加速度计L3GD20采样实验
- d& X9 m+ R. F3 l5 B8 ^9 o% p1 e6 Z1 h8 e. s
/ I1 G. W7 v) h% |2 w2 R
收藏 评论3 发布时间:2017-12-12 08:52

举报

3个回答
anywill 回答时间:2017-12-12 08:59:44
大赞
liming-367095 回答时间:2017-12-19 10:25:45
学习了
zhjb1 回答时间:2017-12-19 16:01:30
liming-367095 发表于 2017-12-19 10:25  u2 H) Z' h: B' F1 Z5 k- u" E
学习了
# N# S8 }, G& `, q/ Z" p8 t
谢谢!80元买的板子不玩玩也对不起她。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版