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

【安富莱——DSP教程】第18章 ComplexMathFunctions的使用(二)

[复制链接]
baiyongbin2009 发布时间:2015-3-30 10:57
特别说明:完整45期数字信号处理教程,原创高性能示波器代码全开源地址:链接, [* l. t. F2 Y1 x3 L2 D8 D% K' p
第18章 ComplexMathFunctions的使用(二)
! _  h' a+ [( W( p
    本期教程主要讲解复数运算中的模平方,复数乘法和复数乘实数的求解。
    18.1 复数模平方 ComplexMagSquared
    18.2 复数乘法 ComplexMultComplex
    18.3 复数乘实数 ComplexMultComplex
    18.4 总结

; X9 ^/ q8 Z3 m$ G6 I" i" D18.1 复数模平方 ComplexMagSquared18.1.1 arm_cmplx_mag_squared_f32
公式描述:
    for(n=0; n<numSamples; n++) {        
            pDst[n] = pSrc[(2*n)+0]^2 + pSrc[(2*n)+1]^2;        
     }  
函数定义如下:
    void arm_cmplx_mag_squared_f32(float32_t * pSrc, float32_t * pDst, uint32_t numSamples)
参数定义:
    [in]  *pSrc   points to the complex input vector        
    [out]  *pDst  points to the real output vector        
    [in]  numSamples  number of complex samples in the input vector  
注意事项:
    1. 数组pSrc和pDst中存储的数据格式是(实部,虚部,实部,虚部……………)

! J7 m9 ?! P& k1 U& B
18.1.2 arm_cmplx_mag_squared_q31
公式描述:
    for(n=0; n<numSamples; n++) {        
            pDst[n] = pSrc[(2*n)+0]^2 + pSrc[(2*n)+1]^2;        
     }  
函数定义如下:
    void arm_cmplx_mag_squared_q31(q31_t * pSrc, q31_t * pDst, uint32_t numSamples)
参数定义:
    [in]  *pSrc   points to the complex input vector        
    [out]  *pDst  points to the real output vector        
    [in]  numSamples  number of complex samples in the input vector  
注意事项:
    1. 数组pSrc和pDst中存储的数据格式是(实部,虚部,实部,虚部……………)
- j* q0 s) [% I3 i
18.1.3 arm_cmplx_mag_squared_q15
公式描述:
    for(n=0; n<numSamples; n++) {        
            pDst[n] = pSrc[(2*n)+0]^2 + pSrc[(2*n)+1]^2;        
     }  
函数定义如下:
    void arm_cmplx_mag_squared_q15(q15_t * pSrc, q15_t * pDst, uint32_t numSamples)
参数定义:
    [in]  *pSrc   points to the complex input vector        
    [out]  *pDst  points to the real output vector        
    [in]  numSamples  number of complex samples in the input vector  
注意事项:
    1. 数组pSrc和pDst中存储的数据格式是(实部,虚部,实部,虚部……………)
+ T3 G! ^. N, ~- R9 h/ f: Z  U
18.1.4 实例讲解
实验目的:
     1. 学习ComplexMathFunctions中模平方的求解
实验内容:
    1. 按下按键K1, 串口打印函数DSP_MagSquared的输出结果
实验现象:
    通过窗口上位机软件SecureCRT(V5光盘里面有此软件)查看打印信息现象如下:
18.1.jpg
程序设计:
  1. /*/ k- z. l7 @! E3 I  D/ \* j! C
  2. *********************************************************************************************************0 X: `, i( j: \. L
  3. *        函 数 名: DSP_MagSquared6 ?( ~$ l4 |5 J+ w( `
  4. *        功能说明: 复数模的平方
    / ?' Y% y* ?' q
  5. *        形    参:无9 y1 L7 T: n+ I
  6. *        返 回 值: 无1 s  `6 k* c8 U: e& i, q
  7. *********************************************************************************************************  Z2 W5 K# h- {8 P: V
  8. */
    " r9 {0 h. }3 l2 T# ]
  9. static void DSP_MagSquared(void)
    * Y+ [9 U4 K6 N+ N) w4 R! k0 [; ~) p
  10. {
      q* {" ~) x& c
  11. uint8_t i;
    5 ]  m) m5 o3 c$ S) v3 B
  12. float32_t pSrc[10] = {1.1f, 1.1f, 2.1f, 2.1f, 3.1f, 3.1f, 4.1f, 4.1f, 5.1f, 5.1f};1 k" o# c- R' f8 O3 r* B  G1 ~: X
  13. float32_t pDst[10];
    ( c! U) L$ v, P" w8 W# Q
  14. q31_t pSrc1[10] = {1*268435456, 1*268435456, 2*268435456, 2*268435456, 3*268435456, 3*268435456,
    $ Q# o, ]6 ~' K% D
  15.                     4*268435456, 4*268435456, 5*268435456, 5*268435456};4 J& y! D5 k  G5 x1 A
  16. q31_t pDst1[10];
    ; H! E2 o6 B: t. h/ h
  17. 7 q, y/ g+ i% \% N0 Z9 ?! S+ \' U
  18. q15_t pSrc2[10] = {5000, 10000, 15000, 20000, 25000,  5000, 10000, 15000, 20000, 25000};0 V6 h+ O) g1 ?) k
  19. q15_t pDst2[10];
    4 h8 Y4 |% D  ^3 F
  20. /***浮点数模平方*******************************************************************************/
    ( q, Y& o" t$ Q7 \; n: @2 k9 u9 E7 w
  21. arm_cmplx_mag_squared_f32(pSrc, pDst, 5);: \  d1 i/ z/ X
  22. for(i = 0; i < 5; i++)
    8 ^, ~2 C) p" M% l1 B% N
  23. {, v- l: p4 K4 i; Q
  24. printf("pDst[%d] = %f\r\n", i, pDst[i]);+ ?9 r1 _, C9 Q4 c
  25. }( G" z8 a  C" F' q: D
  26. /***定点数模平方Q31*******************************************************************************/
    7 q3 V: u4 D& L9 j
  27. arm_cmplx_mag_squared_q31(pSrc1, pDst1, 5);3 n/ \4 ?# Y' K4 z9 U! }
  28. for(i = 0; i < 5; i++)9 j" N# q  E+ H. s+ k
  29. {
    2 h3 ^0 M  q$ X, @% B. D# u; W
  30. printf("pDst1[%d] = %d\r\n", i, pDst1[i]);( G8 r/ q+ j& R: K  S
  31. }# X+ v6 E+ m9 V
  32. /***定点数模平方Q15*******************************************************************************/
    6 A1 T6 D7 Y" Y6 j7 r6 c6 F
  33. arm_cmplx_mag_squared_q15(pSrc2, pDst2, 5);
    $ z3 L$ u* y, E6 ]" \8 y
  34. for(i = 0; i < 5; i++)
    & H8 C9 U6 L) h( }9 N( P
  35. {/ q4 L0 @8 g6 D' ~5 f+ L7 h, F, K
  36. printf("pDst2[%d] = %d\r\n", i, pDst2[i]);
      N: L; k5 }1 j# K* N+ j4 G; q3 T
  37. }
    6 E$ Z& T3 I4 c7 \1 m4 L
  38. }
复制代码

7 \) Y% z! L& T  T4 Q! _7 m
收藏 评论5 发布时间:2015-3-30 10:57

举报

5个回答
baiyongbin2009 回答时间:2015-3-30 11:00:44
18.2 复数乘法 ComplexMultComplex
# W& ]& h  I  n% t+ K; V! W# z+ n

4 D* V( E2 E" h; P18.2.1 arm_cmplx_mult_cmplx_f32
公式描述:
    for(n=0; n<numSamples; n++) {        
            pDst[(2*n)+0] = pSrcA[(2*n)+0] * pSrcB[(2*n)+0] - pSrcA[(2*n)+1] * pSrcB[(2*n)+1];        
            pDst[(2*n)+1] = pSrcA[(2*n)+0] * pSrcB[(2*n)+1] + pSrcA[(2*n)+1] * pSrcB[(2*n)+0];        
    }  
函数定义如下:
    void arm_cmplx_mult_cmplx_f32(
      float32_t * pSrcA,
         float32_t * pSrcB,
        float32_t * pDst,
        uint32_t numSamples)
参数定义:
    [in]  *pSrcA   points to the first input vector        
    [in]  *pSrcB   points to the second input vector        
    [out]  *pDst   points to the output vector        
    [in]  numSamples number of complex samples in each vector   
注意事项:
    1. 数组pSrcA, pSrcB和pDst中存储的数据格式是(实部,虚部,实部,虚部……………)

% O; ^% u3 K- U" p( i
18.2.2 arm_ cmplx_mult_cmplx_q31
公式描述:
    for(n=0; n<numSamples; n++) {        
            pDst[(2*n)+0] = pSrcA[(2*n)+0] * pSrcB[(2*n)+0] - pSrcA[(2*n)+1] * pSrcB[(2*n)+1];        
            pDst[(2*n)+1] = pSrcA[(2*n)+0] * pSrcB[(2*n)+1] + pSrcA[(2*n)+1] * pSrcB[(2*n)+0];        
    }
函数定义如下:
    void arm_cmplx_mult_cmplx_q31(
        q31_t * pSrcA,
        q31_t * pSrcB,
        q31_t * pDst,
        uint32_t numSamples)
参数定义:
    [in]  *pSrc   points to the complex input vector        
    [out]  *pDst  points to the real output vector        
    [in]  numSamples  number of complex samples in the input vector  
注意事项:
    1. 数组pSrcA, pSrcB和pDst中存储的数据格式是(实部,虚部,实部,虚部……………)

- v/ Y) @7 y2 d4 s2 \0 m9 i
18.2.3 arm_cmplx_mult_cmplx_q15
公式描述:
    for(n=0; n<numSamples; n++) {        
            pDst[(2*n)+0] = pSrcA[(2*n)+0] * pSrcB[(2*n)+0] - pSrcA[(2*n)+1] * pSrcB[(2*n)+1];        
            pDst[(2*n)+1] = pSrcA[(2*n)+0] * pSrcB[(2*n)+1] + pSrcA[(2*n)+1] * pSrcB[(2*n)+0];        
    }   
函数定义如下:
    void arm_cmplx_mult_cmplx_q15(
        q15_t * pSrcA,
        q15_t * pSrcB,
        q15_t * pDst,
        uint32_t numSamples)
参数定义:
    [in]  *pSrc   points to the complex input vector        
    [out]  *pDst  points to the real output vector        
    [in]  numSamples  number of complex samples in the input vector  
注意事项:
    1. 数组pSrcA, pSrcB和pDst中存储的数据格式是(实部,虚部,实部,虚部……………)

4 z' ~! m  _/ b2 G

; d" i) \/ b0 V, X0 h# I6 ?: k18.2.4
实例讲解
实验目的:
    1. 学习ComplexMathFunctions中复数乘法的求解
实验内容:
    1. 按下按键K2, 串口打印函数DSP_CmplxMult的输出结果
实验现象:
    通过窗口上位机软件SecureCRT(V5光盘里面有此软件)查看打印信息现象如下:
18.2.jpg
程序设计:
  1. /*3 M( w8 z: D  v3 _* p* c
  2. *********************************************************************************************************
    ' u- ^2 D: I* P5 @" f! H. Y
  3. *        函 数 名: DSP_CmplxMult
    2 B! O; I6 n) Q0 ^5 Z
  4. *        功能说明: 复数乘法  ?; _, ]( B  ~0 |. ]" h5 K
  5. *        形    参:无. T4 Y# m2 n% O: }& D
  6. *        返 回 值: 无8 k' F3 [/ s2 U. \/ T
  7. *********************************************************************************************************
    2 ]% w3 j" b( G+ \7 s
  8. */8 e+ q; U. l" b" h& ?
  9. static void DSP_CmplxMult(void)
    0 z- ^4 B! q! ?% e# p2 @& Q1 J
  10. {
    2 q8 g+ H* ]+ Q4 J  C" Y+ y
  11. uint8_t i;4 n5 K& Y5 F+ H  h6 E0 K
  12. float32_t pSrcA[10] = {1.1f, 1.2f, 2.1f, 2.2f, 3.1f, 3.2f, 4.1f, 4.2f, 5.1f, 5.2f};
    : Z9 L' z/ b" o8 K
  13. float32_t pSrcB[10] = {1.2f, 1.2f, 2.2f, 2.2f, 3.2f, 3.2f, 4.2f, 4.2f, 5.2f, 5.2f};
    $ J( i+ A& @) c' ^& K2 B4 V4 i; N4 G
  14. float32_t pDst[10];
    0 ~. ?  N6 D' v# [  V( m- F2 ~" {" v/ c
  15. q31_t pSrcA1[10] = {1*268435456, 1*268435456, 2*268435456, 2*268435456, 3*268435456, 3*268435456,
    ( @$ x( r3 p  K; @3 f
  16.                     4*268435456, 4*268435456, 5*268435456, 5*268435456};( s7 D' ?3 E0 W2 N8 ^1 U5 w9 ]
  17. q31_t pSrcB1[10] = {1*268435456, 1*268435456, 2*268435456, 2*268435456, 3*268435456, 3*268435456,
    % e; m4 _( R6 Y8 t/ P! H
  18.                     4*268435456, 4*268435456, 5*268435456, 5*268435456};
    & g/ z; ~9 D% t7 ]  I
  19. q31_t pDst1[10];
    0 G  g1 y* t) h- h
  20. q15_t pSrcA2[10] = {5000, 10000, 15000, 20000, 25000,  5000, 10000, 15000, 20000, 25000};
    5 \- B0 w; R: k  u2 s8 x' Z
  21. q15_t pSrcB2[10] = {6000, 11000, 15000, 20000, 25000,  5000, 10000, 15000, 20000, 25000};% Z; F* f' ~! {$ H
  22. q15_t pDst2[10];
    6 q$ @+ J- V# l( _: ~8 V9 R7 w
  23. /***浮点数乘法*******************************************************************************/
    6 f# i7 g" c6 U) L1 Q5 W
  24. arm_cmplx_mult_cmplx_f32(pSrcA, pSrcB, pDst, 5);' H% V* p9 Q* `0 S& I9 c! x9 g8 e$ T
  25. for(i = 0; i < 5; i++)
    * v5 Q9 `% x# \; [- q; Z
  26. {
    8 k" Q& [/ _$ u/ K+ e- _6 F7 Y
  27. printf("pDst[%d] = %f %fj\r\n", i, pDst[2*i], pDst[2*i+1]);
    9 y0 a& x, S9 E) C+ b$ y3 b) i$ v
  28. }0 V- @2 H+ D$ Q3 ]% N
  29. /***定点数乘法Q31*******************************************************************************/6 S, o0 e3 I+ p! J# }
  30. arm_cmplx_mult_cmplx_q31(pSrcA1, pSrcB1, pDst1, 5);
    4 ~2 ?% f: t2 c. G
  31. for(i = 0; i < 5; i++)
    6 u5 K$ W( k- g0 E0 y6 D" @' ^
  32. {' x# A" b; N% [4 w
  33. printf("pDst1[%d] = %d %dj\r\n", i, pDst1[2*i], pDst1[2*i+1]);
    % O0 W) i: D( o& b, m
  34. }( z3 Y* q3 v% ?' R6 d! Z
  35. /***定点数乘法Q15*******************************************************************************/
    7 ~7 U" h, J/ I4 Q9 m6 B
  36. arm_cmplx_mult_cmplx_q15(pSrcA2, pSrcB2, pDst2, 5);# ?8 v- P2 E2 w7 Z$ i3 B: V7 q2 w' {
  37. for(i = 0; i < 5; i++)3 r* w, p: n, @9 H. r5 z. Q+ h% X
  38. {& v7 \# r" {& t( i& O6 g
  39. printf("pDst1[%d] = %d %dj\r\n", i, pDst2[2*i], pDst2[2*i+1]);7 h: l* r0 U; w% R: a5 s- `
  40. }
    $ ~' o9 [/ v3 F7 o; s9 f5 H
  41. }
复制代码
: }, n5 x' J+ w
9 j9 t2 h5 _. N8 c! I' ?
6 g+ v6 y3 y+ d& C8 H
baiyongbin2009 回答时间:2015-3-30 11:04:00
18.3 复数乘实数 ComplexMultComplex" X: K4 y% x: y+ {$ R' {" L! Y" L2 \
1 }" P  Y" Z5 O% y" O$ V
18.3.1 arm_cmplx_mult_cmplx_f32
公式描述:
    for(n=0; n<numSamples; n++) {        
           pCmplxDst[(2*n)+0] = pSrcCmplx[(2*n)+0] * pSrcReal[n];        
           pCmplxDst[(2*n)+1] = pSrcCmplx[(2*n)+1] * pSrcReal[n];        
     }   
函数定义如下:
    void arm_cmplx_mult_real_f32(
        float32_t * pSrcCmplx,
        float32_t * pSrcReal,
        float32_t * pCmplxDst,
        uint32_t numSamples)
参数定义:
     [in]  *pSrcCmplx   points to the complex input vector        
     [in]  *pSrcReal     points to the real input vector        
     [out]  *pCmplxDst  points to the complex output vector        
     [in]  numSamples  number of samples in each vector
注意事项:
    1. 数组pSrcCmplx, pCmplxDst中存储的数据格式是(实部,虚部,实部,虚部……………)
. v! D8 P1 x1 e& {1 b7 O; Z: D0 i
18.3.2 arm_ cmplx_mult_cmplx_q31
公式描述:
     for(n=0; n<numSamples; n++) {        
           pCmplxDst[(2*n)+0] = pSrcCmplx[(2*n)+0] * pSrcReal[n];        
           pCmplxDst[(2*n)+1] = pSrcCmplx[(2*n)+1] * pSrcReal[n];        
     }  
函数定义如下:
    void arm_cmplx_mult_real_q31(
        q31_t * pSrcCmplx,
        q31_t * pSrcReal,
        q31_t * pCmplxDst,
        uint32_t numSamples)
参数定义:
    [in]  *pSrcCmplx   points to the complex input vector        
    [in]  *pSrcReal     points to the real input vector        
    [out]  *pCmplxDst  points to the complex output vector        
    [in]  numSamples  number of samples in each vector
注意事项:
    1. 数组pSrcCmplx, pCmplxDst中存储的数据格式是(实部,虚部,实部,虚部……………)

9 g  g6 K( H6 i$ T. z9 _. C  v+ d& t
18.3.3 arm_cmplx_mult_cmplx_q15
公式描述:
     for(n=0; n<numSamples; n++) {        
           pCmplxDst[(2*n)+0] = pSrcCmplx[(2*n)+0] * pSrcReal[n];        
           pCmplxDst[(2*n)+1] = pSrcCmplx[(2*n)+1] * pSrcReal[n];        
     }
函数定义如下:
    void arm_cmplx_mult_real_q15(
        q15_t * pSrcCmplx,
        q15_t * pSrcReal,
        q15_t * pCmplxDst,
        uint32_t numSamples)
参数定义:
    [in]  *pSrcCmplx   points to the complex input vector        
    [in]  *pSrcReal     points to the real input vector        
    [out]  *pCmplxDst  points to the complex output vector        
    [in]  numSamples  number of samples in each vector
注意事项:
    1. 数组pSrcCmplx, pCmplxDst中存储的数据格式是(实部,虚部,实部,虚部……………)

5 f- O% y  o8 c) {- Z
18.3.4 实例讲解
实验目的:
    1. 学习ComplexMathFunctions中复数乘法的求解
实验内容:
    1. 按下按键K3, 串口打印函数DSP_CmplxMultReal的输出结果
实验现象:
    通过窗口上位机软件SecureCRT(V5光盘里面有此软件)查看打印信息现象如下:
18.3.jpg
程序设计:
  1. /*1 b2 o& E( D& Q2 J0 \9 j0 @
  2. *********************************************************************************************************4 L$ O5 ^' g3 Y* ]$ D) c; d
  3. *        函 数 名: DSP_CmplxMultReal
    - J0 q1 r) d; v
  4. *        功能说明: 复数乘实数
    0 ?1 W: i3 k# `8 P+ r$ c! n+ y
  5. *        形    参:无
    $ [/ M9 w( m1 u
  6. *        返 回 值: 无( {/ @" f7 ~: E' ^6 @  S- d# ?6 p) G
  7. *********************************************************************************************************) f- Y  s; I/ D& p" [. O
  8. */9 Z) i* ^: N9 a7 M5 R
  9. static void DSP_CmplxMultReal(void)) h. p  F) t4 N
  10. {  C0 C+ d# C6 g! a, g, P9 l
  11. uint8_t i;* c  x, f: L; R9 f4 r7 X+ i. M! N
  12. float32_t pSrcCmplx[10] = {1.1f, 1.2f, 2.1f, 2.2f, 3.1f, 3.2f, 4.1f, 4.2f, 5.1f, 5.2f};
    ' F6 Z  G+ L& \6 s
  13. float32_t pSrcReal[5] = {1.2f, 1.2f, 2.2f, 2.2f, 3.2f};
    ( W% K5 t. C$ N" w3 y
  14. float32_t pCmplxDst[10];
    ' \7 v; N- L( o% g- Q
  15. q31_t pSrcCmplx1[10] = {1*268435456, 1*268435456, 2*268435456, 2*268435456, 3*268435456, 3*268435456,
    : J8 M; N# N5 f
  16.                     4*268435456, 4*268435456, 5*268435456, 5*268435456};: k, N/ }' U5 a
  17. q31_t pSrcReal1[10] = {1*268435456, 1*268435456, 2*268435456, 2*268435456, 3*268435456};( u9 U$ Q; F: E/ D* O
  18. q31_t pCmplxDst1[10];4 `" r) F$ W& d  A. m3 O& k
  19. q15_t pSrcCmplx2[10] = {14000, 16000, 20000, 20000, 30000, 31000, 12000, 13000, 14000, 25000};
    # P" k( Y0 S% y1 V6 {" P8 _( _, G
  20. q15_t pSrcReal2[10] =  {15000, 17000, 20000, 20000, 30000};+ c3 m' O# {7 _" T6 H! w6 q3 [
  21. q15_t pCmplxDst2[10];
    ! h1 ~, y+ x: N8 _; ^1 x3 Q
  22. /***浮点数*******************************************************************************/+ d( G& s1 i8 y6 J2 Y- |7 o0 a
  23. arm_cmplx_mult_cmplx_f32(pSrcCmplx, pSrcReal, pCmplxDst, 5);
    0 |" @" b9 _. y- T  K
  24. for(i = 0; i < 5; i++)
    3 `2 R3 J8 H3 \# n9 p0 o( U
  25. {
    : E' n7 k& P/ s; B# K' n8 U% Y' B
  26. printf("pCmplxDst[%d] = %f %fj\r\n", i, pCmplxDst[2*i], pCmplxDst[2*i+1]);$ n$ F% A: h2 _; d# Q, \2 h5 d
  27. }/ P6 r0 P8 n! y3 d* Y( Z6 D
  28. /***定点数Q31*******************************************************************************/* Z# v; X! [- {# ^# ?  d* C1 M5 `/ }
  29. arm_cmplx_mult_cmplx_q31(pSrcCmplx1, pSrcReal1, pCmplxDst1, 5);# H( n, F, ~8 p5 x
  30. for(i = 0; i < 5; i++)
    % s% Y9 I6 l7 O
  31. {
    " o" I; w, c: ]% u1 X% d
  32. printf("pCmplxDst1[%d] = %d %dj\r\n", i, pCmplxDst1[2*i], pCmplxDst1[2*i+1]);
    + q: D( P, ]# k8 ^& a6 F  u6 O" g
  33. }
    " z3 n, {* P: d. Q% H
  34. /***定点数Q15*******************************************************************************/
    $ W4 B- X( Y" Y' _( R) c
  35. arm_cmplx_mult_cmplx_q15(pSrcCmplx2, pSrcReal2, pCmplxDst2, 5);
    : ^2 ]& E2 ]; l5 T
  36. for(i = 0; i < 5; i++)4 q2 E1 i+ l& B$ J( j
  37. {
    ) t+ x8 H8 _& S3 \+ L+ J
  38. printf("pCmplxDst2[%d] = %d %dj\r\n", i, pCmplxDst2[2*i], pCmplxDst2[2*i+1]);
      ^. B7 l. R4 N% T' l$ A
  39. }
      V4 C! C: B/ C
  40. }
复制代码
' K  x/ I: a, M' n; X
18.4 总结
    本期教程就跟大家讲这么多,有兴趣的可以深入研究下算法的具体实现。

( @" o% C' R& {! `; Q7 K" C! v6 E/ q+ Q* g9 n3 z+ L7 M2 [
kqh1120 回答时间:2015-3-30 11:13:01
学习了啊 smile.gif
木木鱼 回答时间:2015-3-30 11:26:49
好好的学习下!
sfee2002 回答时间:2015-3-30 12:12:28
正在学习中,顶一下

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版