本实验采用官方提供的案例程序,经过修改将数据显示在LCD屏幕上,为了省事,渐亮采用源码。改动不大,具体如下: 首先打开stm32f401_discovery.h文档,更改和增加以下内容:$ i8 ~( k9 _" A1 E5 T* l8 ~) v 定义led对象:+ l( s# H1 G" B typedef enum { LED4 = 0, LED3 = 1,+ D1 f3 ^6 l' L) B7 p LED5 = 2, LED6 = 3, LCDVDD = 4, LCDSDA = 5, LCDSCL = 6,9 T$ O/ ~$ i$ H: O: B' s. { LCDSRE = 7, LCDSRG = 8/ R# s1 s& W# e8 i } Led_TypeDef; leds属性定义: #define LEDn 9 #define LED4_PIN GPIO_Pin_123 n7 `# S- P v1 b8 G4 a1 l* b! g #define LED4_GPIO_PORT GPIOD #define LED4_GPIO_CLK RCC_AHB1Periph_GPIOD # ]: D' Q( C" w #define LED3_PIN GPIO_Pin_13 #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 #define LED5_GPIO_PORT GPIOD #define LED5_GPIO_CLK RCC_AHB1Periph_GPIOD #define LED6_PIN GPIO_Pin_15 #define LED6_GPIO_PORT GPIOD j( A& A: J* m3 D #define LED6_GPIO_CLK RCC_AHB1Periph_GPIOD #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 #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 #define LCDSCL_GPIO_CLK RCC_AHB1Periph_GPIOE ) s p9 N G$ Y( y #define LCDSRG_PIN GPIO_Pin_11 #define LCDSRG_GPIO_PORT GPIOE #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 #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};: 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}; 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}; 之后打开主函数main.cpp7 V% }: T' p2 m, ?* A s 增加include文件: #include "6903.h"* {# r: A% N) K. q3 u/ z6 { 增加函数定义: void delay(int counter); void dispBase(void); void dispMes(void);0 l( ]: C# ~( r void ioInit(void); 增加自定义变量: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; 增加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; for(i=0;i<counter;i++){for(j=0;j<i;j++){;}}6 B8 `, O& ~* T2 N } //GPIO Initial; g8 S9 R7 Y, n' g6 t c; | void ioInit(void){ J+ {( o* j! r9 {! C STM_EVAL_LEDInit(LED3); STM_EVAL_LEDInit(LED4); STM_EVAL_LEDInit(LED5); STM_EVAL_LEDInit(LED6); STM_EVAL_LEDInit(LCDVDD);/ k+ t3 s5 L4 w9 c1 J/ [ B: W STM_EVAL_LEDInit(LCDSDA); STM_EVAL_LEDInit(LCDSCL);& e5 Z' s' T; n- K3 j# { STM_EVAL_LEDInit(LCDSRE); STM_EVAL_LEDInit(LCDSRG); STM_EVAL_LEDOn(LCDVDD);6 h- p+ T% l4 S S9 c } //Display Base Meseger 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: 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: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: }; 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: 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); c2l(4,1,(val0/100)%10);c2l(5,1,(val0/10)%10);c2l(6,1,(val0)%10);//c2l(1,7,(val2)%10);//X 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 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);- 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 }2 A" L" ^0 o; `& P3 v , i ?7 m8 F" Y0 T3 X8 }4 O* G I( U 编译下载运行结果见视频:41-3轴加速度计L3GD20采样实验 " t) j/ G M9 n! y6 c. T! R6 P |
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元买的板子不玩玩也对不起她。