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

【STM32G491试用】03+MDK+Stm32cubeIDE双工程搞定Printf

[复制链接]
caizhiwei 发布时间:2021-3-26 09:33
     这几天一直在捣鼓板子,查资料现学现卖,觉都睡不好,一遍熟悉知识点消化,一边总结。做梦都在搞板子!由于第一次使用Hal库,第一次使用新的编译器,又在LL库的边缘徘徊,期间又切换到RTTstudio。            最初几天串口没有调试通,很郁闷,看到别的小伙伴一篇篇的优质测评帖,我心里急啊。今天,我的第三篇测评,他终于来了!
1 g/ S* M: b1 g% K! A7 _( ]; Z/ A
2 N$ q) ]6 _3 p& [: p    1. 首先,来个驱动讲解吧,这里要注意的是一个回调函数,我们基本不用管就行,但是和初始化函数长得很像,初学者容易搞糊涂。
3 s. C$ o. V/ Q$ g  P4 j, ^ 04.png " o1 |% I' g8 R- p, d
那么我们在使用的时候,main函数中调用A函数初始化即可。7 k* p5 J8 ~" p! M
C函数为回调函数,其他外设初始化的时候也会自动产生,C函数已经被B函数调用了!B函数在HAL库中。
4 X$ D2 w9 @1 V8 L这就是三个长得像的家伙的关系。
/ V/ V2 W: f5 O% {7 B9 J" xCubeMX有个特点,函数前都不会有啥注释的。哈哈。& p6 O( @+ ~% d. G
下面就是初始化代码了,这个是CubeMx自动产生的:) d, Z+ `+ W1 q* U* ^- m6 a

, W- G) g* X" ]# _
  1. #include "usart.h"8 k: K) f$ i; y

  2. : T7 `7 g5 l: C) A/ w; ^$ `& n
  3. /* USER CODE BEGIN 0 */
    2 }) [/ R9 B0 V
  4. 6 ?/ p$ s5 W3 w6 S+ G, d
  5. /* USER CODE END 0 */
    % G! D: [8 l7 n. I9 m2 j" l: L
  6. 9 y* p! `. \* P+ z
  7. UART_HandleTypeDef hlpuart1;) V2 ]& k. W* |* R+ z& q, V
  8. UART_HandleTypeDef huart1;% Q+ L- _& t: a4 i
  9. 5 Q% g1 j! H% l% F- w' b
  10. /* LPUART1 init function */
    9 g) o; |& D% P
  11. 6 l- `* ]( |4 c& Q2 A6 f
  12. void MX_LPUART1_UART_Init(void)7 G- }: g, C: K. J! S$ }7 t
  13. {
    & `" y7 E# i7 o' L/ ?* C/ N& R
  14. ( F& C& n2 q! }$ G) Q7 L& H
  15.   /* USER CODE BEGIN LPUART1_Init 0 */5 d: h5 @: P3 n% G0 A  E6 x& c
  16. ' W" h! z6 |5 c( P# b( W
  17.   /* USER CODE END LPUART1_Init 0 */
    $ j$ `. L' G+ T& v$ \

  18. 4 Q, s7 z6 `9 N
  19.   /* USER CODE BEGIN LPUART1_Init 1 */+ z  P7 b8 _. _2 }+ b& ^  @# W+ L

  20. - D$ l+ t) \. V# x8 V7 v0 @
  21.   /* USER CODE END LPUART1_Init 1 */
      r% s% v  q& I& o7 J0 ?
  22.   hlpuart1.Instance = LPUART1;5 G$ n( k. U( F" ^( s# h7 z/ X# }
  23.   hlpuart1.Init.BaudRate = 115200;  s  s/ F% Y/ J% l
  24.   hlpuart1.Init.WordLength = UART_WORDLENGTH_8B;: f& \6 c" |! R' y: N, t* P
  25.   hlpuart1.Init.StopBits = UART_STOPBITS_1;$ [. u7 J  y$ ?' R
  26.   hlpuart1.Init.Parity = UART_PARITY_NONE;6 q7 N( L( `8 R+ n
  27.   hlpuart1.Init.Mode = UART_MODE_TX_RX;
    " g; S. @2 `* w: ]- U/ C
  28.   hlpuart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
      i1 A3 \" e# e- _8 |, ?
  29.   hlpuart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
    6 w1 W$ e* V; t+ v3 _
  30.   hlpuart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
    * F$ L6 E: @* Z7 z3 }
  31.   hlpuart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
    - ^, e1 ^  D; n# p6 R; U
  32.   if (HAL_UART_Init(&hlpuart1) != HAL_OK)
    8 L5 h/ {$ H( T
  33.   {2 n+ Y  H+ z6 U( ]  ~. Q/ B8 a. y
  34.     Error_Handler();+ L* G8 @: }9 g2 t0 S' I! H1 E9 \
  35.   }0 _2 ^6 ]& X9 }3 e; |0 L
  36.   if (HAL_UARTEx_SetTxFifoThreshold(&hlpuart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
    ) K1 b! H1 ~% U# j9 T5 K, l) x9 Q
  37.   {
    - Z8 y' [# c" x3 [" _6 Z
  38.     Error_Handler();/ J' S  L( I0 Y: F& d
  39.   }/ R9 I: r+ W- `/ L; Z
  40.   if (HAL_UARTEx_SetRxFifoThreshold(&hlpuart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)2 e5 f  \/ s5 Q1 h7 _
  41.   {3 Q% k# e. \0 ]) b, g
  42.     Error_Handler();
    + [: O& {0 ]! C# D; I. [- f& w, D, Z* Z
  43.   }
      ]# z! C, x- O  [+ K; K. P& k0 g2 S9 A
  44.   if (HAL_UARTEx_DisableFifoMode(&hlpuart1) != HAL_OK)
    4 \3 k3 ?+ S8 g/ u/ q; v
  45.   {
    # g- ^3 Y) b# H0 S8 b2 Q1 W
  46.     Error_Handler();! q8 E  F- v  F7 r8 {+ B- i2 ~+ f
  47.   }5 Z! C- Q8 ?+ f8 A9 |6 t
  48.   /* USER CODE BEGIN LPUART1_Init 2 */3 E1 N; q. p1 B

  49. 9 n& w( b7 B! f: |4 [. v( J+ P
  50.   /* USER CODE END LPUART1_Init 2 */; b. Z. u0 c3 _, V. D

  51. . B" E+ a3 r* `( x, [# f
  52. }" g7 R: j- T1 O! G
  53. /* USART1 init function */
    ( |1 C5 _; p8 b$ X
  54. / N" L, r) c; x- v1 d  X
  55. void MX_USART1_UART_Init(void)! q7 @5 r4 \  R4 ]) e( {" f
  56. {% [  M! o1 _& h- C/ b9 x, b
  57. ) c7 P! n# @4 w  l
  58.   /* USER CODE BEGIN USART1_Init 0 */
    , {4 K1 O2 R6 |

  59. & y4 Z4 @3 M1 `5 d, ]$ w! l! d
  60.   /* USER CODE END USART1_Init 0 */6 [! p( u% l0 n( i# U2 o' R
  61. + O0 s. e8 w3 b4 b  F% D4 [
  62.   /* USER CODE BEGIN USART1_Init 1 */; q8 z2 I+ q; y
  63. 2 p. T/ o, \- t
  64.   /* USER CODE END USART1_Init 1 */
    : d3 b- V: r+ q; }* J
  65.   huart1.Instance = USART1;
    1 Y7 \' `1 R' Q3 }. m0 X) `
  66.   huart1.Init.BaudRate = 115200;& t) l% `# h1 [% s
  67.   huart1.Init.WordLength = UART_WORDLENGTH_9B;* q# e: i5 L2 N+ t  E
  68.   huart1.Init.StopBits = UART_STOPBITS_1;
    % C9 X/ h4 S& b  B7 o% ?5 n, G, y' j
  69.   huart1.Init.Parity = UART_PARITY_NONE;2 ?4 q' ?" D9 X$ }
  70.   huart1.Init.Mode = UART_MODE_TX_RX;
    # Z+ w% F  r/ C, k$ t+ r+ R" B
  71.   huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
    6 m9 }. t1 h! U/ {6 N) N- T
  72.   huart1.Init.OverSampling = UART_OVERSAMPLING_16;6 `0 F3 m/ [& y- r
  73.   huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;; [% S7 [8 P; X; c! O& R
  74.   huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
    4 x2 s  Q, t  R- k/ W
  75.   huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
    % B; R5 n8 C4 J& h. i' p# U
  76.   if (HAL_UART_Init(&huart1) != HAL_OK)1 P7 H# Q4 s5 ], k' e) ?
  77.   {" J9 Z5 k3 t& p  S- O% _
  78.     Error_Handler();  V0 m/ u7 i& J, N
  79.   }! f7 i5 k. U  `4 _
  80.   if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)% k; d' K; X+ X/ _/ r7 x, Y& ^
  81.   {( d/ w0 |) X" Z" e3 L2 z7 m
  82.     Error_Handler();. j) H/ s" u- x2 p2 `" |( Q
  83.   }
    , m7 M% v; F" S5 ^3 _3 p* l5 n2 R
  84.   if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
    8 h4 E1 v. v9 X" T9 _# |* O3 X
  85.   {+ h* l1 m& D- H3 K, A/ w
  86.     Error_Handler();
    ) l- P4 P7 A/ e  G& J( F$ d
  87.   }: ?( N5 H" f: V" y
  88.   if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK)
    : }! r7 g" M6 {$ q
  89.   {( |" `- Q( E1 {# X7 T/ \  e7 ^
  90.     Error_Handler();3 g% _* g4 p5 E' T+ q5 S$ D! H
  91.   }
    5 ?* k# c+ m3 A9 Y
  92.   /* USER CODE BEGIN USART1_Init 2 *// T0 P  t3 S! ?' U
  93. - t! {7 r: D$ v: R4 ^, x
  94.   /* USER CODE END USART1_Init 2 */
    ) v! ?  G9 P1 J+ }
  95. ! ?8 v& F$ z9 M5 \
  96. }- X1 q7 b7 K/ F. P+ V
  97. 2 H6 ?( m" I* Y
  98. void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)4 C, Y8 }- c/ Y
  99. {
    4 }4 i- _7 K% W# V, D3 O, v- Q
  100. 5 S# h3 {$ S$ A6 j' x
  101.   GPIO_InitTypeDef GPIO_InitStruct = {0};- a! \" ^& ?& E' T" i4 b
  102.   if(uartHandle->Instance==LPUART1)
    : f8 r* o1 q4 f3 V/ o
  103.   {
    ; a- f& W2 j; d, w; c5 q
  104.   /* USER CODE BEGIN LPUART1_MspInit 0 */
    % \- b) X0 s2 T# n/ e
  105. 2 ~. w' ?" n4 E% j$ M9 [6 h
  106.   /* USER CODE END LPUART1_MspInit 0 */5 u! P% G9 b: {, p0 h
  107.     /* LPUART1 clock enable */$ ^0 M# o. x- t- N
  108.     __HAL_RCC_LPUART1_CLK_ENABLE();
    % t# w5 q- [+ r5 @
  109. " e6 N. }$ J9 Z% K) M
  110.     __HAL_RCC_GPIOA_CLK_ENABLE();
    & ^5 S% `; z' u! Q6 o6 @' r
  111.     /**LPUART1 GPIO Configuration
    / R7 u8 ]; ^  W+ t
  112.     PA2     ------> LPUART1_TX
    ( n2 b% y& v" Y
  113.     PA3     ------> LPUART1_RX" E. V$ k0 ~9 E4 U# I
  114.     */; }: b! k  e. p& v) Z) k# K  h
  115.     GPIO_InitStruct.Pin = LPUART1_TX_Pin|LPUART1_RX_Pin;% H( _! Y. y) g: C' I: y# s; f
  116.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    8 U1 v8 K* W3 F+ p
  117.     GPIO_InitStruct.Pull = GPIO_NOPULL;
    9 r5 r  N" \9 [
  118.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;3 ?8 ]% p' ^0 f" }. q9 g2 i3 e5 E
  119.     GPIO_InitStruct.Alternate = GPIO_AF12_LPUART1;- O5 k  V- t) K# G# W
  120.     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);, \  |- n. z; ^) K6 }) f) u; g6 w
  121. 1 x; _; u1 V, t9 l$ r
  122.   /* USER CODE BEGIN LPUART1_MspInit 1 */
    8 M# p: o3 l9 I2 b$ Z5 O

  123. 4 A6 A7 d1 g' E, a% S! Q' e$ I
  124.   /* USER CODE END LPUART1_MspInit 1 */1 |& H* H: f. h( I# ]- ]  @9 F
  125.   }
    % i0 T. I! [. u/ W. H4 |- F
  126.   else if(uartHandle->Instance==USART1)
    ' S; K+ N4 f/ @
  127.   {
    ! W+ O% d' \4 J+ C
  128.   /* USER CODE BEGIN USART1_MspInit 0 */
    ; Y; h7 U3 E. R6 A; x4 }( j- t

  129. : f( M1 x5 P5 B4 J- f
  130.   /* USER CODE END USART1_MspInit 0 */* m! W' T" k* }" m2 l9 p" r
  131.     /* USART1 clock enable */* _5 l5 o/ e3 F4 h  F& s7 I
  132.     __HAL_RCC_USART1_CLK_ENABLE();9 h2 k( n: t% P" m0 S
  133. - j" P4 O& r2 }8 k
  134.     __HAL_RCC_GPIOC_CLK_ENABLE();
    ) y, f% k& N# y0 N9 f1 ~5 |% U
  135.     /**USART1 GPIO Configuration7 ]. {( Z# [, }
  136.     PC4     ------> USART1_TX- K0 i+ T( M( L9 E9 F0 Z& M
  137.     PC5     ------> USART1_RX
    4 B, Y% w3 J( f5 ]* f) Z
  138.     */
    ; J, z/ t; v- b
  139.     GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5;  N  x+ A- o5 n% [; t6 ]; d( M* m* B
  140.     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;0 ~" {: G, J  _
  141.     GPIO_InitStruct.Pull = GPIO_NOPULL;; Q+ g4 V& l+ V% K
  142.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;; J) U) x" z3 \! t
  143.     GPIO_InitStruct.Alternate = GPIO_AF7_USART1;# N) A; L5 `2 P% W, R" Z
  144.     HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);; b" d. C- Q/ z6 G" l2 g
  145. 1 t* ]% G8 q8 J  I( E
  146.   /* USER CODE BEGIN USART1_MspInit 1 */
    9 n. v, R1 ?% T8 S4 d

  147. + o; p6 a: v' B* O. q
  148.   /* USER CODE END USART1_MspInit 1 */6 z) @$ u, [* ?( q
  149.   }
    $ A9 \4 R- I% w
  150. }
    / {1 g% T" ]6 o% O

  151. : `. a* B8 p& X
  152. void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)* x$ C+ v2 q1 _3 ^5 V
  153. {+ ]" r6 \( j# i8 Z" G+ R7 h

  154. : q9 w* `6 j& ~2 G5 Z9 A; y- R
  155.   if(uartHandle->Instance==LPUART1)' M( K' A; F7 W
  156.   {- @7 Z. b8 y& M# D. \: a
  157.   /* USER CODE BEGIN LPUART1_MspDeInit 0 */
    2 G. B# x1 @, y9 H. ^0 p5 s. k$ y

  158. 0 I. z- K6 R1 o" H$ A
  159.   /* USER CODE END LPUART1_MspDeInit 0 */
    ; e) j% o2 d: F) w7 ^
  160.     /* Peripheral clock disable */6 [( {: ], J& C" T
  161.     __HAL_RCC_LPUART1_CLK_DISABLE();+ r9 p7 Y; {. R+ F5 z6 {/ ?

  162. , o# u' o. U3 _, T* o! e% v
  163.     /**LPUART1 GPIO Configuration
    + g) S% T4 f, G  ]
  164.     PA2     ------> LPUART1_TX
    / k* e. V9 F/ h0 D. S; T
  165.     PA3     ------> LPUART1_RX7 L& }) t$ ~. d% |0 _+ k! A8 _
  166.     */
    . x& z. ?; @, ^* \
  167.     HAL_GPIO_DeInit(GPIOA, LPUART1_TX_Pin|LPUART1_RX_Pin);
    2 \5 I% B( J, V7 D
  168. . X1 a: u: n' n. I/ b: Q8 K$ ]6 B! h
  169.   /* USER CODE BEGIN LPUART1_MspDeInit 1 */
    " [" G7 ~# R( m* ^0 y" C
  170. ; j1 Z) a- E' x- d. k" S- I
  171.   /* USER CODE END LPUART1_MspDeInit 1 */
    3 ]1 L% Z* F8 y+ k
  172.   }4 V( ^- X8 V3 r8 N1 j3 Z
  173.   else if(uartHandle->Instance==USART1)1 O& l  T- u8 }9 b; t
  174.   {
    ) Y0 q2 ^7 n6 E3 _
  175.   /* USER CODE BEGIN USART1_MspDeInit 0 */( L  E2 U  X* X9 o2 }7 I
  176. 4 p& o: x$ x5 q
  177.   /* USER CODE END USART1_MspDeInit 0 */1 B* @3 e( j$ y/ |. E
  178.     /* Peripheral clock disable */
    1 Y3 T, l8 _  Z) l
  179.     __HAL_RCC_USART1_CLK_DISABLE();
    . ^* K4 C: m" {

  180. & i+ G1 e) O+ d$ _9 ~; ]
  181.     /**USART1 GPIO Configuration
    & e, `1 P7 |! G- m0 Y
  182.     PC4     ------> USART1_TX
    ! ~1 s- K# h1 N) ~9 f
  183.     PC5     ------> USART1_RX
    " i. Y# n( H$ M1 u' Z
  184.     */
    . H$ q" {+ _! b& Y' |8 |% K# ^
  185.     HAL_GPIO_DeInit(GPIOC, GPIO_PIN_4|GPIO_PIN_5);
    $ \3 N# T. \/ f( f
  186. ) V  E4 y4 ?" V6 V8 L8 p
  187.   /* USER CODE BEGIN USART1_MspDeInit 1 */
    5 ], ~  _% g9 ?* [

  188. - i- V' i- u* P' |# m- i5 q
  189.   /* USER CODE END USART1_MspDeInit 1 */
    . D- `+ u8 T( o: b5 u# |  z! w6 o
  190.   }
    3 l% F2 K" L; K' L2 p
  191. }
    ; }2 \+ p+ k. @  t& z  P1 w
复制代码
然后:重点来了:这个部分还是要自己添加才行,CubeMX还没有达到100%给你写代码的水平哦:
+ n  L' Y( c  k; w1 i

  1. 3 X) e# P2 `8 P7 p8 B5 ]
  2. /**
    3 T4 v- Q6 [3 g1 k+ P4 u; Q
  3.   * @brief  Retargets the C library printf function to the USART.
    4 K. B2 y! b0 J' D$ {
  4.   * @param  None
    " c9 v+ |2 i, B, {: B# P8 e# G! U
  5.   * @retval None
    ( N* l. K- N6 X) z. _7 C
  6.   */& R6 \1 b8 G/ K8 ~
  7. : |/ I* u3 i$ a' v$ Z' Q
  8. #ifdef __GNUC__, x& z  J: ^5 \: a; c. Z
  9. /* With GCC, small printf (option LD Linker->Libraries->Small printf' {; Q" w+ T; o/ C
  10.    set to 'Yes') calls __io_putchar() */
    ; S( b+ }- g/ Y& i, [' [' z
  11. #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
    9 v, N& T8 _* b9 \5 A- I- e# [. v" N' y
  12. #else
    2 P- H3 N4 J: n; G, P5 d" S: Q
  13. #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)( p, j2 R' R" W8 Y( F
  14. #endif /* __GNUC__ */- D1 w0 x. Z3 Q; z

  15. : v2 b) z' O3 c- o5 H
  16. PUTCHAR_PROTOTYPE$ K: D+ D$ ^- a! T
  17. {
    ; d) L8 X& D  I; V: t  ~1 _
  18.   /* Place your implementation of fputc here */# ^7 b$ n* O9 T! V7 }  w- b  |9 T
  19.   /* e.g. write a character to the USART1 and Loop until the end of transmission */
    % x2 c4 F3 T, E- S- ]
  20.   HAL_UART_Transmit(&hlpuart1, (uint8_t *)&ch, 1, 0xFFFF);( d. I  y9 j5 o( C% o+ h
  21.   return ch;
    ; H" o% T  A& Y# y9 a, e
  22. }; ~! ~6 [8 u% p0 x
复制代码
整个工程编译下来占用空间大小:0 z; |5 H/ U+ `
==============================================================================
4 e# j/ R6 {; {1 Z5 {& l1 t' v$ q) ]3 f
5 q6 x  l8 x5 C2 n3 i+ Z  b8 E3 N
      Code (inc. data)   RO Data    RW Data    ZI Data      Debug   
  X; n3 D+ ^2 l. S3 I. B1 o  z
      8204        434        568         20       1316     691029   Grand Totals
0 b1 L* i5 R. l      8204        434        568         20       1316     691029   ELF Image Totals9 ?) i# z# _  G& V# L$ B( i  Y6 ^
      8204        434        568         20          0          0   ROM Totals( V3 i1 L9 O5 C. F
* s3 Y9 p) g( f' |/ x1 H
==============================================================================
6 |: [$ R3 h# R( n
* W0 h4 [( y" u$ O    Total RO  Size (Code + RO Data)                 8772 (   8.57kB)
+ T- u8 O6 R' Q. T6 f    Total RW  Size (RW Data + ZI Data)              1336 (   1.30kB)
9 G) e% F" D8 S" Z" h$ ^  W    Total ROM Size (Code + RO Data + RW Data)       8792 (   8.59kB)
4 \9 x2 a4 `/ D3 P4 |/ j0 `+ ?
8 N% A6 h2 {  M& _8 T1 }6 @& G1 c==============================================================================
! z; W* {  l$ `+ e& u/ q( J
" b  {& T4 J5 s) @. g7 w; g
, F& X. M+ ?* N
. j; Y4 r7 K2 y; }9 }6 ]最后,看看效果如何:
) P6 f/ i+ b! I+ j& t% e 01.png
; g/ Z1 o- B6 Z' M: r: c非常完美!
, F- X  c- Q  ?! y  v整个工程代码见附件:
/ V' X  z- Z0 ~4 j STM32CubeIDE.zip (1.4 MB, 下载次数: 4)
赞 收藏 1 评论1 发布时间:2021-3-26 09:33

举报

1个回答
STMCU-管管 回答时间:2021-3-26 16:13:34
感谢分享

所属标签

相似技术帖

官网相关资源

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