实验3:基于MC SDK5.0 PI组件接口函数做在线参数修改。 1、实验内容:5 {6 J( q) r1 V9 d, K6 d. X5 X0 w1 S/ b 2、程序修改; 在生成的源码上修改,内容如下: main.c内容修改: [" w$ S" B+ } @; R( L: y' D" O 程序的顶部增加mc_extended_api.h头文件。 /* USER CODE BEGIN Includes */2 Y5 N% q. x7 h* N# p6 H #include "mc_extended_api.h" /* USER CODE END Includes */1 _' z5 c% O2 A5 Q6 a $ `" K% @4 t$ d Q% V e. c1 @ * d; `3 B# s, n$ J1 X( ~! @ /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ MCT_Handle_t *pMctHdl; //定义的变量 static int16_t Speed_Kp,Speed_Ki;5 E# K5 e4 U4 i4 ^ /* USER CODE END PV */: I9 E6 X; n: J; Y! e! B7 R int main(void)) Q# N4 n y; P Q {, n, i+ t) N: P# N3 H /* USER CODE BEGIN 1 */7 K0 d. j) g, a( B% \# I! ~2 j /* USER CODE END 1 */ ! t7 ?1 S! v: } /* MCU Configuration----------------------------------------------------------*/ % _" m% B( |0 U6 K! @0 F /* Reset of all peripherals, Initializes the Flash interface and the Systick. */) f! G* }6 n, v Y4 O HAL_Init();2 V8 r/ r1 h1 Z) T ! _: I1 X9 t, s% n /* USER CODE BEGIN Init */" L$ j* x! ^7 Q& _9 B- h- E 5 p/ Z; h/ Q) k T7 Y9 E /* USER CODE END Init */' J& \9 a3 P2 I0 I5 A+ g( O g6 Y7 y6 O /* Configure the system clock */ SystemClock_Config();% k) M2 B9 c9 a# b0 Q& q2 d /* USER CODE BEGIN SysInit */$ J. a9 Q' S- Z /* USER CODE END SysInit */! r2 p5 V& O5 L) _ /* Initialize all configured peripherals */ MX_GPIO_Init();( @ {5 {- D3 m. l E! F0 ?) t# S) A MX_ADC1_Init();& m, `& a5 z% i- {' } MX_DAC_Init();+ u* ~9 b* K6 P: y! k' j1 t2 c x0 o MX_TIM1_Init(); MX_USART2_UART_Init();- c1 ]' n# t' \7 ~. j1 p MX_MotorControl_Init();, v, A% g6 f% L4 M " H9 } v1 ^+ ?4 @0 l /* Initialize interrupts */7 _8 R4 W: h7 u2 B* e MX_NVIC_Init();7 [4 f+ n3 b5 M: j /* USER CODE BEGIN 2 */ 5 P4 _7 D& ^0 R pMctHdl = GetMCT(M1); Speed_Kp= PID_GetKP(pMctHdl->pPIDSpeed);1 R5 L9 C4 P1 o% J) n Speed_Ki= PID_GetKI(pMctHdl->pPIDSpeed); PID_SetKP(pMctHdl->pPIDSpeed,Speed_Kp*2);7 R* P$ \( P5 j4 A, ~ PID_SetKI(pMctHdl->pPIDSpeed,Speed_Ki*2);# X9 Q1 i. w) d2 Y, |7 s# H( s T3 K /* USER CODE END 2 */ Z) x. d5 D# J0 F /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1)9 L4 j3 r `( t6 T, P, f { G0 p" B9 s. R7 f9 O7 ~ F - ^# i( y( v7 S2 b$ f /* USER CODE END WHILE */9 `* `- q& }; z, N . e' P4 R0 X8 e1 ~% T /* USER CODE BEGIN 3 */+ b+ `3 z/ U* f* [& F- |3 z" E ' {) O7 K+ c8 `2 E3 w% i6 S }1 t4 W& q! a. k; P; B1 b- { /* USER CODE END 3 */- P% }5 ?' X" Z & p9 f5 Z9 v3 O }& e* V$ k2 D' k3 U7 K' O. F 3 I* l; s9 O9 T3 }; N3 a - N [5 b7 z7 f8 Q( @# e 3、程序执行的结果: 3.1、原始PID数据. a; ^! c- k1 A9 b PID_SetKP(pMctHdl->pPIDSpeed,Speed_Kp*1); PID_SetKI(pMctHdl->pPIDSpeed,Speed_Ki*1); ' a, o/ i9 O% _- C* c% o, O. O& E 3.2、2倍PID数据% X _2 K; `. y; ^ PID_SetKP(pMctHdl->pPIDSpeed,Speed_Kp*2); PID_SetKI(pMctHdl->pPIDSpeed,Speed_Ki*2);5 E4 b& Z' W7 @9 u" u 3.3、0.5倍PID数据3 V' C& y/ k% `$ Z4 k9 \* L* V PID_SetKP(pMctHdl->pPIDSpeed,Speed_Kp*0.5); PID_SetKI(pMctHdl->pPIDSpeed,Speed_Ki*0.5); % U$ O+ D" x# {$ ~6 x% x/ W ( ]. z8 v5 [2 p J( D3 ^ 8 U3 X7 P& E4 @: H& U |
F302的板子