本实验采用官方提供的案例程序,经过修改将数据显示在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 {! M* A: `4 |4 D LED4 = 0, LED3 = 1, LED5 = 2,* z, G* L( _# |+ k7 V$ t! z2 n2 X LED6 = 3, LCDVDD = 4, LCDSDA = 5, LCDSCL = 6,. i3 W6 K, g2 V/ \! t LCDSRE = 7, LCDSRG = 8" Z! Q3 y* a0 F6 y } Led_TypeDef;: @: e2 ~/ _5 @0 E( i leds属性定义: #define LEDn 9 #define LED4_PIN GPIO_Pin_12 #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 #define LED3_PIN GPIO_Pin_13 #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 #define LED5_GPIO_CLK RCC_AHB1Periph_GPIOD #define LED6_PIN GPIO_Pin_15 #define LED6_GPIO_PORT GPIOD #define LED6_GPIO_CLK RCC_AHB1Periph_GPIOD #define LCDVDD_PIN GPIO_Pin_7//此引脚第一位高电平,为ks0713专用7 ~) M# T: B3 x, S& N1 }1 y #define LCDVDD_GPIO_PORT GPIOE #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 #define LCDSCL_PIN GPIO_Pin_13 #define LCDSCL_GPIO_PORT GPIOE #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 #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 #define LCDSRE_GPIO_CLK RCC_AHB1Periph_GPIOE 而后打开stm32f401_doscover.c,更改以下内容: 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}; `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}; const 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 增加include文件:# c# u0 D2 f* j9 O- ^, i #include "6903.h"; c; o3 @7 f, t% A# n, k/ M6 P1 s 增加函数定义: void delay(int counter); void dispBase(void); void 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个函数: //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; for(i=0;i<counter;i++){for(j=0;j<i;j++){;}} }) 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); STM_EVAL_LEDInit(LED5);7 K" n" W; L. L% U" G6 u; _8 q STM_EVAL_LEDInit(LED6); 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); STM_EVAL_LEDOn(LCDVDD); }3 e! s, V5 V# v& n4 |+ | //Display Base Meseger$ P3 K9 M' T; p3 x void dispBase(void){ c2l(0,0,19);c2l(1,0,28);c2l(2,0,26);c2l(3,0,40);//JSQ: 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: c2l(0,2,16);c2l(1,2,35);c2l(2,2,40);//c2l(2,3,40);//PW0: c2l(9,2,16);c2l(10,2,10);c2l(11,2,40);//c2l(2,12,40);//PW1: //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: }5 C E" s$ w, J% h6 k //Display Messeg, B8 |; x, r- E! s9 J4 W void dispMes(void){ 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: 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); c2l(13,1,(val1/100)%10);c2l(14,1,(val1/10)%10);c2l(15,1,(val1)%10);//c2l(1,16,(val3)%10);//Y if(val2>0)c2l(3,2,38);else c2l(3,2,39);val2=ABS(val2); c2l(4,2,(val2/100)%10);c2l(5,2,(val2/10)%10);c2l(6,2,(val2)%10);//c2l(2,7,(val0)%10);//Z 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 } 编译下载运行结果见视频:41-3轴加速度计L3GD20采样实验 5 B8 ^9 o% p1 e6 Z1 h8 e. s / I1 G. W7 v) h% |2 w2 R |
STM32固件库分享,超全系列整理
【中文文档】AN3965_STM32F40x和STM32F41x基于串口的IAP
STM32F4-DISC 实现USB主机(U盘)和USB设备(虚拟串口)自动切换
STM32F4中文用户手册
基于STM32F407的FreeRTOS阶段性的总结(13)
STM32F400、STM32F402 Cortex-M4超值单片机
基于STM32F407的FreeRTOS获取各任务运行时间及占用情况(4)
基于STM32F407的FreeRTOS任务的挂起与恢复(3)
基于STM32F407的FreeRTOS任务的创建与删除经验分享(2)
基于STM32F407的FreeRTOS环境搭建经验分享(1)
谢谢!80元买的板子不玩玩也对不起她。