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

【方案秀】+ 基于STM32L073的脉冲计数 精华

[复制链接]
jinglixixi 发布时间:2016-4-26 16:28
     在色彩识别仪的设计中,主要是通过脉冲计数的方式来获取色彩值,因此对脉冲计数功能的实现是必不可少的。
在STM32L073开发板的基础上,配以LCD5110液晶显示器即可构造一个简单的脉冲计数器。LCD5110与STM32L073的连接如下表所示:

! x7 ?0 z8 F1 l
  
序号
  
名称
连接
作用
1
VCC
3.3V电源
LCD5110供电
2
GND
电源地
LCD5110供电
3
SCE
电源地
片选控制
4
RESET
PC0
复位控制
5
D/C
PC1
数据/指令选择
6
SDIN
PC2
SPI接口数据收发
7
SCLK
PC3
SPI接口时钟输出
8
LED+
3.3V电源
背景光控制
6 S1 T$ P7 Y! L7 ]; r; B
那么外部的计数脉冲如何获得呢?最简单的方法就是使用LCD5110的时钟信号SCLK来提供。
为了实现脉冲计数功能,并将计数值显示到LCD5110上,可在STM32L073RZ-Nucleo例程的TIM_InputCapture 的基础上进行改造来实现,主要的任务是添加LCD5110函数。
# I( u! c$ C. Q
为了控制LCD5110各引脚的高低电平,相关的输出引脚定义如下:
  1. #define SetLCD_SCLK_High()     { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_SET);}- E6 S+ k+ g1 z3 U  E
  2. #define SetLCD_SCLK_Low()          { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_RESET);}
    2 m" P6 j  @" c8 z5 i% M- P

  3. ; U) \1 S  w; p2 ~* W+ j
  4. #define SetLCD_SDIN_High()     { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_SET);}
    % a: \; E, {' C* Q* r
  5. #define SetLCD_SDIN_Low()          { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_RESET);}
    4 @% s. l. O* K# h! N1 u7 B7 g
  6. 6 F" V/ m4 V5 }4 V
  7. #define SetLCD_DC_High()            { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_SET);}
    ) ?+ Y5 }# a4 X0 ]6 |
  8. #define SetLCD_DC_Low()            { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_RESET);}
    ! q8 G  n! e+ P" i! l- k

  9. $ h. \& f# |& K# d4 m
  10. #define SetLCD_RST_High()          { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);}
    : h0 F. U& [7 z2 N: S$ r& h4 _7 D
  11. #define SetLCD_RST_Low()            { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);}
    2 a* |$ p. U5 U  L
  12. & v/ x$ z) A2 J- x) y
  13. #define SetS2_High()           { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);}5 u. e* ^- M# ]' l; M% n
  14. #define SetS2_Low()                 { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);}
    . \. I/ I( G% c  P" ]) I) V
  15. # e& F' k) A7 s4 R4 O5 I
  16. #define SetS3_High()           { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);}# X% `( Z$ r. T: n
  17. #define SetS3_Low()                 { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);}& i& s$ y5 X4 ~
复制代码
LCD5110的初始化函数为:! z, H* M( d. r
  1. void LCD_Init(void)
    ) `* a' Q# @4 t* L
  2. {        
    ! K7 N. C1 I, p: L; s! ]- q4 L
  3.         //SCLK--PC.3& h8 |0 E& q: N9 z2 U
  4.     //DIN--PC.20 P+ r/ f, ]- G8 T  p; z+ c  Z
  5.     //DC--PC.13 C6 }7 @2 \# g' W
  6.     //RST--PC.04 s; Q& }9 O: x% R& m5 V1 B
  7.         __HAL_RCC_GPIOC_CLK_ENABLE();1 H4 `& \" i. K
  8.         GPIO_InitTypeDef   GPIO_InitStruct;  g6 e* }8 H" S
  9.         GPIO_InitStruct.Pin = GPIO_PIN_3| GPIO_PIN_2|GPIO_PIN_1| GPIO_PIN_0;
    " c* t; u% x1 T( `
  10.     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;5 ^" l3 h3 w2 T  V) [& r; V
  11.     GPIO_InitStruct.Pull = GPIO_PULLUP;
    9 V& D+ G* _/ Z* C: ?
  12.     GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
    / Z7 T& T7 p5 l
  13.     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
    3 t3 d9 _; h. G9 T1 f4 j. P. z
  14.         , T. b9 y0 e/ |0 ~7 U4 X- C
  15.         SetLCD_RST_Low();    1 X: i+ }4 a4 f7 C4 X6 M- Q
  16.         delay_1us();0 O' q. n- F: W5 v. l
  17.         SetLCD_RST_High();   
    : R9 k- P2 Z# Q9 q$ C
  18.         delay_1us();3 ~5 F# X, l) a  \9 A2 Z$ X" f
  19.         delay_1us();: N/ V) R& `+ d& V# D% @
  20.         
    % ]% t3 C( B" z% S' P3 Q) B) F+ H
  21.         LCD_write_CMD(0x21);2 _' ^! l- v0 b1 Q  X
  22.         LCD_write_CMD(0xc0);7 M3 ~! X% t7 q- q# ]/ j2 Q8 ^5 O# l
  23.         LCD_write_CMD(0x06);
      n% d# L/ m6 F, l) n, s, J& ^
  24.         LCD_write_CMD(0x13);
    5 G4 E) L+ e8 O! U3 k" I9 @& X
  25.         LCD_write_CMD(0x20);
    - I  e0 P0 V& W; B5 ]+ \
  26.         LCD_Clear();           
    9 v) M+ R. r- C. ]0 R
  27.         LCD_write_CMD(0x0c);        . ~6 {  {, h2 T. a2 k* p
  28. }; E6 R0 k- e5 N3 L; u5 O
复制代码
所涉及的函数有延时函数delay_1us()和指令输出函数LCD_write_CMD(),具体代码如下:) L( R7 \: z) u( ]; d9 ]
  1. long int delay_1us(void)
    ' A! a+ L/ n+ \3 ^, U" m
  2. {- [' b/ m; [6 P6 h  \4 L5 c
  3.         long int count=2;
    ( {9 i+ l& w5 A8 l
  4.         while(count--);" d( |& N7 A, ?& e6 f: K- F' A+ O
  5.         return 0;7 a$ I2 F  r/ V5 [0 q; f  V9 d
  6. }
    8 t: L6 M+ V+ f- t, M6 M  y) H
  7. - Z6 Y& @  |# C# O6 V
  8. void LCD_write_CMD(unsigned char com)8 t" l) g4 w9 \( \
  9. {
    . g# h: o( e8 O1 K5 S" b; E8 a: ?
  10.     unsigned char uci;9 t, X0 Q! p5 ^5 M# r# O
  11.     SetLCD_DC_Low();
    " }( B6 ^1 o3 U+ d) l# ?
  12.         for(uci=0;uci<8;uci++)
    1 o( D- N7 c# S# r: n
  13.         {
    2 b# R) b, |3 z# \
  14.                 if(com & 0x80): R% Z) m0 u7 p( P# r* O; r! n
  15.                 {
    - J: f$ b9 N: h' x/ H
  16.                         SetLCD_SDIN_High();
    . A3 I; _7 U+ g2 `3 }  \
  17.                   }* b1 f" w6 x% O* ^& h  b
  18.                 else
    8 k8 A3 h; v  F' O
  19.                 {9 _" L; S; i$ P+ J$ P
  20.                         SetLCD_SDIN_Low();
    1 V* H( ?  J) _# r: ]7 Q. E
  21.                   }
    * M* P3 a  {7 u" Z
  22.                 SetLCD_SCLK_Low();        : r! B/ E" P  O5 s/ `
  23.                 com = com << 1;6 h) G8 ^  T( ?3 T, \# [  E, K
  24.                 delay_1us();        * ?' G" U1 ]' J# l
  25.                 SetLCD_SCLK_High();6 E& y9 J6 N' p5 d9 ?, ~: k2 S3 a
  26.         } ' |1 U3 z6 d' q. v. Q# X, g
  27. }& s9 `0 S+ P: ?. i3 T* H
复制代码
在LCD5110显示的过程中,离不开清屏函数LCD_Clear()和字符输出函数LCD_write_char()。
清屏函数用到了显示定位函数LCD_set_XY()和数据输出函数LCD_write_Data();
,其的代码如下:
  1. void LCD_Clear(void)
    " M6 s/ `  g4 }9 r7 A4 y  Q
  2. {
    3 j7 _# ~/ U$ a% W" x2 g
  3.         int uii;
    6 {5 Y; H, Z# H; e' F2 Z( C
  4.         LCD_set_XY(0,0);5 e: _# W1 B% ~# F2 g
  5.         for(uii=0; uii<504; uii++)
    * I% ?* G3 e/ w
  6.         {
      Y: e* N" ^/ y# u6 m* h* f
  7.                 LCD_write_Data(0x00);
    , B  [  `9 Z# X& k1 V, j/ N2 p
  8.         }6 m% \/ B$ p1 t1 h* [, P. F
  9. }
    2 i- n  [: H% {8 N- B
复制代码
数据输出函数是通过读取字符库数组来显示字符的,其代码如下:  k# i7 @& N- p! q
  1. void LCD_write_char(unsigned char c)2 d0 K7 J5 y' G3 u* {: Y2 G9 P2 u% A# e
  2. {
    - o8 N+ v; A" F/ w
  3.     unsigned char line;
    - @7 F8 ^4 \7 ]9 z6 X& c" A+ Y
  4.     c -= 32;
    : D8 y( @0 }3 {7 H
  5.     for (line=0; line<6; line++)
    2 L0 j! E. |% m1 a
  6.         {  E! `, c. ]+ V: @2 g
  7.               LCD_write_Data(font6x8[c][line]);
    # I* j( t# k6 N) g
  8.           }2 m8 I, m: L! w
  9. }2 S& Q: L- T7 K: h) O* v' b
复制代码
字符库数组的结构如下:
* R% Y' y: b+ Y' @) l2 b
  1. unsigned char font6x8[][6] =% G( f, U2 w8 l# p- j" H0 A  B
  2. {
    # N$ r) V* `. U& j6 _
  3.     { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },   // sp# Y& e9 x/ e7 s1 @9 Z
  4.     { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },   // !* F0 ^4 [' Z. G9 X' C6 [
  5.     { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },   // "7 M+ D. }5 J& T! G/ w
  6.     { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },    // #( }7 s- o! C% _! ]4 \- S
  7.     ... ...( ~* _* C, K5 q6 C

  8. 9 ~: I4 |; @3 c6 [, y
  9.     { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },   // x
    3 t( @$ M  E! L! z: P( s+ [2 n& e& N
  10.     { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },   // y" }# ]! r5 L) L
  11.     { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },   // z
    4 }2 k4 b/ k- w0 l* r# \
  12.     { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }    // horiz lines
    $ G! |2 E2 w' g6 c5 U
  13. }# o! x. x' w+ j  q9 c
复制代码
主函数的代码为:
, h: K  a' |! U7 @
  1. int main(void)7 j+ d8 y/ @5 ^# J
  2. {
    . L( U; R6 t0 v) V: M6 f# q
  3.   HAL_Init();. i0 x6 n# t  y! i
  4.   /* 配置系统时钟到2 MHz */8 p" b- U7 M4 L1 D( L; N3 ?
  5.   SystemClock_Config();
    ) w7 j% a9 V3 `
  6.   /* 配置LED2 */
    # n/ _* z8 t. U
  7.   BSP_LED_Init(LED2);
    0 x  k# g9 v1 ?5 X
  8.   /* 配置 TIM 的外围情况 */
    0 m' m# q5 @9 Q2 P$ `/ s( X- R
  9.   /*  TIM2 配置: 输入捕捉模式
    : E2 u. p+ u. I
  10.      外部信号连接到 TIM2 的通道2 引脚为PB.03
    8 X8 e3 ]% X2 B2 C( p* F7 H
  11.      使用上升沿触发,TIM2 的CCR2 用于 计数的频率值  */
    3 M. Y6 q3 f' u9 R
  12.   TimHandle.Init.Period      = 0xFFFF;* Y+ k6 m& ~- L! X: Z% `% n* n
  13.   TimHandle.Init.Prescaler    = 0;* A" E, W7 H) V. y& t# V/ }$ A
  14.   TimHandle.Init.ClockDivision  = 0;
    5 T/ U% v4 e4 l2 [+ N4 z: S  S
  15.   TimHandle.Init.CounterMode  = TIM_COUNTERMODE_UP;: q) {& Q2 ?. U' o2 x1 O
  16.   if(HAL_TIM_IC_Init(&TimHandle) != HAL_OK)0 b+ U; R" V8 L4 `, |1 I
  17.   {5 L8 }7 r* V, l2 \0 s
  18.     /* I初始化报错 */; ?' Y8 ]- h# D8 M' t
  19.     Error_Handler();( F6 {$ b4 ^1 s2 u6 w+ D" r
  20.   }
    * u$ }3 ?8 b7 z! a( c) B' Z
  21.   /* 设置输入捕捉通道2 */ # }. ?/ l1 h: t% v2 p
  22.   sICConfig.ICPolarity  = TIM_ICPOLARITY_RISING;* P7 a& X6 a8 G2 H3 W7 J
  23.   sICConfig.ICSelection = TIM_ICSELECTION_DIRECTTI;
    7 T) S2 O  `5 c3 E& H. o" w* O. k
  24.   sICConfig.ICPrescaler = TIM_ICPSC_DIV1;
    ! C0 b- V% |$ q1 \7 V$ q
  25.   sICConfig.ICFilter    = 0;   + J' z! m; \; ^7 U) e
  26.   if(HAL_TIM_IC_ConfigChannel(&TimHandle, &sICConfig, TIM_CHANNEL_2) != HAL_OK)
    , v! @2 h- G* d
  27.   {
    6 B0 D0 [. X- D% G- ^
  28.     /* 配置报错 */
    8 Q3 _& @0 M- \+ O/ \) \
  29.     Error_Handler();
    $ Z6 h# R5 g; A* |" [
  30.   }
    # e0 N( |; }$ y' @- G+ A" M
  31.   5 }7 C) U/ d% @& o
  32.   /* 以中断模式启动输入捕捉 */
    1 N/ {2 h$ x2 S8 q! F! r
  33.   if(HAL_TIM_IC_Start_IT(&TimHandle, TIM_CHANNEL_2) != HAL_OK)
    ) T- X* q, l4 D. ?2 j
  34.   {
    2 a9 h/ [; B: t% s* G, c: V6 M0 Z
  35.     /* 启动报错 */" d* z$ B# z* u" U% [8 O3 j
  36.     Error_Handler();% p5 x! g$ f3 J
  37.   }
    % b8 Z# }# `* O& C+ g
  38.             LCD_Init();    // LCD5110初始化
    0 y9 i: b- Z8 f5 u. T  \7 Y
  39.             jm();        //  显示界面3 J8 S8 R* K6 e% b' g$ |2 P6 `
  40.         // 设置显示格式4 {4 M( q) v# {) B; G
  41.                 LCD_set_XY(0,1);
    ; O) `; \, k% c0 i  w/ p0 T
  42.                 LCD_write_char('C');& e2 A6 I3 u3 ^
  43.                 LCD_write_char('1');" o1 n& U& j. R0 m1 o* O; l/ m7 ^
  44.                 LCD_write_char('=');! F2 i$ ~7 M+ a0 r4 w# T. M
  45.                 LCD_set_XY(0,2);
    " S" y+ P- E5 v+ `) o$ G$ g7 ?0 Z& U
  46.                 LCD_write_char('C');0 p6 a8 k  g) X( e2 a7 y
  47.                 LCD_write_char('2');5 |1 W2 c" o# T$ B/ G
  48.                 LCD_write_char('=');9 X) r+ l5 i% ]3 }2 {# m% H
  49.                 LCD_set_XY(0,3);$ Y1 z  H2 n+ u6 {$ b0 M
  50.                 LCD_write_char(' ');
    # v, y$ h& H6 @6 B6 A3 c, z4 f
  51.                 LCD_write_char('d');6 a* A) h8 Z/ X) ]: D$ O  B
  52.                 LCD_write_char('=');
    # x  r7 q; ]' U
  53.             LCD_set_XY(0,4);
    8 g% {$ Z! A" l$ s( G  U
  54.                 LCD_write_char(' ');
    ' U) c3 x# V1 ~% `. w, H7 \2 x& U
  55.                 LCD_write_char('f');
    4 a) s) x7 s" o2 |
  56.                 LCD_write_char('=');. `! t% d5 ]. ^/ I$ d
  57.   while(1)
    3 ]7 ~- V; R1 P1 a5 @
  58.   {     //  显示捕捉值
    , G4 C  H- V# k/ l- Q1 e; }+ p
  59.                 LCD_write_number(30,1,uwIC2Value1);
    . U3 m; @" l) }- |% D
  60.                 LCD_write_number(30,2,uwIC2Value2);
    7 W. X/ d7 D: I, {
  61.                 LCD_write_number(30,3,uwDiffCapture);7 R" ^% p" ]0 g7 w! _
  62.                 LCD_write_number(30,4,uwFrequency);2 J6 v* L2 K4 y" n4 k4 J
  63.                 delay_1ms(1000);  // 控制采集数据的显示间隔
    3 |7 v$ a* w7 ^) i7 a
  64.   }3 n1 g! K' m2 j1 G* P5 \
  65. }0 l. I; S: W" E! N. d7 \# x
复制代码
定时捕捉处理函数代码为:4 l4 D1 }4 V, y1 a$ U) C
  1. void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)" y- D7 y) N/ K, n
  2. {$ R2 }9 W! L6 d8 S; S. G
  3.   if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2)
    ' a; l3 f4 {  J: {% l! ~4 K0 Y2 e+ F
  4.   {6 B  I% x$ D3 @/ {& e  r2 O. Z/ }9 S3 O
  5.     if(uhCaptureIndex == 0)4 z! X4 d0 ~, l3 }$ a- E  l
  6.     {' K0 b2 ]/ T" d& Z
  7.       /* 获取第一次捕捉值 */
    9 C$ ^* z4 x' z1 I- k! m
  8.       uwIC2Value1 = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2);+ Y2 t  t! G* p7 E: m6 Y, b+ C
  9.       uhCaptureIndex = 1;4 {5 H  Q6 k* L% ?
  10. }
    ) e& ?( u1 j8 ]9 i6 y7 Z. t5 u
  11.     else if(uhCaptureIndex == 1)+ [9 w9 M2 g4 u# T& _0 n! g
  12.     {
      q$ A  ]. Q% w% T( C
  13.       /* 获取第二次捕捉值 */+ u$ T* @$ }& P& O) N  [
  14.       uwIC2Value2 = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2);
    ! O3 c: I9 H6 M# q6 Y# T, }
  15.       /* 捕捉计算 */
    ! A" |+ d9 A/ q- G- D) b
  16.       if (uwIC2Value2 > uwIC2Value1)
    - n9 t# s2 B' k: e+ m
  17.       {
    5 _) s% D0 g. ^& q
  18.         uwDiffCapture = (uwIC2Value2 - uwIC2Value1);            //  计算差值  ) l& w  D; X6 T
  19.       }: u$ n( ]$ h( M  b. \
  20.       else if (uwIC2Value2 < uwIC2Value1)* \5 n; f* X* P( s7 @
  21.       {
    $ f2 b/ p1 w% Y  Y
  22.         uwDiffCapture = ((0xFFFF - uwIC2Value1) + uwIC2Value2) + 1; //  超界补偿处理, J% H9 P( D! O# i0 R0 Q- L' X
  23.       }; v1 _$ `2 g, W) x. c
  24.       else2 Y9 H, l1 [' _% |# G
  25.       {4 X9 U9 x$ Q, D' _# Y  d0 a# g
  26.         /* 假如捕捉值相等,则已达到测量频率的极限 */
      |8 m2 ^+ z: N: L: G+ \" I
  27.         Error_Handler();                                     //  捕捉值相等时报错6 C( F9 x) f4 n# @& L3 k" C% J
  28.       }
    & A) x9 [" A& l: A; W7 e
  29.       /* 频率计算: 这是一个以APB1Clk为TIM2计时的示例 */        Q0 u: v/ [% B5 L1 T- v
  30.       uwFrequency = HAL_RCC_GetPCLK1Freq() / uwDiffCapture;
    3 d0 U) R: J1 h6 R5 ?
  31.       uhCaptureIndex = 0;
    + [$ `  l0 I1 a* \
  32.     }2 n" F2 V, Z# k5 Z/ H0 q; m
  33.   }0 b9 Y! N- z3 y- i
  34. }5 O6 K/ h. {2 [( M; C* j
复制代码
数据定位显示函数的代码为:
6 g8 q4 s  E1 p! Z- G0 b1 o2 N
  1. void LCD_write_number(unsigned char X,unsigned char Y,uint32_t dat)2 w) }, b/ Q! y6 `
  2. {
    ) H5 ?& d; P2 T, a
  3.                 LCD_set_XY(X,Y);& R8 O$ }- @- f4 c% U" i
  4.                 LCD_write_char('C');8 b# F) E" N/ M! E+ {# I
  5.                 LCD_write_char('=');5 C1 g2 W' x7 v3 r5 w5 {2 {* L/ M
  6.             if(dat>999999) LCD_write_char(dat%10000000/1000000+0x30);; t2 ]1 s7 t2 Y7 M0 j5 }
  7.             if(dat>99999) LCD_write_char(dat%1000000/100000+0x30);6 f  J$ @, X) @% C
  8.                 if(dat>9999) LCD_write_char(dat%100000/10000+0x30);
    4 d/ C; G# L& X, i4 Z
  9.             if(dat>999) LCD_write_char(dat%10000/1000+0x30);
    ) M" a+ U4 a0 W7 f2 i- z. b
  10.                 if(dat>99) LCD_write_char(dat%1000/100+0x30);
    7 F9 O) a  [' M' C5 ?& q  ]
  11.                 if(dat>9) LCD_write_char(dat%100/10+0x30);
    * p% Q8 H6 E5 W* l
  12.                 LCD_write_char(dat%10+0x30);
    8 [; F1 I, Y4 C. o
  13. }
    3 N. y: D4 F) ?$ Y4 J) T
复制代码

% f- [; o4 K, f9 D
6 H5 ]. p% U$ `3 I0 E: H- g5 `) D
a.png

评分

参与人数 1 ST金币 +20 收起 理由
zero99 + 20

查看全部评分

收藏 5 评论10 发布时间:2016-4-26 16:28

举报

10个回答
df_flying 回答时间:2016-4-26 16:40:16
东西不错哦~
jinglixixi 回答时间:2016-4-26 16:43:17
d与f的值基本不变,c1和c2值是随时递增的,到界后再从零开始计数。
沐紫 回答时间:2016-4-26 16:47:33
谢谢楼主分享
jinglixixi 回答时间:2016-4-26 16:55:32
后续再将TCS3200色彩传感器加进来,依次控制芯片内部的RGB滤色处理来输出RGB的色彩脉冲,以获取RGB色彩值,为RGB到Lab的色彩模式转换提供支持。
埃斯提爱慕 回答时间:2016-4-27 10:53:46
提示: 作者被禁止或删除 内容自动屏蔽
jinglixixi 回答时间:2016-4-27 12:19:06
感谢!      
sxdahss 回答时间:2016-9-27 14:26:21
麻烦楼主把程序工程分享一下
jinglixixi 回答时间:2016-9-28 08:48:08
sxdahss 发表于 2016-9-27 14:268 v: y7 J! J$ z1 r
麻烦楼主把程序工程分享一下
: b5 ^, Y% l8 j' X$ D! A3 `8 |8 k$ F1 y
你代码放到STM32L073的相关例程中进行编译即可,我做的主要工作就是为它配上了LCD5110屏的驱动显示等,你试一试就知道了。
sxdahss 回答时间:2016-9-28 09:10:38
jinglixixi 发表于 2016-9-28 08:48
8 J$ a! Q4 J+ y8 ]( c: [) y1 O; m你代码放到STM32L073的相关例程中进行编译即可,我做的主要工作就是为它配上了LCD5110屏的驱动显示等,你 ...
5 D) a& J+ r! Z
我已经下到了官网的例程,谢谢你
zhangdaijin 回答时间:2016-9-28 09:11:32
谢谢分享
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版