# Build and Run

## What was found

No STM32G474CEU6 Keil uVision project was found in the current `AD` workspace. The available files are:

- Simulink models under `Inu_im_1wnd_3lvl/`.
- S-function and C2000/TMS320 motor-control reference code under `Inu_im_1wnd_3lvl/Inu/`.
- New portable STM32-safe wrapper files under `Core/Inc` and `Core/Src`.

A sibling candidate project exists outside the writable root:

- `F:\set\workspace\setcorp\set506\git_project\stm32g474\stm32g474_IHM08M\IHM08M\MDK-ARM\IHM08M.uvprojx`
- Target: `STM32G474RETx`, board `NUCLEO-G474RE`, package `LQFP64`.
- Requested target: `STM32G474CEU6`.

Because of the target/package mismatch and write permissions, this project was analyzed but not modified.

## New files to add to Keil

Add these files to the STM32G474CEU6 Keil project once the real `.uvprojx` is available:

- `Core/Inc/ad_parameter_identification.h`
- `Core/Src/ad_parameter_identification.c`
- `Core/Inc/simulink_interface.h`
- `Core/Src/simulink_interface.c`

Add `Core/Inc` to the include path.

## Suggested call points

After CubeMX init:

```c
SimulinkInterface_Init();
```

In the fast control loop after measurements are updated:

```c
SimulinkInterface_SetMeasurements(&measurements);
SimulinkInterface_StepFast();
```

In a slow loop or diagnostic timer:

```c
SimulinkInterface_StepSlow();
```

## Safety default

`AD_PARAM_ID_ENABLE_POWER_TESTS` defaults to `0`. With this default, the code does not request PWM, driver enable, or any power-stage action.

To allow hardware tests later, define the macro in the compiler settings or before including the header:

```c
#define AD_PARAM_ID_ENABLE_POWER_TESTS 1
```

Do this only after pinout, driver enable, break/fault inputs, current/voltage scaling, and emergency stop are verified on hardware.

## Keil build steps

1. Open the real STM32G474CEU6 `.uvprojx`.
2. Add `Core/Inc` to C/C++ include paths.
3. Add the two new `.c` files to a user group.
4. Build.
5. Resolve any project-specific include path or C dialect settings.
6. Keep generated Simulink files in a separate group and do not edit them directly.

For the sibling `IHM08M.uvprojx` candidate, first confirm that `STM32G474RETx` is acceptable or regenerate it for `STM32G474CEU6`. Then copy/add the new files from this `AD` workspace into that project.

## Hardware check before any power test

- Verify all PWM pins with oscilloscope while gate driver is disabled.
- Verify driver enable polarity.
- Verify fault/break input polarity.
- Verify ADC offsets and scaling for currents and DC-link voltage.
- Verify emergency stop path disables PWM in hardware.
- Verify watchdog behavior.
- Verify `AD_ParamID_IsPowerStageAllowed()` stays `0` with default build settings.
