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

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

[复制链接]
zhjb1 发布时间:2017-12-12 08:52
本实验采用官方提供的案例程序,经过修改将数据显示在LCD屏幕上,为了省事,渐亮采用源码。改动不大,具体如下:
) A* u# c6 X; X5 a首先打开stm32f401_discovery.h文档,更改和增加以下内容:$ i8 ~( k9 _" A1 E5 T* l8 ~) v
定义led对象:+ l( s# H1 G" B
typedef enum
- Y+ T- z/ \3 }: a{
- Y5 z- J' b; A- q# x  LED4 = 0,
5 j7 N& }7 |5 Y/ d, Y2 g  LED3 = 1,+ D1 f3 ^6 l' L) B7 p
  LED5 = 2,
, J5 h) N$ g" M/ `: Q  LED6 = 3,
0 Y1 q8 i1 }. O  LCDVDD = 4,
2 s) g6 M$ y0 b. N) H4 y9 B. B" {/ Z  LCDSDA = 5,
4 e8 @- \0 f! b4 ^  I  LCDSCL = 6,9 T$ O/ ~$ i$ H: O: B' s. {
  LCDSRE = 7,
3 c4 k) }3 f, Y/ ^+ y  LCDSRG = 8/ R# s1 s& W# e8 i
} Led_TypeDef;
' ]9 i0 |6 Q) J# J* g; \leds属性定义:
: q8 j' J: O- ?/ C0 f0 `; Q0 ]#define LEDn                             9
) g" Q  E' ^: E, P0 A4 W#define LED4_PIN                         GPIO_Pin_123 n7 `# S- P  v1 b8 G4 a1 l* b! g
#define LED4_GPIO_PORT                   GPIOD
. x2 T& s- w$ m! d# m# P#define LED4_GPIO_CLK                    RCC_AHB1Periph_GPIOD  
" v: G" H$ n" I0 x7 ~  # ]: D' Q( C" w
#define LED3_PIN                         GPIO_Pin_13
9 n/ q6 X5 R- O4 d$ o#define LED3_GPIO_PORT                   GPIOD# @$ C9 f+ s- c" s9 X# t/ @2 m
#define LED3_GPIO_CLK                    RCC_AHB1Periph_GPIOD  " o  J+ \. Y- R2 T2 u1 o% ?
  9 n# `; ?: v" h  d5 r
#define LED5_PIN                         GPIO_Pin_14
& A  Y! h/ w) i0 T7 j* B/ @#define LED5_GPIO_PORT                   GPIOD
8 V  I" A# E5 @- w#define LED5_GPIO_CLK                    RCC_AHB1Periph_GPIOD  
, q+ j# X7 J1 [+ S: E  
* c- p. m# A3 h2 x: j#define LED6_PIN                         GPIO_Pin_15
+ l  ~# O. D- ~8 H2 y#define LED6_GPIO_PORT                   GPIOD  j( A& A: J* m3 D
#define LED6_GPIO_CLK                    RCC_AHB1Periph_GPIOD
/ H) A  f" N- {6 p#define LCDVDD_PIN                       GPIO_Pin_7//此引脚第一位高电平,为ks0713专用. Q; g# q, a2 C7 M
#define LCDVDD_GPIO_PORT                 GPIOE6 O9 K, _; p, u% }/ M- J; \
#define LCDVDD_GPIO_CLK                  RCC_AHB1Periph_GPIOE5 N/ h% a+ W& I+ \
#define LCDSDA_PIN                       GPIO_Pin_15: S6 I% K9 j$ r% r
#define LCDSDA_GPIO_PORT                 GPIOE
# R4 ~# h  H) u1 G9 [* e#define LCDSDA_GPIO_CLK                  RCC_AHB1Periph_GPIOE# U$ P0 h" G7 r. P* U
  + _, q& S1 D! @) a' g
#define LCDSCL_PIN                       GPIO_Pin_13- _" z# n4 ^3 I0 d% D, {' A
#define LCDSCL_GPIO_PORT                 GPIOE
9 @3 L1 S  |5 M3 ~3 \8 H5 v#define LCDSCL_GPIO_CLK                  RCC_AHB1Periph_GPIOE ) s  p9 N  G$ Y( y
  
( V4 J, c8 [! X$ _#define LCDSRG_PIN                       GPIO_Pin_11
# X# Y5 J% ]* _#define LCDSRG_GPIO_PORT                 GPIOE
" z$ I3 t0 A7 [. Z: g4 O7 z#define LCDSRG_GPIO_CLK                  RCC_AHB1Periph_GPIOE # f" O" n# F! J6 I' g
#define LCDSRE_PIN                       GPIO_Pin_9$ R( |% M1 h# f* ?' H  Z
#define LCDSRE_GPIO_PORT                 GPIOE
+ I/ A' F8 H; a; _; \& n3 d# U9 e/ U#define LCDSRE_GPIO_CLK                  RCC_AHB1Periph_GPIOE
3 b) ~. n. Z) n$ b! i, B2 C( b而后打开stm32f401_doscover.c,更改以下内容:
! l. W" ~- s! b2 YGPIO_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};: e" C6 T- d$ E. O, y. s
const uint16_t GPIO_PIN[LEDn] = {LED4_PIN, LED3_PIN, LED5_PIN,LED6_PIN,LCDVDD_PIN,LCDSDA_PIN,LCDSCL_PIN,LCDSRE_PIN,LCDSRG_PIN};
+ Y: S0 K- }, Kconst 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};
2 B9 D. F  D3 X' r  y8 W8 v之后打开主函数main.cpp7 V% }: T' p2 m, ?* A  s
增加include文件:
" X6 z& Z, n5 Y# p: j; `#include "6903.h"* {# r: A% N) K. q3 u/ z6 {
增加函数定义:
4 H* D7 m% t  G/ f9 qvoid delay(int counter);
1 _* t0 X6 g& r. i0 G) svoid dispBase(void);
& a9 D+ Z' X# G5 F0 o( z; C- I6 _8 Svoid dispMes(void);0 l( ]: C# ~( r
void ioInit(void);
; n6 _8 T0 x' w- r# h增加自定义变量:2 B$ T$ n8 T! Z0 d
int32_t jsq;# v0 X8 j: @2 H% ?5 l* a' @  {3 {
//float ;+ w  y9 s3 h, e7 x+ F
int pdir0=1,pdir1=1,twAddr1=0xBC,twAddr2=0xBB,k=0,graX,graY,val0,val1,val2,val3,k;
- d) _' O" ~; z4 _增加4个函数:8 p0 I4 t- n) A8 h  n; q% f5 X
//Delayer1 S+ ~# G+ B7 Z3 \) f0 [# _
void delay(int counter){$ F. B+ W9 A  S2 \6 {( W3 z
int i,j;
/ ?" c/ v5 T& A9 E9 q# F( Q* Y for(i=0;i<counter;i++){for(j=0;j<i;j++){;}}6 B8 `, O& ~* T2 N
}
0 ]% B  S8 C, B* m7 [% T0 L//GPIO Initial; g8 S9 R7 Y, n' g6 t  c; |
void ioInit(void){  J+ {( o* j! r9 {! C
STM_EVAL_LEDInit(LED3);
4 L# ~0 o3 @0 H2 \- l: z5 @# R  l4 F3 M STM_EVAL_LEDInit(LED4);
  r1 J& l6 e. k7 l STM_EVAL_LEDInit(LED5);
8 q. G% N( o# N6 b, |: A- x STM_EVAL_LEDInit(LED6);
) N) s& U. j, F6 h! \; |/ o8 \ STM_EVAL_LEDInit(LCDVDD);/ k+ t3 s5 L4 w9 c1 J/ [  B: W
STM_EVAL_LEDInit(LCDSDA);
) _8 g9 D' a1 _1 r! Z( J- S) C STM_EVAL_LEDInit(LCDSCL);& e5 Z' s' T; n- K3 j# {
STM_EVAL_LEDInit(LCDSRE);
9 I$ `2 F5 l9 j% w4 M STM_EVAL_LEDInit(LCDSRG);
. M, X% H4 C; v% J* Z/ A STM_EVAL_LEDOn(LCDVDD);6 h- p+ T% l4 S  S9 c
}
2 p6 K$ I" j  d6 J& g* m' O//Display Base Meseger
  |/ }# J% Q3 F$ h4 K, ]void dispBase(void){
$ P" b, L# ]' C c2l(0,0,19);c2l(1,0,28);c2l(2,0,26);c2l(3,0,40);//JSQ:
# H8 o" K; W5 x0 N. ~6 g8 d c2l(0,1,16);c2l(1,1,33);c2l(2,1,40);//c2l(1,3,40);//GX:
' V9 J. x. W5 O3 } c2l(9,1,16);c2l(10,1,34);c2l(11,1,40);//c2l(1,12,40);//GY:
% u; t% x/ T' @& B0 K c2l(0,2,16);c2l(1,2,35);c2l(2,2,40);//c2l(2,3,40);//PW0:3 X$ E! p; @1 ]" t: y6 w( W
c2l(9,2,16);c2l(10,2,10);c2l(11,2,40);//c2l(2,12,40);//PW1:6 a7 T5 ?! M7 Z/ J; l- ?
//c2l(0,3,29);c2l(1,3,14);c2l(2,3,22);c2l(3,3,40);//TEM:0 ^9 F, M4 H  g& I5 m
//c2l(9,3,17);c2l(10,3,30);c2l(11,3,22);c2l(12,3,40);//HUM:
( K4 T( b; }8 O8 R. w$ ~1 a! j}; U7 V: D: P) e# F) _- Y* E
//Display Messeg+ A9 O' n# i" {* N
void dispMes(void){& h: h) T. ], F( @
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# c9 @9 `0 b0 [ c2l(8,0,(jsq/100)%10);c2l(9,0,(jsq/10)%10);c2l(10,0,(jsq)%10);//JSQ:* C6 r4 C7 K3 E' H4 u* e( A9 ]
if(val0>0)c2l(3,1,38);else c2l(3,1,39);val0=ABS(val0);
  W6 A7 w. l  X& C& s. k4 o5 Y+ V c2l(4,1,(val0/100)%10);c2l(5,1,(val0/10)%10);c2l(6,1,(val0)%10);//c2l(1,7,(val2)%10);//X
; G' c% C1 O8 S4 z& e( u if(val1>0)c2l(12,1,38);else c2l(12,1,39);val1=ABS(val1);/ M8 `" H  \9 ^  j, j
c2l(13,1,(val1/100)%10);c2l(14,1,(val1/10)%10);c2l(15,1,(val1)%10);//c2l(1,16,(val3)%10);//Y
8 A6 h* i' X  k6 _ if(val2>0)c2l(3,2,38);else c2l(3,2,39);val2=ABS(val2);
7 I2 W% L2 u3 I5 y, ?* A# E( ? c2l(4,2,(val2/100)%10);c2l(5,2,(val2/10)%10);c2l(6,2,(val2)%10);//c2l(2,7,(val0)%10);//Z
7 f" l2 Q& u* v if(val3>0)c2l(12,2,38);else c2l(12,2,39);val3=ABS(val3);- W. u8 c' ?  D; x) Y+ X
c2l(13,2,(val3/100)%10);c2l(14,2,(val3/10)%10);c2l(15,2,(val3)%10);//c2l(2,16,(val1)%10);//第4个变量——实际永远为0
, f2 `% y' D. f; o7 q2 u( h}2 A" L" ^0 o; `& P3 v
, i  ?7 m8 F" Y0 T3 X8 }4 O* G  I( U
编译下载运行结果见视频:41-3轴加速度计L3GD20采样实验
2 G9 Y0 X) D1 ]) H' i7 q* T" t) j/ G  M9 n! y6 c. T! R6 P

; L9 _- D6 y- Y7 x. y; }+ U7 T
收藏 评论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:253 Q: A! p$ j" z. L2 M1 H
学习了
; o) `1 r7 Z' a( D) S8 O- \. ?$ \
谢谢!80元买的板子不玩玩也对不起她。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版