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

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

[复制链接]
jinglixixi 发布时间:2016-4-26 16:28
     在色彩识别仪的设计中,主要是通过脉冲计数的方式来获取色彩值,因此对脉冲计数功能的实现是必不可少的。
在STM32L073开发板的基础上,配以LCD5110液晶显示器即可构造一个简单的脉冲计数器。LCD5110与STM32L073的连接如下表所示:
' E; r* ?$ M7 r
  
序号
  
名称
连接
作用
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电源
背景光控制
0 y1 y8 P8 ^; b
那么外部的计数脉冲如何获得呢?最简单的方法就是使用LCD5110的时钟信号SCLK来提供。
为了实现脉冲计数功能,并将计数值显示到LCD5110上,可在STM32L073RZ-Nucleo例程的TIM_InputCapture 的基础上进行改造来实现,主要的任务是添加LCD5110函数。

, v& }* C) T- q) q
为了控制LCD5110各引脚的高低电平,相关的输出引脚定义如下:
  1. #define SetLCD_SCLK_High()     { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_SET);}
    , [; W# b, C; G8 O+ l: s
  2. #define SetLCD_SCLK_Low()          { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_RESET);}
    8 X" \' n0 g& o8 x4 b
  3. & m$ h- [" s! P( k! q. f
  4. #define SetLCD_SDIN_High()     { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_SET);}
      Y2 G7 Z; Z" x1 {. |% m
  5. #define SetLCD_SDIN_Low()          { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_RESET);}' \: O$ p6 x8 A( Z( b, |
  6. , i4 q) s5 E8 U9 j4 x
  7. #define SetLCD_DC_High()            { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_SET);}
    ( g7 v2 G0 b- b' F% ~4 n( E
  8. #define SetLCD_DC_Low()            { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_RESET);}
    / v$ `8 H# n0 g9 `
  9. & \( V6 ?, T. A! i. {" s5 ?- v
  10. #define SetLCD_RST_High()          { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);}9 _$ ]& E* _0 L5 _
  11. #define SetLCD_RST_Low()            { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET);}
    . F* \  T, x/ Z+ C1 a
  12. * C. b$ J5 k) D- n1 g% O
  13. #define SetS2_High()           { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);}
    8 C/ W8 _- c/ |( z8 N) U2 q
  14. #define SetS2_Low()                 { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);}6 f: @3 B4 E( \& F
  15. & r% z, i+ x  Z5 o/ S
  16. #define SetS3_High()           { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);}
    ' n4 q& [" u: e# ^% t1 K0 ?
  17. #define SetS3_Low()                 { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);}, [- U/ b' `# A# _: o3 Y) u* D
复制代码
LCD5110的初始化函数为:
2 N' m3 k  e! [& e0 x- S. r
  1. void LCD_Init(void)  w+ G$ f8 ?- T: o1 a
  2. {        
    8 @9 {$ k. F3 y$ q5 V
  3.         //SCLK--PC.3& n2 }& g1 A6 ^: g6 p( l! A
  4.     //DIN--PC.2) d) G" h  B9 _9 }1 A7 m7 J& k; O! X# x
  5.     //DC--PC.1
    9 T/ o& T: r: q7 A# P: `6 B
  6.     //RST--PC.0
      I+ [/ l6 t/ F, I- ]
  7.         __HAL_RCC_GPIOC_CLK_ENABLE();+ s& R- d, E- Z. V+ n$ w
  8.         GPIO_InitTypeDef   GPIO_InitStruct;
    . R+ [9 _! L/ g3 ]1 [( ^: V
  9.         GPIO_InitStruct.Pin = GPIO_PIN_3| GPIO_PIN_2|GPIO_PIN_1| GPIO_PIN_0;
    - Q* \8 S. D) Y
  10.     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    ( ^. B/ J# ]; q5 N
  11.     GPIO_InitStruct.Pull = GPIO_PULLUP;
    $ M6 x- d, Z" r' x
  12.     GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
    : }/ Y( B, D3 a; n2 i, |
  13.     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);. L( @/ r: A' d" ~+ I, Q! j# ~
  14.         $ v/ X, d( z  {. z' {4 p
  15.         SetLCD_RST_Low();    4 X1 h5 K( g4 f. R: W
  16.         delay_1us();
    , ~# Z7 O" U. g) _' X  I4 F
  17.         SetLCD_RST_High();   
    5 N: |* `) F$ s( t) s: Y5 ~( ?  c
  18.         delay_1us();
    3 w$ g  B. a; k: U. H6 v
  19.         delay_1us();% M3 z7 @, A0 r  l  A: c
  20.         + ^9 I2 h" k- a* X' }# y
  21.         LCD_write_CMD(0x21);% A8 N9 b' ^$ ]2 }7 A2 I
  22.         LCD_write_CMD(0xc0);
    2 S5 J8 g+ U: ]$ z9 ^
  23.         LCD_write_CMD(0x06);
    3 _7 R% O! Q& m( B' q
  24.         LCD_write_CMD(0x13);( _; q+ c+ M9 t. ^* }9 j
  25.         LCD_write_CMD(0x20);* K5 K9 x& p7 Y8 m/ I5 U: l3 l! C
  26.         LCD_Clear();           6 g* G- f4 F, j4 N1 b$ b
  27.         LCD_write_CMD(0x0c);        4 K" N2 b# }% p: I6 Y) @$ N$ G
  28. }4 c$ Q, m5 l7 K/ p; Y5 W
复制代码
所涉及的函数有延时函数delay_1us()和指令输出函数LCD_write_CMD(),具体代码如下:
* a8 Z  @& I8 g- o0 K8 g
  1. long int delay_1us(void)
    ; I0 e2 c- W# f; n. B- S6 ]
  2. {
    * J$ N# |# w( i
  3.         long int count=2;4 L7 ]; d% z  L& z5 K  w
  4.         while(count--);
    ! M$ ]" N. ^: w; E
  5.         return 0;
      ^. p: w' W8 u/ Y+ T$ K8 y2 z/ N
  6. }
    9 o. R* N$ I6 f8 d& ]% y, @
  7. 7 o) M+ B9 J" M! }$ s# r
  8. void LCD_write_CMD(unsigned char com)
    1 B# q" g4 D3 V/ K) I" }  b. z
  9. {
    - p" n$ K( `* Y. U/ Y
  10.     unsigned char uci;
    ) n! w1 Q# y6 G5 n; t6 V3 H
  11.     SetLCD_DC_Low();  {) G2 y4 W; g7 b' ~3 U4 b
  12.         for(uci=0;uci<8;uci++)
    5 Q- g- w& }' x7 D. o6 S
  13.         {
    . G7 q' Y$ L9 G: \5 F8 K& s8 s% t7 K
  14.                 if(com & 0x80)
    6 F! ^7 F( ]( l9 e/ e9 G0 c0 M
  15.                 {
    1 H8 V4 H6 D6 M, K! n2 s: y
  16.                         SetLCD_SDIN_High();
    * Q. ]# x' b$ B- ^1 P
  17.                   }' a" W4 ~: ?( C
  18.                 else
    ( v; _  m2 ~7 k1 U- x$ d
  19.                 {: A+ z9 a4 |# j% N9 c' y" S
  20.                         SetLCD_SDIN_Low();- A' g  g( Q% K: y$ v1 \) g
  21.                   }+ t1 ?) ]6 b/ [4 [% B( A0 M2 t
  22.                 SetLCD_SCLK_Low();        
    # z- q8 h4 X/ k6 L
  23.                 com = com << 1;
    + U3 @0 b- H* j
  24.                 delay_1us();        ) Y- K4 K5 J3 U- q$ d4 ^7 }
  25.                 SetLCD_SCLK_High();+ U7 ^" Q! u7 s. b1 M0 [
  26.         }
    9 x1 Y* |) ]" h" \0 J/ W
  27. }
    1 b8 A( \" }7 ^( _
复制代码
在LCD5110显示的过程中,离不开清屏函数LCD_Clear()和字符输出函数LCD_write_char()。
清屏函数用到了显示定位函数LCD_set_XY()和数据输出函数LCD_write_Data();
,其的代码如下:
  1. void LCD_Clear(void)) [7 J) s3 {2 ^5 i/ H( @/ F9 L
  2. {8 _7 n% p' b" z
  3.         int uii;
    - C! Y0 k7 v  o
  4.         LCD_set_XY(0,0);
    0 Y! U. j5 F+ |; l4 s  Q. q
  5.         for(uii=0; uii<504; uii++)3 `- y3 z; p. E, L2 \* k
  6.         {
    * n3 h( D; _7 v8 m8 h: |
  7.                 LCD_write_Data(0x00);
    - d5 K/ X$ z$ H5 X
  8.         }! L7 }3 G- U/ P& ^
  9. }$ U% u4 m# v1 n, w5 \' e  g6 |  [
复制代码
数据输出函数是通过读取字符库数组来显示字符的,其代码如下:
! U5 @/ }$ o  N8 p2 r8 {& x
  1. void LCD_write_char(unsigned char c): F9 N  U1 b- O) V# p! T
  2. {
    " J$ R5 \$ e9 d4 @$ j
  3.     unsigned char line;  ?6 R5 Y. _) N8 W
  4.     c -= 32;
      h: C: C) g& t
  5.     for (line=0; line<6; line++); ~, C% N8 i2 D" f
  6.         {
    & ~' ^3 F) P+ G( A$ n, |
  7.               LCD_write_Data(font6x8[c][line]);
    ' Q0 B* u$ q+ [. O+ x
  8.           }
    + K: P0 i- P* m! @% }7 [
  9. }% d5 r: x) D/ }) I: [0 H
复制代码
字符库数组的结构如下:
9 ?) H0 T9 t( E" ~! `6 \+ Y
  1. unsigned char font6x8[][6] =
    ! o7 P' V: Y5 E( E( i/ R, q7 u4 R
  2. {
    - M: Z+ A8 c. [/ S5 t1 X
  3.     { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },   // sp4 i% M# I0 X; `+ Q3 y4 X  z4 Z9 R
  4.     { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },   // !
    & i9 ^4 s9 d8 i+ h, ]; G
  5.     { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },   // "& p% h8 R- Z6 L0 F
  6.     { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },    // #' c' l4 j8 ?1 J: A1 h7 Z: P
  7.     ... ...
    0 A4 \4 N8 W% p$ N
  8. ; o* Q3 k' {% U  Y. \6 z
  9.     { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },   // x! }2 M; D; Z3 k  e8 _5 Z2 S
  10.     { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },   // y. e  e* P1 R6 b+ Z; q3 D
  11.     { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },   // z) E& V% {( ]/ f/ b6 O
  12.     { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }    // horiz lines
    4 ]$ ~4 ?- K0 G
  13. }8 O7 K; W+ k# H- M/ j3 @9 V1 Y9 q8 }
复制代码
主函数的代码为:* L/ I( @. E7 s
  1. int main(void)( e& M. V0 v5 t- [; b( `
  2. {
    6 j4 E) A% H9 v! z- R3 d3 s% I: Q
  3.   HAL_Init();
    ! d: i8 |" G, \: W$ c
  4.   /* 配置系统时钟到2 MHz */
    & B9 P( H3 Z1 e# |0 O2 B: {: @
  5.   SystemClock_Config();) n# _/ |9 N  H& g( n, p
  6.   /* 配置LED2 */
    3 }. w) P* W8 d( [
  7.   BSP_LED_Init(LED2);- U7 H# S1 @$ ?/ P4 @: a
  8.   /* 配置 TIM 的外围情况 */
    ; Q: v* T) E5 |! v! I  _% {8 k
  9.   /*  TIM2 配置: 输入捕捉模式
    # f* K5 B7 I% w+ [
  10.      外部信号连接到 TIM2 的通道2 引脚为PB.03
    $ y( h  R; J* n& V7 R
  11.      使用上升沿触发,TIM2 的CCR2 用于 计数的频率值  */
    1 Q, O; u6 r6 _% w. X6 |* G
  12.   TimHandle.Init.Period      = 0xFFFF;
    ) _5 Z# U4 ^+ C# W9 W! a- {7 z) [
  13.   TimHandle.Init.Prescaler    = 0;
    , b! w8 A# @- [( T" @
  14.   TimHandle.Init.ClockDivision  = 0;; u  V/ A2 G% U
  15.   TimHandle.Init.CounterMode  = TIM_COUNTERMODE_UP;: e, S. d" u- L9 Y5 A/ ~
  16.   if(HAL_TIM_IC_Init(&TimHandle) != HAL_OK)
    ' w- y' W. b) i( I: B5 b) L
  17.   {$ J; J) ?; p! M1 Q6 K& l
  18.     /* I初始化报错 */  A. R/ b1 T* l
  19.     Error_Handler();5 E- x0 |$ W5 a, M8 L. R0 ?' [
  20.   }& X- y: b. S7 \7 C3 l
  21.   /* 设置输入捕捉通道2 */
    ! H! s( k  x( x( Y
  22.   sICConfig.ICPolarity  = TIM_ICPOLARITY_RISING;. K2 |6 P4 |& }! \) m% L( ^; T
  23.   sICConfig.ICSelection = TIM_ICSELECTION_DIRECTTI;$ N+ E; W1 H) l4 M0 _
  24.   sICConfig.ICPrescaler = TIM_ICPSC_DIV1;/ f! d; W/ x  M: A
  25.   sICConfig.ICFilter    = 0;   ) |) [+ ~! F- W8 U4 n, J0 d- J% P
  26.   if(HAL_TIM_IC_ConfigChannel(&TimHandle, &sICConfig, TIM_CHANNEL_2) != HAL_OK)$ x$ q; q* s5 C
  27.   {
    % K. a: }9 D3 z5 {
  28.     /* 配置报错 */$ e4 ]  M' r3 ]! O+ t
  29.     Error_Handler();
    * n% C, X6 ?& R! ^
  30.   }! _6 d" C" v* Y" U; h
  31.   6 l( t5 x* T4 ?7 I
  32.   /* 以中断模式启动输入捕捉 */
      @  X: G$ a, c0 C9 Z
  33.   if(HAL_TIM_IC_Start_IT(&TimHandle, TIM_CHANNEL_2) != HAL_OK), z1 K9 P/ F5 J0 r1 ^
  34.   {
    2 P" v5 `  `  q& w2 A/ Z  [
  35.     /* 启动报错 */* P, W: ?; x$ F* }0 _  f" V- {
  36.     Error_Handler();
    : s3 d( M7 _0 j) P+ `7 @
  37.   }6 f/ z# h! Z. w
  38.             LCD_Init();    // LCD5110初始化- V! t+ L/ A4 ~  r5 `* W5 `, H7 G2 n5 @
  39.             jm();        //  显示界面
    - _8 \/ a8 W: [4 }2 y4 R/ d9 r
  40.         // 设置显示格式
    0 d1 f0 c3 d, ]1 k
  41.                 LCD_set_XY(0,1);+ h  M' l! o0 L
  42.                 LCD_write_char('C');* X$ x% z; v2 g! x: `
  43.                 LCD_write_char('1');& N% p# c$ @* Z9 ~
  44.                 LCD_write_char('=');
    , H3 ^+ P( K; f: |# ]
  45.                 LCD_set_XY(0,2);
    ) O& B; Z. M4 ?# |# m8 C
  46.                 LCD_write_char('C');
    5 Q- z4 _# U' f: |$ ~, F2 ?
  47.                 LCD_write_char('2');
    . y# u1 [) X8 w. X
  48.                 LCD_write_char('=');7 `' C# A7 \* `* }
  49.                 LCD_set_XY(0,3);9 B8 L7 G1 F5 K! Y- v
  50.                 LCD_write_char(' ');1 T0 \- N0 _! ]9 V; ?9 v/ r/ h
  51.                 LCD_write_char('d');1 x) g* z0 X, d; j0 k# k
  52.                 LCD_write_char('=');
    " a# g5 I& a- U) n$ \7 a: ^; {
  53.             LCD_set_XY(0,4);9 p) q- c1 g1 B5 u& v2 C
  54.                 LCD_write_char(' ');) }5 F( }9 t. f2 Y
  55.                 LCD_write_char('f');5 b3 {' Z2 i/ z, ]1 |
  56.                 LCD_write_char('=');$ P& r4 u0 y/ j( y& x
  57.   while(1)
    - R6 f1 E8 V0 w2 D
  58.   {     //  显示捕捉值+ @( q5 U- _( j, ]/ a5 u8 T. {: }
  59.                 LCD_write_number(30,1,uwIC2Value1);
    7 p- u1 w0 v' U/ ^: e4 `& {
  60.                 LCD_write_number(30,2,uwIC2Value2);  P7 M; h' d. U5 z+ L
  61.                 LCD_write_number(30,3,uwDiffCapture);! P2 _. {8 w1 G+ t3 h# I5 _
  62.                 LCD_write_number(30,4,uwFrequency);! W! [+ Y  i& A9 k+ v
  63.                 delay_1ms(1000);  // 控制采集数据的显示间隔
    9 e/ W0 z- N4 Z( W* w% W
  64.   }
    & H( O: W' c. s- G5 L  D
  65. }% B$ q* a3 \2 P3 s: I4 Q7 v
复制代码
定时捕捉处理函数代码为:! V. m/ h, A! v7 b
  1. void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
    6 Q+ y- U- P4 n2 B8 m4 @
  2. {7 o2 S4 _( y9 w' k
  3.   if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2)1 v0 a; a' H) Y: |9 G4 V
  4.   {, i2 }- v" v4 g8 [3 J4 _# H$ H
  5.     if(uhCaptureIndex == 0)! Z. B5 r# ]" \/ n
  6.     {
      o) K5 u' q, [
  7.       /* 获取第一次捕捉值 */' o5 k0 o2 S4 T3 d+ l2 b1 y
  8.       uwIC2Value1 = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2);
    $ q' Z7 C* F* S6 e
  9.       uhCaptureIndex = 1;
    8 k/ w! N- x' K. q, B
  10. }6 A8 W3 C8 v6 L8 e4 |% l
  11.     else if(uhCaptureIndex == 1)
    0 _* V6 S+ u( @' s
  12.     {
    % W' ^* ^" \7 f  U: M% Z
  13.       /* 获取第二次捕捉值 */, `' e" N# X! G$ e3 s
  14.       uwIC2Value2 = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2);   b5 _1 [/ g- B0 y' I
  15.       /* 捕捉计算 */
    1 {% m. G8 d; i. ^  e% H
  16.       if (uwIC2Value2 > uwIC2Value1)% S- J5 i/ o. |. d
  17.       {: t% N2 d, P" e: l0 A- e2 [
  18.         uwDiffCapture = (uwIC2Value2 - uwIC2Value1);            //  计算差值  
    - D; v3 g2 [& f, A# n: J5 j) R; f
  19.       }  L8 ?2 r/ n: z( g8 {+ ~9 A
  20.       else if (uwIC2Value2 < uwIC2Value1)1 [, L. T3 q# `* N: p) z2 L
  21.       {
    ; N" M4 t9 g; ]1 ^
  22.         uwDiffCapture = ((0xFFFF - uwIC2Value1) + uwIC2Value2) + 1; //  超界补偿处理
    * l: w5 V6 {0 X
  23.       }
    4 U' P& ~& Y2 j
  24.       else
    # z9 w. g7 l/ d# X1 y9 G) y, d
  25.       {
    ; F* a9 L( x% ~& a$ X7 A6 U; s
  26.         /* 假如捕捉值相等,则已达到测量频率的极限 */+ p( p& d0 w& V
  27.         Error_Handler();                                     //  捕捉值相等时报错! ]# a' K' D- S3 ]/ E9 ]
  28.       }/ Y% T) S0 o" V& R, o0 B% g% d
  29.       /* 频率计算: 这是一个以APB1Clk为TIM2计时的示例 */      
    ! a# P0 W! `" r6 `# _+ ^5 P
  30.       uwFrequency = HAL_RCC_GetPCLK1Freq() / uwDiffCapture;
    ; c+ D8 g3 ~2 ^
  31.       uhCaptureIndex = 0;
    ! o) Y! l; b- G, b. b+ S
  32.     }
    $ O1 I) C" J4 x, w2 W
  33.   }. O  G* P! c, \7 m9 I5 l) @: ~# q1 V
  34. }
    9 F! e# K3 V; t8 y
复制代码
数据定位显示函数的代码为:
$ x- d* C* W# \% g
  1. void LCD_write_number(unsigned char X,unsigned char Y,uint32_t dat)
    1 n3 w- c5 z" L. ^
  2. {
    9 l6 \4 D! {: v
  3.                 LCD_set_XY(X,Y);* X$ Z, x- w4 B9 |9 D
  4.                 LCD_write_char('C');! k) D# m( x/ Q2 z; c3 D' d- [3 [( e6 ^
  5.                 LCD_write_char('=');
    $ _& q" u! F6 L% I, o* y  R
  6.             if(dat>999999) LCD_write_char(dat%10000000/1000000+0x30);! D, d- ~( e0 g  M5 m, E1 G$ F
  7.             if(dat>99999) LCD_write_char(dat%1000000/100000+0x30);1 Y7 c3 U6 g3 |% n9 |0 ]
  8.                 if(dat>9999) LCD_write_char(dat%100000/10000+0x30);
    - K6 N1 V4 y; L/ L. z' O! ?
  9.             if(dat>999) LCD_write_char(dat%10000/1000+0x30);
    ( z6 w- E- V9 z
  10.                 if(dat>99) LCD_write_char(dat%1000/100+0x30);0 c8 B( x% T7 Y' c
  11.                 if(dat>9) LCD_write_char(dat%100/10+0x30);
      L. [& f, Q; y/ P8 w% I
  12.                 LCD_write_char(dat%10+0x30);
    ) v1 A5 q* G7 s. Q
  13. }, J) T0 D( v. E
复制代码

6 P5 A* M& W) F  O$ a
2 a% e, m+ H: t& U
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:26
4 K9 H5 v$ H9 S麻烦楼主把程序工程分享一下
- N: X& U( y7 C
你代码放到STM32L073的相关例程中进行编译即可,我做的主要工作就是为它配上了LCD5110屏的驱动显示等,你试一试就知道了。
sxdahss 回答时间:2016-9-28 09:10:38
jinglixixi 发表于 2016-9-28 08:48
8 V9 h( V% k0 W9 w你代码放到STM32L073的相关例程中进行编译即可,我做的主要工作就是为它配上了LCD5110屏的驱动显示等,你 ...
; k) n1 u7 |, K$ `$ V
我已经下到了官网的例程,谢谢你
zhangdaijin 回答时间:2016-9-28 09:11:32
谢谢分享

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版