You are on page 1of 4

#include "main.

h"
extern unsigned int count;

void switch_redLED_off(void);
void switch_redLED_on(void);
void switch_blueLED_off(void);
void switch_blueLED_on(void);
void switch_greenLED_off(void);
void switch_greenLED_on(void);
uint32_t SW_UP(void);//JOystick
uint32_t SW_CENTER(void);
uint32_t SW_DOWN(void);
void flashing_red(void);
void delay_ms(uint32_t t);

void SystemClock_Config(void);

int main(void){

SystemClock_Config();

// Configure the system clock to 84 MHz


LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA);
// Enable clock for port A - LED
LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOB);
// Enable clock for port C - PB
LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOC);
// Enable clock for port C - PB

LL_GPIO_SetPinMode (GPIOB, LL_GPIO_PIN_4, LL_GPIO_MODE_OUTPUT);


//set PA5 as output
LL_GPIO_SetPinOutputType (GPIOA, LL_GPIO_PIN_4, LL_GPIO_OUTPUT_PUSHPULL);
//output type is push-pull
LL_GPIO_SetPinPull (GPIOB, LL_GPIO_PIN_4, LL_GPIO_PULL_NO);
//set PA5 as NO pull
LL_GPIO_SetPinSpeed (GPIOB, LL_GPIO_PIN_4, LL_GPIO_SPEED_FREQ_HIGH);
// high speed red

LL_GPIO_SetPinMode (GPIOA, LL_GPIO_PIN_9, LL_GPIO_MODE_OUTPUT);


//set PA5 as output
LL_GPIO_SetPinOutputType (GPIOA, LL_GPIO_PIN_9, LL_GPIO_OUTPUT_PUSHPULL);
//output type is push-pull
LL_GPIO_SetPinPull (GPIOA, LL_GPIO_PIN_9, LL_GPIO_PULL_NO);
//set PA5 as NO pull
LL_GPIO_SetPinSpeed (GPIOA, LL_GPIO_PIN_9, LL_GPIO_SPEED_FREQ_HIGH);
// high speed blue

LL_GPIO_SetPinMode (GPIOC, LL_GPIO_PIN_7, LL_GPIO_MODE_OUTPUT);


//set PA5 as output
LL_GPIO_SetPinOutputType (GPIOC, LL_GPIO_PIN_7, LL_GPIO_OUTPUT_PUSHPULL);
//output type is push-pull
LL_GPIO_SetPinPull (GPIOC, LL_GPIO_PIN_7, LL_GPIO_PULL_NO);
//set PA5 as NO pull
LL_GPIO_SetPinSpeed (GPIOC, LL_GPIO_PIN_7, LL_GPIO_SPEED_FREQ_HIGH);
// high speed green

LL_GPIO_SetPinMode (GPIOA, LL_GPIO_PIN_4, LL_GPIO_MODE_INPUT);


//set PC13 as Input
LL_GPIO_SetPinPull (GPIOA, LL_GPIO_PIN_4, LL_GPIO_PULL_NO);
//set PC13 as NO pull UP

LL_GPIO_SetPinMode (GPIOB, LL_GPIO_PIN_0, LL_GPIO_MODE_INPUT);


//set PC13 as Input
LL_GPIO_SetPinPull (GPIOB, LL_GPIO_PIN_0, LL_GPIO_PULL_NO);
//set PC13 as NO pull DOWN

LL_GPIO_SetPinMode (GPIOB, LL_GPIO_PIN_5, LL_GPIO_MODE_INPUT);


//set PC13 as Input
LL_GPIO_SetPinPull (GPIOB, LL_GPIO_PIN_5, LL_GPIO_PULL_NO);
//set PC13 as NO pull CENTER

while (1){
if(SW_UP())
flashing_red();
else
switch_redLED_off();
if(SW_CENTER())
switch_blueLED_on();
else
switch_blueLED_off();
if(SW_DOWN())
switch_greenLED_on();
else
switch_greenLED_off();
}
}

uint32_t SW_UP(void) {

// check if button pressed


return (LL_GPIO_IsInputPinSet(GPIOA, LL_GPIO_PIN_4));
}
uint32_t SW_DOWN(void) {

// check if button pressed


return (LL_GPIO_IsInputPinSet(GPIOB, LL_GPIO_PIN_0));
}
uint32_t SW_CENTER(void) {

// check if button pressed


return (LL_GPIO_IsInputPinSet(GPIOB, LL_GPIO_PIN_5));
}

void switch_redLED_off(void) {

// switch red LED on


LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_4);
}

void switch_redLED_on(void) {

// switch red LED off


LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_4);
}
void switch_blueLED_off(void) {

// switch blue LED on


LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_9);
}

void switch_blueLED_on(void) {

// switch blue LED off


LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_9);
}
void switch_greenLED_off(void) {

// switch green LED on


LL_GPIO_SetOutputPin(GPIOC, LL_GPIO_PIN_7);
}

void switch_greenLED_on(void) {

// switch green LED off


LL_GPIO_ResetOutputPin(GPIOC, LL_GPIO_PIN_7);
}

void flashing_red(void){

LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_4);
delay_ms(200);
LL_GPIO_ResetOutputPin(GPIOB, LL_GPIO_PIN_4);
delay_ms(200);
}
uint32_t millis(void) {
return count;
}

void delay_ms(uint32_t t) {
uint32_t start, end;
start = millis();
end = start + t;
if (start < end) {
while ((millis() >= start) && (millis() < end)) {
// do nothing
}
} else {
while ((millis() >= start) || (millis() < end)) {
// do nothing
};
}
}
/**
* The system Clock is configured as follow :
* System Clock source = PLL (HSE)
* SYSCLK(Hz) = 84000000
* HCLK(Hz) = 84000000
* AHB Prescaler = 1
* APB1 Prescaler = 1
* APB2 Prescaler = 2
* HSE Frequency(Hz) = 8000000
* PLL_M = 8
* PLL_N = 336
* PLL_P = 4
* VDD(V) = 3.3
* Main regulator output voltage = Scale2 mode
* Flash Latency(WS) = 2
*/
void SystemClock_Config(void)
{
/* Enable HSE oscillator */
LL_RCC_HSE_EnableBypass();
LL_RCC_HSE_Enable();
while(LL_RCC_HSE_IsReady() != 1)
{
};

/* Set FLASH latency */


LL_FLASH_SetLatency(LL_FLASH_LATENCY_2);

/* Main PLL configuration and activation */


LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE, LL_RCC_PLLM_DIV_8, 336,
LL_RCC_PLLP_DIV_4);
LL_RCC_PLL_Enable();
while(LL_RCC_PLL_IsReady() != 1)
{
};

/* Sysclk activation on the main PLL */


LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1);
LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL);
while(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL)
{
};

/* Set APB1 & APB2 prescaler */


LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_1);
LL_RCC_SetAPB2Prescaler(LL_RCC_APB2_DIV_2);

/* Set systick to 1ms */


SysTick_Config(84000000 / 1000);

/* Update CMSIS variable (which can be updated also through SystemCoreClockUpdate


function) */
SystemCoreClock = 84000000;
}

You might also like