This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

NEW ARM Programmer Code Question

I am wokring with a STM32F746.  This is my first ARM project.  I have IAR ARM compiler as well as the ST Cube IDE.

I am trying to flash just 8 LEDS in sequence. but having a problem with the HAL_GPIO_TogglePin().   Two of the LEDs are on PORTG and six on 

PORTH.   

I can not seem to make a variable work to assign the different ports GPIOG or GPIOH.  I have done a lot of C programming for 8 bit microcontrollers and don't normally have this problem.  It is something simple but having a mind block at the moment.

Here is my code.  It works if I write everything out but when I try to shorten it using for loops and if statements I run into problems.

This should be a no brainer!

Any help or ideas would be greatly appreciate.  The final code should count display the binary of 0-255 but I need to get this working before I try that!  

int main(void)
{
/* USER CODE BEGIN 1 */

/* USER CODE END 1 */

/* MCU Configuration--------------------------------------------------------*/

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();

/* USER CODE BEGIN Init */

/* USER CODE END Init */

/* Configure the system clock */
SystemClock_Config();

/* USER CODE BEGIN SysInit */

/* USER CODE END SysInit */

/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_ADC3_Init();
MX_QUADSPI_Init();
MX_UART5_Init();
MX_USB_OTG_HS_HCD_Init();
MX_FMC_Init();
MX_I2C1_Init();
MX_I2C2_Init();
MX_UART4_Init();
/* USER CODE BEGIN 2 */

uint16_t pin[] = {GPIO_PIN_2, GPIO_PIN_3, GPIO_PIN_10, GPIO_PIN_11, GPIO_PIN_12, GPIO_PIN_13, GPIO_PIN_14, GPIO_PIN_15};

uint8_t i;

int port;

port = GPIOG;

for (i=1;i<=9;i++)
{
if (i > 2)
{
port = GPIOH;
}

HAL_GPIO_WritePin (port, pin[i],GPIO_PIN_SET);

}

// HAL_GPIO_WritePin (GPIOG, GPIO_PIN_2, GPIO_PIN_SET);
// HAL_GPIO_WritePin (GPIOG, GPIO_PIN_3, GPIO_PIN_SET);
// HAL_GPIO_WritePin (GPIOH, GPIO_PIN_10, GPIO_PIN_SET);
// HAL_GPIO_WritePin (GPIOH, GPIO_PIN_11, GPIO_PIN_SET);
// HAL_GPIO_WritePin (GPIOH, GPIO_PIN_12, GPIO_PIN_SET);
// HAL_GPIO_WritePin (GPIOH, GPIO_PIN_13, GPIO_PIN_SET);
// HAL_GPIO_WritePin (GPIOH, GPIO_PIN_14, GPIO_PIN_SET);
// HAL_GPIO_WritePin (GPIOH, GPIO_PIN_15, GPIO_PIN_SET);

/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{


for (i=1;i<=9;i++)
{
if (i <= 2)
{
port = GPIOG;
}
else
{
port = GPIOH;
}

HAL_GPIO_TogglePin(port, pin[i]);
HAL_Delay(500);
HAL_GPIO_TogglePin(port, pin[i]);
}

//HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_2);
//HAL_Delay(500);
//HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_2);
//HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_3);
//HAL_Delay(500);
//HAL_GPIO_TogglePin(GPIOG, GPIO_PIN_3);
//HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_10);
//HAL_Delay(500);
//HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_10);
//HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_11);
//HAL_Delay(500);
//HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_11);
//HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_12);
//HAL_Delay(500);
//HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_12);
//HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_13);
//HAL_Delay(500);
//HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_13);
//HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_14);
//HAL_Delay(500);
//HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_14);
//HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_15);
//HAL_Delay(500);
//HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_15);

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}