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

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

[复制链接]
zhjb1 发布时间:2017-12-12 08:52
本实验采用官方提供的案例程序,经过修改将数据显示在LCD屏幕上,为了省事,渐亮采用源码。改动不大,具体如下:1 |5 y0 E+ _/ H; G1 Y; @2 v
首先打开stm32f401_discovery.h文档,更改和增加以下内容:& D0 W  U0 Z" K
定义led对象:! V2 n; t) q$ P4 `4 W6 J
typedef enum
: C7 M/ B5 K7 f; n{6 P1 b+ S. g" L9 ^- R, O
  LED4 = 0,0 [* d6 W) g% _7 W, q7 ^5 V
  LED3 = 1,5 {# p8 U: W0 O5 B: w
  LED5 = 2,
( X5 W. j# i- m  LED6 = 3,/ m; M8 B3 _) a$ |
  LCDVDD = 4,
/ W* B  r: |$ g" j) M6 x$ q$ G  LCDSDA = 5,
; g- J; f4 D/ g+ W# q  LCDSCL = 6,3 r- k6 T2 k0 u2 A* |% C. F1 w+ e0 K
  LCDSRE = 7,. \5 U3 G% e- h, R( b- o
  LCDSRG = 8
* s: p1 d0 t7 D$ ^! z; W+ N3 J1 p2 c} Led_TypeDef;& D: W6 R, m6 Z' E
leds属性定义:% R% c8 K+ ~; N( {4 i" c% \+ u
#define LEDn                             9$ [; F+ Y1 ]0 `# _6 v5 |
#define LED4_PIN                         GPIO_Pin_12
% ^: s$ U5 S: X$ I/ y% c#define LED4_GPIO_PORT                   GPIOD% e( D, j9 \7 ^; U9 z* I- }8 v3 S
#define LED4_GPIO_CLK                    RCC_AHB1Periph_GPIOD  
% d" b6 g  w5 O& u: Y, B+ u  
4 U$ ^1 K8 ^* J+ w0 B) H# v#define LED3_PIN                         GPIO_Pin_13
) J6 M+ G9 P$ T# s3 x$ T* I' n#define LED3_GPIO_PORT                   GPIOD
4 t& b: J% d  ^5 ]& y$ m#define LED3_GPIO_CLK                    RCC_AHB1Periph_GPIOD  ; n' k9 R. I" X7 v
  
& m8 ^  n% Y) \#define LED5_PIN                         GPIO_Pin_14
/ |5 f6 _1 H" p#define LED5_GPIO_PORT                   GPIOD
0 w* B! N+ D$ d3 I9 g! s#define LED5_GPIO_CLK                    RCC_AHB1Periph_GPIOD  
' T9 B1 t' G6 J% V$ y6 z$ M$ O; U% f  / c; z) C% O* A
#define LED6_PIN                         GPIO_Pin_15, A3 T0 M5 L( T& B% C' S
#define LED6_GPIO_PORT                   GPIOD$ j! L! A# E& v' g: @+ s
#define LED6_GPIO_CLK                    RCC_AHB1Periph_GPIOD: e% E# X1 ~1 Z3 R0 \
#define LCDVDD_PIN                       GPIO_Pin_7//此引脚第一位高电平,为ks0713专用  W9 Z" K6 P- l+ W  A5 X
#define LCDVDD_GPIO_PORT                 GPIOE
6 s9 q& _- h/ E#define LCDVDD_GPIO_CLK                  RCC_AHB1Periph_GPIOE
; d  X% O/ t4 k: \#define LCDSDA_PIN                       GPIO_Pin_15) i% `2 C+ u+ y- |. s: i  g3 w" H
#define LCDSDA_GPIO_PORT                 GPIOE
5 |, [% g; T$ W/ Q2 \* A#define LCDSDA_GPIO_CLK                  RCC_AHB1Periph_GPIOE2 v! F7 N- h: V' O8 e
  
, P# x7 v- ?6 D) ~5 C, E. b#define LCDSCL_PIN                       GPIO_Pin_13) h6 F0 H5 i2 b; f$ G
#define LCDSCL_GPIO_PORT                 GPIOE) n% C5 W- F& {1 j# ?# F
#define LCDSCL_GPIO_CLK                  RCC_AHB1Periph_GPIOE
$ n- `) n) _4 d  
" y4 H/ o8 V) ?9 U6 P#define LCDSRG_PIN                       GPIO_Pin_11: }* h! F2 {3 b; s5 g
#define LCDSRG_GPIO_PORT                 GPIOE$ J% D. m3 ~( d$ i! h
#define LCDSRG_GPIO_CLK                  RCC_AHB1Periph_GPIOE ! p# t: e: e: q5 V! Y9 r4 @" W
#define LCDSRE_PIN                       GPIO_Pin_9
1 `) b/ R7 C0 ^  I' J#define LCDSRE_GPIO_PORT                 GPIOE3 t5 `- C6 n  v7 @
#define LCDSRE_GPIO_CLK                  RCC_AHB1Periph_GPIOE
% t0 k" T2 S8 z而后打开stm32f401_doscover.c,更改以下内容:/ a: C* c2 c! W" r, V
GPIO_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};
% Z2 P' }* X5 Zconst uint16_t GPIO_PIN[LEDn] = {LED4_PIN, LED3_PIN, LED5_PIN,LED6_PIN,LCDVDD_PIN,LCDSDA_PIN,LCDSCL_PIN,LCDSRE_PIN,LCDSRG_PIN};
  _& ]" P8 j2 l) c. U. _2 K8 J/ Gconst 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};4 o! c( h7 ?$ C4 B
之后打开主函数main.cpp
( t* }% O" q! g4 f增加include文件:% Q- F2 E1 S: G5 N7 o7 e
#include "6903.h"
( j6 O- j6 ]" e9 N+ z: S3 u8 p" m% K增加函数定义:
' q; J) q2 c7 e. p  ?void delay(int counter);
9 [* h% B5 d3 X' ?9 Mvoid dispBase(void);
* Z, `  b7 x) b  gvoid dispMes(void);
+ H, w2 P" L* M/ S1 dvoid ioInit(void);" {6 C; \" t4 @  R
增加自定义变量:
% X( r$ z2 n8 o4 `3 |, {int32_t jsq;
- [) L. ?: I# k2 F& ?//float ;
: t, \1 i6 v. ]4 X: zint pdir0=1,pdir1=1,twAddr1=0xBC,twAddr2=0xBB,k=0,graX,graY,val0,val1,val2,val3,k;
# O! D5 z" V# |4 c8 {9 v: p$ N- Y增加4个函数:
7 ]5 Q& H5 ?1 D" v//Delayer
8 k% d- B$ a4 P1 Uvoid delay(int counter){
1 ?0 U$ u- L2 }+ D& u# x+ u int i,j;
" x! I" M$ C) y; o for(i=0;i<counter;i++){for(j=0;j<i;j++){;}}
' R* _* l7 ~8 T; e6 p}, X+ Y1 n2 f; C3 @9 K
//GPIO Initial
& H" \! [/ L* m) ~: Kvoid ioInit(void){& r$ u# b0 g0 D1 ?: L8 y( ~# Q0 R8 _
STM_EVAL_LEDInit(LED3);6 K- A" K0 m) V0 r  k' f7 w
STM_EVAL_LEDInit(LED4);
7 O* [5 K; f7 }7 _/ K% v, N0 [, N8 E STM_EVAL_LEDInit(LED5);* z# G7 J0 J+ P5 Q9 p9 b
STM_EVAL_LEDInit(LED6);0 C4 X6 U, K* j" k6 Z, o( X
STM_EVAL_LEDInit(LCDVDD);
4 G1 y2 E4 z1 s' x; F5 F- C, A' E% H STM_EVAL_LEDInit(LCDSDA);  s" ]8 n0 m; e% |, Q1 C! j
STM_EVAL_LEDInit(LCDSCL);
1 c! N* j" s8 R! Y2 Z4 W. m STM_EVAL_LEDInit(LCDSRE);
' w  N) H5 R8 o# R! B STM_EVAL_LEDInit(LCDSRG);/ B1 u" Y- a6 L6 k6 e
STM_EVAL_LEDOn(LCDVDD);
0 N4 j( y0 f, x/ D) n6 s}
# f" e% t6 O" p9 S, g5 d//Display Base Meseger$ }) F# G, K+ Y" b) C
void dispBase(void){
+ }# w- @& w, D6 l9 e. c$ y" |! C c2l(0,0,19);c2l(1,0,28);c2l(2,0,26);c2l(3,0,40);//JSQ:
: P  k/ e6 \0 @5 t c2l(0,1,16);c2l(1,1,33);c2l(2,1,40);//c2l(1,3,40);//GX:
9 _( |0 [4 p! D+ C9 I c2l(9,1,16);c2l(10,1,34);c2l(11,1,40);//c2l(1,12,40);//GY:
" K3 O/ P2 n; O0 l( V+ | c2l(0,2,16);c2l(1,2,35);c2l(2,2,40);//c2l(2,3,40);//PW0:
0 g8 S, q1 `# V" b2 }4 c c2l(9,2,16);c2l(10,2,10);c2l(11,2,40);//c2l(2,12,40);//PW1:% I# i5 |0 k- _5 s, T" P
//c2l(0,3,29);c2l(1,3,14);c2l(2,3,22);c2l(3,3,40);//TEM:
7 u0 X& ], x# y6 S% Z% i. J$ y //c2l(9,3,17);c2l(10,3,30);c2l(11,3,22);c2l(12,3,40);//HUM:
- |. W- R, S: A$ B& ?5 ]7 `}
% f% e8 T) @: T, ?//Display Messeg
, G$ o& H7 }' l/ r: ^2 t' Xvoid dispMes(void){
1 m* Y( D% O( b+ ]( {( h/ I 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:' Z$ H, K) P- w7 L; ]
c2l(8,0,(jsq/100)%10);c2l(9,0,(jsq/10)%10);c2l(10,0,(jsq)%10);//JSQ:
& E( M" g( V* [# Q8 w+ ?# x: ?; w if(val0>0)c2l(3,1,38);else c2l(3,1,39);val0=ABS(val0);
. s& D, e9 Q& x" \2 ], s* c c2l(4,1,(val0/100)%10);c2l(5,1,(val0/10)%10);c2l(6,1,(val0)%10);//c2l(1,7,(val2)%10);//X
: Z( v7 }: ~/ T- Q if(val1>0)c2l(12,1,38);else c2l(12,1,39);val1=ABS(val1);
+ |; w$ j( p% D& Z c2l(13,1,(val1/100)%10);c2l(14,1,(val1/10)%10);c2l(15,1,(val1)%10);//c2l(1,16,(val3)%10);//Y; J% r, h3 D, F/ b& M% |
if(val2>0)c2l(3,2,38);else c2l(3,2,39);val2=ABS(val2);7 G) E( A- Z+ C- |% E. V
c2l(4,2,(val2/100)%10);c2l(5,2,(val2/10)%10);c2l(6,2,(val2)%10);//c2l(2,7,(val0)%10);//Z" u2 U: }* o) o( g
if(val3>0)c2l(12,2,38);else c2l(12,2,39);val3=ABS(val3);" o. j/ P; V" w! o) C4 m. X. D0 t! W
c2l(13,2,(val3/100)%10);c2l(14,2,(val3/10)%10);c2l(15,2,(val3)%10);//c2l(2,16,(val1)%10);//第4个变量——实际永远为0
1 \. ~5 \/ C) H4 k1 e- D}
/ }" R. c; K3 i7 v
* Z" }9 w" x; g# F编译下载运行结果见视频:41-3轴加速度计L3GD20采样实验$ s: a/ a( D5 ^
% Q) ~' w! I) e$ S5 u, H

% p0 _, F- p5 v/ H, h) u- D; a
赞 收藏 评论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:257 d% A. b6 @5 J: {0 ~
学习了
! f  Z5 i1 P$ C8 k
谢谢!80元买的板子不玩玩也对不起她。

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版