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

STM32配置CH375B成HID Host模式读取自定义HID设备的数据 ——STM32端口初始化

[复制链接]
STMCU小助手 发布时间:2023-1-7 11:57

最近产品需要一个USB主机测试治具,所以需要做一个USB HOST去读取HID设备的数据,由于以前也没做过USB方面的项目,对这一块也不是很熟悉,因此遇到了很多困难,所幸的是经过两天半的努力,最终完成了CH375B的调试。不多废话,先上一张我调试的MCU管脚分配图

6 `4 ]2 j2 I% c( o; S- N; i

20170407132455313.png


7 x5 u; I  h" x1 U! M6 C  i

  
: l% v% I5 q) K; l) A0 j+ c: L- f

头文件


  • , g" ]" y% E1 t3 N2 W
% `* w% E, W- |5 L7 R* g/ l* ~$ b

" ]. A( |2 D9 h5 L5 Y* G6 s4 u

详细的代码如下:

  1. #ifndef __BSP_INIT_H__  8 B- n5 M* ]- t( X9 w
  2. #define __BSP_INIT_H__  ) d) o9 V2 p9 c; A' N
  3.   
    * S7 L' q) {: J$ c& V2 W: X
  4. #include "stm32f0xx_hal.h"  
    3 @8 A5 a& Q/ E4 N8 v
  5. #include "config.h"  % b# v- H$ M& V8 L' D/ O- p
  6.   
    9 ^; e- N) o0 W
  7. typedef struct  
    & Q- {5 E& n$ W' ?, B. p
  8. {  
    8 e8 t8 W( A! ~# L" ^3 a/ e/ a: X
  9.     struct  
    5 p, d/ I/ ^/ r0 u! S; X
  10.     {  
    0 q: n1 V" Q, L  ?+ v, J# h: Q
  11.         uint16_t USB_BaseTime;  
    1 G1 A; I1 k, Y% [* U; D/ g4 z
  12.         uint8_t  USB_Flag;  
    4 K9 n; G, F; [! F0 N3 f
  13.     }USB_Heart;  
    9 s7 A0 b: j9 e. I2 o
  14. }Sys_Heart_Def;  
      L' X) [' K# J8 h$ q" V
  15.   
    2 m& B, p. y9 O
  16. typedef struct  3 r; C7 @7 _% |
  17. {  2 L/ A& h8 H# L- h# V, R
  18.     Sys_Heart_Def   Sys_Heart_Info;  ( K. y# I& J  B2 a/ O- J5 b% D5 ^
  19.     uint8_t         USB_Connect_Status;  ! H( M& Z* V3 L1 F% s9 d/ N
  20. }Sys_Param_Def;  
    - C- f! b" C. G4 K4 M8 V  o! o+ |9 x* c
  21.   
    + K& m0 W4 T% B, |/ v! U' Z
  22. extern Sys_Param_Def      SysParam_Info;  # g/ V; O! u9 V" j/ |& C5 }
  23. extern UART_HandleTypeDef HAL_CH375_USART;  " N7 N6 ~8 G  b! B
  24.   % V$ o+ ]9 `. u2 e. L) ~2 L
  25. void Error_Handler(void);  4 v) ~) V4 z& R; \; p4 `( z: B7 |: D
  26. void Bsp_Peripherals_Init(void);  ' a8 i1 d) L4 W; }, ^
  27.   
    . }7 N! n+ e" R$ W( c
  28. #endif  
    " c+ g) Z; m& r: |
复制代码

: x' h( t- t& b4 @% b  n详细的代码如下:. o+ H( v' @. }4 N$ x# `

- H% v6 J# P6 z( J/ e- {" O7 f
  1. #include "bsp_init.h"  
    + d) _" s8 C. W2 u* Y
  2.   . i' ?$ g' n8 ]- [: n" T
  3. Sys_Param_Def      SysParam_Info;  9 d$ U$ x* l6 B  Q% K, S
  4. /* Private variables ---------------------------------------------------------*/  
    2 k" G! ^/ s+ O9 t; s6 F
  5. UART_HandleTypeDef HAL_CH375_USART;  
    % e' z* J& ~) ]4 e- j) `
  6.   
    6 H9 j, j1 C+ \! ]: F: W
  7. void Bsp_SystemClock_Init(void)  ( \* V0 L5 g5 Q8 I+ l/ W
  8. {  
    * ^9 y6 x) O3 `$ ^6 t( B4 P: [
  9.   RCC_OscInitTypeDef RCC_OscInitStruct;    Y5 k- f5 Z; w8 H# n: T% P- m4 @
  10.   RCC_ClkInitTypeDef RCC_ClkInitStruct;  
    % R' D/ a9 a* j/ J8 l
  11.   RCC_PeriphCLKInitTypeDef PeriphClkInit;  
      N) y* u2 V7 l2 K6 q6 r
  12.   
    1 g* e  R  v4 t9 H* I) a. ?) J, k
  13.   /* Initializes the CPU, AHB and APB busses clocks */  9 a' T# t8 U# }7 L6 p2 i
  14.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;  0 i6 r  j/ y) ^8 e
  15.   RCC_OscInitStruct.HSIState = RCC_HSI_ON;  
    : @  f2 ~& _0 x0 D; a
  16.   RCC_OscInitStruct.HSICalibrationValue = 16;  * _+ M, Z5 C1 k, l
  17.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;  
    2 g5 k2 m" l8 a2 Z$ v; S% p. O
  18.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;  
    " U0 a2 b( p; a3 G
  19.   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12;  
    ' _+ q5 s" R3 {: H8 _) b$ a  Q1 n& L
  20.   RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1;  ) |) u/ E1 M9 }4 ]; o
  21.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)  ( D" I: t' {4 U
  22.   {  
    1 }+ k" s! S, v7 X4 b* d
  23.     Error_Handler();  6 ?8 F, R8 G* ^/ B' x: Y2 _
  24.   }  * ~' s6 p2 V* _
  25.   , @& \& W! f  k
  26.   /* Initializes the CPU, AHB and APB busses clocks */  
      ~% P5 ~" L- J$ c0 n
  27.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK  
    " j! x7 \7 O5 l, `0 K& K
  28.                                 |RCC_CLOCKTYPE_PCLK1;  / Q* B3 J: Q. [7 |
  29.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;  
    ' z- s  a6 H( q0 P9 O' |! _
  30.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;  
    3 q7 Q1 k7 n, e  `
  31.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;  * n6 @. _0 H  E6 [* w
  32.   
    $ D2 a6 F8 h' U' l  R0 t
  33.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)  4 b# P- a9 v, Q$ t6 e" ^6 u
  34.   {  8 u* J. c: d  C8 C! @' V" R$ ?- D
  35.     Error_Handler();  / A+ ]) f/ k4 o) o% F" M
  36.   }  
    ; s) v) z% x4 c
  37.   
    3 ~6 a! H3 R. w5 j% k/ s
  38.   PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1;  0 Q5 n- P- v5 E5 D
  39.   PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1;  ( H' T8 y7 E2 W2 D1 i
  40.   if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)  
    ) u% e! s& }5 x
  41.   {  / o1 @; S: ?% b7 P* T
  42.     Error_Handler();  
    7 i7 J5 w7 O7 M/ G( G: m. @1 h
  43.   }  
    ( q5 m' A" _# s, n
  44.   ( O) G6 C; _  [
  45.   /* Configure the Systick interrupt time */  " p% j: C) p' \9 S4 F5 K
  46.   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);  
    7 ]/ k: g5 y% X; [$ g
  47.   . k; K+ @$ n9 @% S5 ^) P
  48.   /* Configure the Systick */  
    ( \" H8 W( m' g
  49.   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);  
    * w5 R! u4 S& ~
  50.   ) |$ O0 y: F  w) V- U5 R
  51.   /* SysTick_IRQn interrupt configuration */  
    / ]* J* Y) u! K
  52.   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);  
    ; L4 |+ P  U; \' w' V
  53. }  
    : x% }3 p; {% _  B' M+ u
  54.   & W0 b# p7 q" v: I6 C4 s
  55. void Bsp_GPIO_Init(void)  ! @) }7 D* p2 W( ?% c. Y8 P
  56. {  * n3 u/ t) r0 J$ x+ _4 S5 O
  57.   GPIO_InitTypeDef GPIO_InitStruct;  % _* Y* _' f1 [/ }
  58.   , D6 t. F/ n1 t  ^
  59.   /* GPIO Ports Clock Enable */  
    8 w, n4 y* Z8 f6 x8 k: G
  60.   __HAL_RCC_GPIOC_CLK_ENABLE();  
    . K; t9 w2 O" x  C/ C- _: J
  61.   __HAL_RCC_GPIOA_CLK_ENABLE();  ) G, j) r9 k) O$ D% j* V
  62.   __HAL_RCC_GPIOB_CLK_ENABLE();  
    . t! C' Q7 R$ m" ?- X
  63.   
    . x; q( a# D% P1 T
  64.   /*Configure GPIO pin Output Level */  
    9 U9 {* w, s8 V7 [$ s8 y3 f
  65.   HAL_GPIO_WritePin(CH375_D0_GPIO_Port, CH375_D0_Pin, GPIO_PIN_SET);  
    & b* L: q, Z6 J; y% k/ z
  66.   HAL_GPIO_WritePin(CH375_D1_GPIO_Port, CH375_D1_Pin, GPIO_PIN_SET);  
    - B1 Z* L+ E4 ~; p6 y1 R
  67.   HAL_GPIO_WritePin(CH375_D2_GPIO_Port, CH375_D2_Pin, GPIO_PIN_SET);  
    * V4 F0 F- C/ V
  68.   HAL_GPIO_WritePin(CH375_D3_GPIO_Port, CH375_D3_Pin, GPIO_PIN_SET);  9 S- G6 a9 R$ W! `! s" T3 J
  69.   HAL_GPIO_WritePin(CH375_D4_GPIO_Port, CH375_D4_Pin, GPIO_PIN_SET);  & S9 D+ w, J! l( C- Z6 n2 J: f2 x
  70.   HAL_GPIO_WritePin(CH375_D5_GPIO_Port, CH375_D5_Pin, GPIO_PIN_SET);  - R7 H( I* d# _
  71.   HAL_GPIO_WritePin(CH375_D6_GPIO_Port, CH375_D6_Pin, GPIO_PIN_SET);  
    ; I( F5 O! U. t5 K" s
  72.   HAL_GPIO_WritePin(CH375_D7_GPIO_Port, CH375_D7_Pin, GPIO_PIN_SET);  ! l' C+ ?; X% ^  a. D- E. O) u
  73.   /*Configure GPIO pin Output Level */  
    9 K5 C$ m3 K; l: s
  74.   HAL_GPIO_WritePin(CH375_WR_GPIO_Port, CH375_WR_Pin, GPIO_PIN_SET);  $ O, l7 H1 |6 j1 j
  75.   HAL_GPIO_WritePin(CH375_RD_GPIO_Port, CH375_RD_Pin, GPIO_PIN_SET);  
    , Q) \: n1 |7 T; V# {2 ~+ r! c
  76.   HAL_GPIO_WritePin(CH375_CS_GPIO_Port, CH375_CS_Pin, GPIO_PIN_SET);  5 @* ^$ u- |0 N
  77.   HAL_GPIO_WritePin(CH375_A0_GPIO_Port, CH375_A0_Pin, GPIO_PIN_SET);        f: C8 K: b) Q& w3 m
  78.       
    9 `) W& A3 z: t& @$ e
  79.   /*Configure GPIO pin : CH375_INT_Pin */  ( n( _, a5 ^8 l3 D
  80.   GPIO_InitStruct.Pin = CH375_INT_Pin;  
    / Q# u/ A0 m. v/ E7 D$ A
  81.   GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;  7 [8 G7 w( ?, D& x4 Y0 X6 z% k
  82.   GPIO_InitStruct.Pull = GPIO_PULLUP;  ! o/ k- {7 A. I
  83.   HAL_GPIO_Init(CH375_INT_GPIO_Port, &GPIO_InitStruct);  - t1 J- c. t* F9 a$ Z% R
  84.   7 R; n/ `. R8 K6 J6 J6 Z
  85.   /*Configure GPIO pins : CH375_D0_Pin CH375_D1_Pin CH375_D2_Pin CH375_D3_Pin  
    ! D$ z1 i+ g. t9 f- q9 Y$ `
  86.                            CH375_D4_Pin CH375_D5_Pin CH375_D6_Pin CH375_D7_Pin */  # I) e' u/ }7 h! v, h; {; [& ]
  87.   GPIO_InitStruct.Pin = CH375_D0_Pin;  
    $ X9 g% N* C& T5 W3 t8 }
  88.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  
    ' B% S; _3 e4 N5 P9 |4 ?2 K
  89.   GPIO_InitStruct.Pull = GPIO_NOPULL;  - ?) g; ^; T3 K
  90.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;  ! F% \9 ]) o$ S- F
  91.   HAL_GPIO_Init(CH375_D0_GPIO_Port, &GPIO_InitStruct);   
    ' T& m6 b3 Z# L2 Q
  92.       
    # i3 T6 e4 K  Y# I; y$ v( R
  93.   GPIO_InitStruct.Pin = CH375_D1_Pin;  / P" x$ S3 \7 S
  94.   HAL_GPIO_Init(CH375_D1_GPIO_Port, &GPIO_InitStruct);  4 _& r$ w! ~4 ^" |
  95.       & J/ @- `% D$ `5 ?
  96.   GPIO_InitStruct.Pin = CH375_D2_Pin;  $ y1 ~1 [" Q9 X9 `7 U
  97.   HAL_GPIO_Init(CH375_D2_GPIO_Port, &GPIO_InitStruct);  
    / W' `0 |, X7 q6 n
  98.       
    0 k; @* T  f: [! i& X- ]8 F
  99.   GPIO_InitStruct.Pin = CH375_D3_Pin;  
    & l4 a2 I0 i9 n1 }1 ^2 ]) H4 R
  100.   HAL_GPIO_Init(CH375_D3_GPIO_Port, &GPIO_InitStruct);  2 I0 y3 O  T& Q  K9 L$ P3 _
  101.       . ?+ f% K$ |" ]7 ]
  102.   GPIO_InitStruct.Pin = CH375_D4_Pin;  
    - f7 A; T! g( f9 @
  103.   HAL_GPIO_Init(CH375_D4_GPIO_Port, &GPIO_InitStruct);  ( K2 U1 ~. [% F
  104.       0 ]4 v5 Z% I/ s6 c# ~0 I
  105.   GPIO_InitStruct.Pin = CH375_D5_Pin;  + j: }. C( {5 i" N% e$ v7 K
  106.   HAL_GPIO_Init(CH375_D5_GPIO_Port, &GPIO_InitStruct);  ! T- ~7 O1 \5 K5 U( w! G# ?( ^
  107.       " z  |$ Q% f! o5 G: t+ l
  108.   GPIO_InitStruct.Pin = CH375_D6_Pin;    I' f0 c/ Y  P- o
  109.   HAL_GPIO_Init(CH375_D6_GPIO_Port, &GPIO_InitStruct);  
    ( u6 g+ z& L4 L. n' u
  110.       3 h1 Q% u: k# G3 N4 B
  111.   GPIO_InitStruct.Pin = CH375_D7_Pin;  
    - q; Q$ @! s0 g  E
  112.   HAL_GPIO_Init(CH375_D7_GPIO_Port, &GPIO_InitStruct);  
    ) h0 p! {6 y# ~  D+ g
  113.       
    : L" O7 H6 H: K9 f) @! C6 ]
  114.   /*Configure GPIO pins : CH375_WR_Pin CH375_RD_Pin CH375_CS_Pin CH375_A0_Pin */  ; O# S" p7 ~) _; `, A, I  j
  115.   GPIO_InitStruct.Pin = CH375_WR_Pin;  
    - G/ {2 z1 j- t# V' V; d
  116.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  
    3 D% ~3 h$ x, S% R% B5 ~
  117.   GPIO_InitStruct.Pull = GPIO_NOPULL;  ) c# O6 w. K* J% a( X9 V
  118.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;  7 {  f# {% f- T' W
  119.   HAL_GPIO_Init(CH375_WR_GPIO_Port, &GPIO_InitStruct);  
    8 i4 C' J5 b# e, j/ |
  120.       # U0 d& k0 I% [5 w
  121.   GPIO_InitStruct.Pin = CH375_RD_Pin;  
    # M+ f8 f& Y" W- T# |; }
  122.   HAL_GPIO_Init(CH375_RD_GPIO_Port, &GPIO_InitStruct);  
    0 s5 ]# D& |. L5 g# X. L( S& A* Z
  123.       , T) a" k5 n* \% h  L, q# }
  124.   GPIO_InitStruct.Pin = CH375_CS_Pin;  
    4 @6 m; e/ v) h6 y6 d# ]! {, a
  125.   HAL_GPIO_Init(CH375_CS_GPIO_Port, &GPIO_InitStruct);  
    ! v  q! ?7 m; h1 Y
  126.       
    % I% G4 V% f, \/ s- N- g
  127.   GPIO_InitStruct.Pin = CH375_A0_Pin;  6 o$ W: E6 }, C1 z$ k$ m
  128.   HAL_GPIO_Init(CH375_A0_GPIO_Port, &GPIO_InitStruct);  7 n: {) P% ~0 o
  129.       
    8 y5 o9 [7 @' D
  130.   HAL_NVIC_SetPriority(EXTI4_15_IRQn,0,0);  4 W# G# K/ K, b9 @% I2 A
  131.   HAL_NVIC_DisableIRQ(EXTI4_15_IRQn);  5 L. x9 f: v' v  h# q
  132. }  . \/ p. V! r$ |
  133.   
    , G/ J/ T% B* ~, \; t* h7 e9 v0 d
  134. void Bsp_CH375_USART_Init(void)  
    ! `8 G/ `7 P% W: M$ d
  135. {  
    ) B7 C4 ]; p8 n
  136.   % J" d. ~6 T  u( e% I; x7 h
  137.   HAL_CH375_USART.Instance = USART1;  
    1 k: B- u' A. \5 ~0 T) M
  138.   HAL_CH375_USART.Init.BaudRate = 115200;  
    $ f2 n# i0 r+ `% x
  139.   HAL_CH375_USART.Init.WordLength = UART_WORDLENGTH_8B;  
    3 H) [% w. a* F( v" o
  140.   HAL_CH375_USART.Init.StopBits = UART_STOPBITS_1;  
    4 ^2 g9 n5 i2 j9 O
  141.   HAL_CH375_USART.Init.Parity = UART_PARITY_NONE;  
    , L+ {! J8 {9 s4 N5 c( c6 @! c5 {
  142.   HAL_CH375_USART.Init.Mode = UART_MODE_TX_RX;  % a1 C2 l! x/ O, D& r6 d% \
  143.   HAL_CH375_USART.Init.HwFlowCtl = UART_HWCONTROL_NONE;  
    & W' I" m" q- r/ }
  144.   HAL_CH375_USART.Init.OverSampling = UART_OVERSAMPLING_16;  
    1 s0 S9 X9 O; E6 a
  145.   HAL_CH375_USART.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;  
    , O- n" F6 W# V8 `8 w$ v
  146.   HAL_CH375_USART.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;  ' ]; D  e' Z- r. s" _. O' m8 [2 \
  147.   if (HAL_UART_Init(&HAL_CH375_USART) != HAL_OK)  8 }$ }9 Y% C5 {- i! t
  148.   {  
    6 Q4 l) e/ @: b9 u' c* b  e& ]1 ]
  149.     Error_Handler();  $ l; e& X7 Z+ c' z: ]
  150.   }  4 o; p; R/ q1 F, E3 I+ M
  151.   __HAL_UART_ENABLE(&HAL_CH375_USART);  
    6 V  e" U" Y# R/ U( ~
  152. }  
    $ F- ^9 a( ~5 V
  153.   ! _' _/ {, |6 o- e0 `
  154. void Bsp_Peripherals_Init(void)  
    / i% j* s" G# o  ]
  155. {  
    ' r" q' H. [; S4 t/ d& Q8 h9 B
  156.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */  ; v; p1 m9 F) I7 l9 {
  157.   HAL_Init();  
    0 D, N9 s/ F3 h  g' N
  158.   /* Configure the system clock */  
    0 B7 z- K. Y) ?, Z
  159.   Bsp_SystemClock_Init();  
    " {5 f0 G3 h) q7 \+ n" Z; s
  160.   Bsp_GPIO_Init();  
    6 `* M7 F( ^, z3 {, h8 ^5 A- E
  161.   Bsp_CH375_USART_Init();  
    ) N9 G( |4 |/ Q+ R0 a! ]! e) x
  162. }  / A# K7 }- |$ v( ~2 `- A' ]
  163.   
    # H: R$ k' \4 o
  164. /**. s0 ?$ q& C# V7 X0 Q( S2 h
  165.   * @brief  This function is executed in case of error occurrence.
    + t* W' p) h6 @* P) e; t& [9 i! s! ]
  166.   * @param  None! J( b; u% T. r' C3 }( b) _) K
  167.   * @retval None
    . Y* i, J' M- E3 d9 U. X' L
  168.   */  
    8 }5 c1 C  K( W3 e4 y
  169. void Error_Handler(void)  # L- n# ~& Y3 v/ W# m
  170. {  , i; W- G# q7 `+ Q6 Y1 h
  171.   /* USER CODE BEGIN Error_Handler */  
    4 q9 C- ^, o( [! A7 E* T7 O, Y8 O
  172.   /* User can add his own implementation to report the HAL error return state */  % p$ H! Q1 W) {: t
  173.   while(1)   % j. C; F8 l! Q3 F, h% Q) Q
  174.   {  7 l8 o) l2 X# f' X: F
  175.   }  - M" U& R: e+ t' z
  176.   /* USER CODE END Error_Handler */   9 b3 j: O; e- S& B
  177. }  
    * \6 q( |' i- ]2 ~: S. q
  178.   . |6 f# p. o3 o; e9 |) w, J: x
  179. /***/  
复制代码
2 v; [* y/ ~4 T6 f$ `3 s% l& n. @5 x
转载自:xqhrs232
- t4 W7 U. _+ C6 }  `

$ G& `, T. ]3 o# \
- b  M0 X6 {" Y  k' y
赞 收藏 评论0 发布时间:2023-1-7 11:57

举报

0个回答

所属标签

相似技术帖

官网相关资源

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