Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

/* Includes */ #include <stddef.h> #include \"stm32f10x.h\" #include \"STM32vldi

ID: 1812675 • Letter: #

Question

/* Includes */
#include <stddef.h>
#include "stm32f10x.h"
#include "STM32vldiscovery.h"
void Delay(__IO uint32_t nCount);

int main(void)
{

STM32vldiscovery_LEDInit(LED3);
STM32vldiscovery_LEDInit(LED4);
STM32vldiscovery_PBInit(BUTTON_USER, BUTTON_MODE_GPIO);
STM32vldiscovery_LEDOff(LED3);
STM32vldiscovery_LEDOff(LED4);

/* Infinite loop */
while (1)
{
      /* Toggle LED3 with delay between states */
      STM32vldiscovery_LEDOn(LED3);
      STM32vldiscovery_LEDOff(LED4);
      Delay(658751);
      STM32vldiscovery_LEDOff(LED3);
      STM32vldiscovery_LEDOn(LED4);
      Delay(658751);
}
}

void Delay(__IO uint32_t nCount)
{
    for(; nCount != 0; nCount--);
}

Explanation / Answer

/*

* File: main.c

* Date: 2013-02-07

*/

#include <stddef.h>

#include "stm32f10x.h"

#include "STM32vldiscovery.h"

static __IO uint32_t TimingDelay;

void Delay(uint32_t nTime);

void TimingDelay_Decrement(void);

//-----------------------------------------------------------------------------

int main(void)

{

STM32vldiscovery_PBInit(BUTTON_USER, BUTTON_MODE_GPIO);

STM32vldiscovery_LEDInit(LED3);

STM32vldiscovery_LEDInit(LED4);

STM32vldiscovery_LEDOff(LED3); // Off Green Led

STM32vldiscovery_LEDOff(LED4); // Off Blue Led

int count = 0;

int delay_n = 600000;

while (1)

{


if (0 == STM32vldiscovery_PBGetState(BUTTON_USER))

{

switch(count) {

case 0:

Delay(delay_n);

STM32vldiscovery_LEDOn(LED3);

Delay(delay_n);

STM32vldiscovery_LEDOff(LED3);

case 1:

Delay(delay_n - 100000);

STM32vldiscovery_LEDOn(LED3);

Delay(delay_n - 100000);

STM32vldiscovery_LEDOff(LED3);

break;

case 2:

Delay(delay_n - 200000);

STM32vldiscovery_LEDOn(LED3);

Delay(delay_n - 200000);

STM32vldiscovery_LEDOff(LED3);

break;

case 3:

Delay(delay_n - 300000);

STM32vldiscovery_LEDOn(LED3);

Delay(delay_n - 300000);

STM32vldiscovery_LEDOff(LED3);

break;

case 4:

Delay(delay_n - 400000);

STM32vldiscovery_LEDOn(LED3);

Delay(delay_n - 400000);

STM32vldiscovery_LEDOff(LED3);

break;

case 5:

Delay(delay_n - 500000);

STM32vldiscovery_LEDOn(LED3);

Delay(delay_n - 500000);

STM32vldiscovery_LEDOff(LED3);

break;

case 6:

Delay(delay_n - 540000);

STM32vldiscovery_LEDOn(LED3);

Delay(delay_n - 540000);

STM32vldiscovery_LEDOff(LED3);

break;

case 7:

count = 0;

break;

}

Delay(60000);

STM32vldiscovery_LEDOn(LED4);

Delay(30000);

STM32vldiscovery_LEDOff(LED4);

} else {

STM32vldiscovery_LEDOn(LED4);

Delay(delay_n);

STM32vldiscovery_LEDOff(LED4);

count++;

}

}


return 0;

}


void Delay(uint32_t nTime)

{

TimingDelay = nTime;

while(TimingDelay != 0) { TimingDelay--; }

}


// this is simpler to understand