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

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

[复制链接]
zhjb1 发布时间:2017-12-12 08:52
本实验采用官方提供的案例程序,经过修改将数据显示在LCD屏幕上,为了省事,渐亮采用源码。改动不大,具体如下:9 x, Z, c# z4 b( @) c3 E5 W( D
首先打开stm32f401_discovery.h文档,更改和增加以下内容:5 z) j- ^7 |2 S3 s/ _2 r& I6 K! o
定义led对象:
' P' i9 k! R1 Y2 T, n9 q2 U9 ftypedef enum
  j/ C: P' n1 t{
* `7 }8 U% O) U  LED4 = 0,
) `0 X4 M$ Z8 C  E  LED3 = 1,, @3 s2 Y* x: D: V
  LED5 = 2,
1 ?, H8 L9 _) b8 x% O1 |! w  LED6 = 3,
7 D! m7 m" ~( S& I0 D& y  LCDVDD = 4,
6 P/ l8 k7 }/ G3 u9 @  LCDSDA = 5,5 q7 R% r0 l" r* M- ~
  LCDSCL = 6,
' j7 n- _1 [) G  LCDSRE = 7,
+ s, i. d/ H6 R0 O  LCDSRG = 8
. C/ \* \; g# Z: Q} Led_TypeDef;
1 v* Q6 e  E! T) A* P! T# gleds属性定义:9 v, S8 f# G4 B' o
#define LEDn                             9
; Q( F+ ~9 r2 y9 i5 s1 W2 Z0 E& Z#define LED4_PIN                         GPIO_Pin_12" J, h9 }1 U+ d! c
#define LED4_GPIO_PORT                   GPIOD3 A8 J4 S) b/ _, Y6 O
#define LED4_GPIO_CLK                    RCC_AHB1Periph_GPIOD  
% B# u+ u4 b# m8 B$ Z  , `2 H  l% S! t) j# m
#define LED3_PIN                         GPIO_Pin_13
( c5 D) h' y8 X#define LED3_GPIO_PORT                   GPIOD
& \, o0 f5 Z; [; [) n* n( o#define LED3_GPIO_CLK                    RCC_AHB1Periph_GPIOD  - x% [* x4 H. d3 o# i) ^' ?: e1 U: w
  , Y9 K5 B# A% Z* E
#define LED5_PIN                         GPIO_Pin_14* I' ~# z- {- [% }2 G+ z' j: \
#define LED5_GPIO_PORT                   GPIOD. n6 r* K4 i% @" `$ \
#define LED5_GPIO_CLK                    RCC_AHB1Periph_GPIOD  9 E/ p( b0 b/ ?& |, f
  1 {8 |5 T* P# F2 B: v: F; {3 L  B
#define LED6_PIN                         GPIO_Pin_153 g( N* f0 f: `& m' J  g
#define LED6_GPIO_PORT                   GPIOD# x" M9 @: Q1 w+ w& e
#define LED6_GPIO_CLK                    RCC_AHB1Periph_GPIOD
; l# W! N. Q8 L/ W/ L4 ]#define LCDVDD_PIN                       GPIO_Pin_7//此引脚第一位高电平,为ks0713专用+ [# e. f5 y. i* m2 n  B- V4 d; Q
#define LCDVDD_GPIO_PORT                 GPIOE
' Q2 Z# B$ h3 y( ]$ `#define LCDVDD_GPIO_CLK                  RCC_AHB1Periph_GPIOE
. _" H6 S& E" j; g# b( U#define LCDSDA_PIN                       GPIO_Pin_15
9 `  }% h. u- j6 U9 W#define LCDSDA_GPIO_PORT                 GPIOE
& c  p" V9 j1 t" M#define LCDSDA_GPIO_CLK                  RCC_AHB1Periph_GPIOE
  n2 C2 p5 P* t9 G  - N" Y" @) l+ i5 J1 L! h( X
#define LCDSCL_PIN                       GPIO_Pin_130 @& O: d/ a1 D1 {" Q% F
#define LCDSCL_GPIO_PORT                 GPIOE
  d" `' k- t& t0 k- m#define LCDSCL_GPIO_CLK                  RCC_AHB1Periph_GPIOE
2 E6 ~  K4 v& V. u6 ^1 A1 @, c  
4 T3 H  @' U* m7 [. L#define LCDSRG_PIN                       GPIO_Pin_11
% [8 o. d5 B% C; \9 b8 h, M#define LCDSRG_GPIO_PORT                 GPIOE
1 Z/ ~8 _# g' ^3 F, [: |* g#define LCDSRG_GPIO_CLK                  RCC_AHB1Periph_GPIOE 7 I1 a0 N: k- v4 D' a9 ]; @
#define LCDSRE_PIN                       GPIO_Pin_97 {, m& q4 |  ^5 T8 |8 {
#define LCDSRE_GPIO_PORT                 GPIOE
; e) K3 [& W- |+ I2 p: F! X8 n& ]#define LCDSRE_GPIO_CLK                  RCC_AHB1Periph_GPIOE' C: A5 D; }1 y
而后打开stm32f401_doscover.c,更改以下内容:
6 r# `6 F& e/ ]* I2 H) @+ RGPIO_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};" c" |* U& }8 A; r8 x
const uint16_t GPIO_PIN[LEDn] = {LED4_PIN, LED3_PIN, LED5_PIN,LED6_PIN,LCDVDD_PIN,LCDSDA_PIN,LCDSCL_PIN,LCDSRE_PIN,LCDSRG_PIN};
) }- w- ^( T& N7 Q: uconst 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};
8 s4 _9 q# w) A+ J( t2 G9 n8 T: H# Y之后打开主函数main.cpp
# I3 K- n. c& t# ^3 {* Q' g4 K增加include文件:7 H3 d& ~# y" K8 s, r
#include "6903.h"9 l; a) ~8 y9 z1 P# n$ ^! ?4 A
增加函数定义:7 C; ~/ }9 b4 p) I: }2 E7 l
void delay(int counter);) Y7 v6 Q# F8 f. m1 o
void dispBase(void);" r0 v1 r5 X* t' J) _( N5 W5 X# @' N
void dispMes(void);
: g) K: n: B* _0 O* X3 n  ~void ioInit(void);! F) x: E" m/ w* c- q0 V, j
增加自定义变量:/ o3 F5 t- _+ P3 U: I& {
int32_t jsq;4 E. s: R2 U) C
//float ;9 W* F, ~# y1 r2 {( n2 d+ w
int pdir0=1,pdir1=1,twAddr1=0xBC,twAddr2=0xBB,k=0,graX,graY,val0,val1,val2,val3,k;) j7 o. t! b8 `" ~) b8 s
增加4个函数:( d6 N5 z8 R" O  [
//Delayer
' B, _" L& I+ N4 Y1 M! Lvoid delay(int counter){
( V( v# ]- Z1 Y% i3 j) y  [ int i,j;
! [, e3 i% ~5 H for(i=0;i<counter;i++){for(j=0;j<i;j++){;}}4 K" ^' z* T( d. O7 N- x+ E( K
}
, b0 b, z& e) }8 W9 s//GPIO Initial5 ~2 X7 @+ [' g* a" i
void ioInit(void){
/ {4 |7 v# h* R! [" }' N8 ? STM_EVAL_LEDInit(LED3);
* Z( q; c  |2 j* Y# \# b2 b5 J9 J STM_EVAL_LEDInit(LED4);8 A" G8 B# O" Z# P
STM_EVAL_LEDInit(LED5);0 k: c9 b6 B' g' q) Q3 f
STM_EVAL_LEDInit(LED6);
% Y. U+ |$ o7 H8 o6 W: o STM_EVAL_LEDInit(LCDVDD);  Y4 M+ m) t  m3 V4 j* \# _
STM_EVAL_LEDInit(LCDSDA);$ Y) {1 C% R* v" |4 Z+ K
STM_EVAL_LEDInit(LCDSCL);
. N. X: Q! C+ y$ h7 [/ q STM_EVAL_LEDInit(LCDSRE);
% |, X& ]! p) f& l1 f STM_EVAL_LEDInit(LCDSRG);, A( @' l4 {- P; a- H) r0 O( _2 F4 ^
STM_EVAL_LEDOn(LCDVDD);
. }. g1 z1 |" \9 Z9 }- K}) }4 F* V$ D( z4 B+ E
//Display Base Meseger
! h! U0 ?' G% z8 Dvoid dispBase(void){! T5 I9 T6 c  e  C  c0 l
c2l(0,0,19);c2l(1,0,28);c2l(2,0,26);c2l(3,0,40);//JSQ:5 M! }/ L/ H: a! P. ]' E. v4 A7 S$ b
c2l(0,1,16);c2l(1,1,33);c2l(2,1,40);//c2l(1,3,40);//GX:
) @& c. @0 s5 E/ ~6 n0 z c2l(9,1,16);c2l(10,1,34);c2l(11,1,40);//c2l(1,12,40);//GY:2 u: a: B" v8 }7 s: q3 C
c2l(0,2,16);c2l(1,2,35);c2l(2,2,40);//c2l(2,3,40);//PW0:
  z7 R- i1 C8 d5 V8 b c2l(9,2,16);c2l(10,2,10);c2l(11,2,40);//c2l(2,12,40);//PW1:* z$ X7 F7 x/ ?9 w. z9 ^; l
//c2l(0,3,29);c2l(1,3,14);c2l(2,3,22);c2l(3,3,40);//TEM:! i# @% Z; `+ l1 d5 t5 A
//c2l(9,3,17);c2l(10,3,30);c2l(11,3,22);c2l(12,3,40);//HUM:
( ]+ w' w% ~# z8 `}3 W2 i) Z: I% i# z0 ?2 s
//Display Messeg2 u0 v" E3 g% G& K' @+ V3 w) o
void dispMes(void){, @6 S$ Q: {# e$ M/ x. S% K: X
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:
& e3 k8 x, H) b c2l(8,0,(jsq/100)%10);c2l(9,0,(jsq/10)%10);c2l(10,0,(jsq)%10);//JSQ:! _2 `) U/ p' r2 F" ?
if(val0>0)c2l(3,1,38);else c2l(3,1,39);val0=ABS(val0);
) \8 P& C) v1 K3 b8 a' [: N/ A' a/ _ c2l(4,1,(val0/100)%10);c2l(5,1,(val0/10)%10);c2l(6,1,(val0)%10);//c2l(1,7,(val2)%10);//X3 {- v. G' p$ [' Y0 }) z9 W
if(val1>0)c2l(12,1,38);else c2l(12,1,39);val1=ABS(val1);0 l: m0 }% ~) i& U
c2l(13,1,(val1/100)%10);c2l(14,1,(val1/10)%10);c2l(15,1,(val1)%10);//c2l(1,16,(val3)%10);//Y
, I/ q. Z4 B, ^& M7 p( G% A1 W if(val2>0)c2l(3,2,38);else c2l(3,2,39);val2=ABS(val2);' J8 ?! [( W& q' ^
c2l(4,2,(val2/100)%10);c2l(5,2,(val2/10)%10);c2l(6,2,(val2)%10);//c2l(2,7,(val0)%10);//Z
4 S/ l; [1 e1 E/ G) Y if(val3>0)c2l(12,2,38);else c2l(12,2,39);val3=ABS(val3);4 x7 Q! M! w, `* e! o
c2l(13,2,(val3/100)%10);c2l(14,2,(val3/10)%10);c2l(15,2,(val3)%10);//c2l(2,16,(val1)%10);//第4个变量——实际永远为0
* o  f  z3 c8 f8 s+ E}
  p' \! Y, V- B# M- u0 h( X
( G2 K' ?4 L0 i/ P& F编译下载运行结果见视频:41-3轴加速度计L3GD20采样实验
) f/ z$ U( G7 k& P# h
) S6 w1 I" `) A& z+ f7 u
* n( x( i9 X8 Y* {$ V9 a. \6 b! g
赞 收藏 评论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

- s; ]) n1 F' y谢谢!80元买的板子不玩玩也对不起她。

所属标签

相似技术帖

官网相关资源

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