|
本实验采用官方提供的案例程序,经过修改将数据显示在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 {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, LED6 = 3,/ m; M8 B3 _) a$ | LCDVDD = 4, LCDSDA = 5, 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 } 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 #define LED4_GPIO_PORT GPIOD% e( D, j9 \7 ^; U9 z* I- }8 v3 S #define LED4_GPIO_CLK RCC_AHB1Periph_GPIOD #define LED3_PIN GPIO_Pin_13 #define LED3_GPIO_PORT GPIOD #define LED3_GPIO_CLK RCC_AHB1Periph_GPIOD ; n' k9 R. I" X7 v #define LED5_PIN GPIO_Pin_14 #define LED5_GPIO_PORT GPIOD #define LED5_GPIO_CLK RCC_AHB1Periph_GPIOD / 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 #define LCDVDD_GPIO_CLK RCC_AHB1Periph_GPIOE #define LCDSDA_PIN GPIO_Pin_15) i% `2 C+ u+ y- |. s: i g3 w" H #define LCDSDA_GPIO_PORT GPIOE #define LCDSDA_GPIO_CLK RCC_AHB1Periph_GPIOE2 v! F7 N- h: V' O8 e #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 #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 #define LCDSRE_GPIO_PORT GPIOE3 t5 `- C6 n v7 @ #define LCDSRE_GPIO_CLK RCC_AHB1Periph_GPIOE 而后打开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}; 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};4 o! c( h7 ?$ C4 B 之后打开主函数main.cpp 增加include文件:% Q- F2 E1 S: G5 N7 o7 e #include "6903.h" 增加函数定义: void delay(int counter); void dispBase(void); void dispMes(void); void ioInit(void);" {6 C; \" t4 @ R 增加自定义变量: int32_t jsq; //float ; int pdir0=1,pdir1=1,twAddr1=0xBC,twAddr2=0xBB,k=0,graX,graY,val0,val1,val2,val3,k; 增加4个函数: //Delayer void delay(int counter){ int i,j; for(i=0;i<counter;i++){for(j=0;j<i;j++){;}} }, X+ Y1 n2 f; C3 @9 K //GPIO Initial void 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); 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); STM_EVAL_LEDInit(LCDSDA); s" ]8 n0 m; e% |, Q1 C! j STM_EVAL_LEDInit(LCDSCL); STM_EVAL_LEDInit(LCDSRE); STM_EVAL_LEDInit(LCDSRG);/ B1 u" Y- a6 L6 k6 e STM_EVAL_LEDOn(LCDVDD); } //Display Base Meseger$ }) F# G, K+ Y" b) C 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: 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: //c2l(9,3,17);c2l(10,3,30);c2l(11,3,22);c2l(12,3,40);//HUM: } //Display Messeg 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:' Z$ H, K) P- w7 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); 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); 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 } 编译下载运行结果见视频:41-3轴加速度计L3GD20采样实验$ s: a/ a( D5 ^ |
【福利三:雨露均沾·逢7狂欢】之四:用一个定时器同步另外两个定时器输出PWM
【逢7发帖赢大礼】STM32开发之WIFI实时时钟
【逢7发帖赢大礼】STM32开发之指纹识别!
【逢7发帖赢大礼】STM32开发之环境空气质量监测
【逢7发帖赢大礼】STM32开发之人体实时运动信息监测!
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
【逢7发帖赢大礼】全网最简单的Arduino_STM32开发环境搭建教程!
STM32F4中文用户手册
STM32F400、STM32F402 Cortex-M4超值单片机
SPI 高温读错最后一位?STM32F42xx 官方根治方案
微信公众号
手机版
谢谢!80元买的板子不玩玩也对不起她。