[STM32] LED / 3 BUTTON SYSTICK
2021. 11. 9. 23:50ㆍ코딩/STM32
#include "led_onoff.h"
#include "button.h"
extern volatile int Tms_counter;
//13.
void button_con()
{
static int button1=0;
static int button2=0;
static int button3=0;
if (getButtonState(BUTTON1_GPIO_Port, BUTTON1_Pin, &prevButton1State))
{
button1++;
button1 %=2; //0 1 0 1 0 1 0 1
if (button1)
{
modestate = BLINK_UP;
}
else
{
modestate = BLINK_DOWN;
}
}
if (getButtonState(BUTTON2_GPIO_Port, BUTTON2_Pin, &prevButton2State))
{
button2++;
button2 %=2; //0 1 0 1 0 1 0 1
if (button2)
{
modestate = LED_ON_UP;
}
else
{
modestate = LED_ON_DOWN;
}
}
if (getButtonState(BUTTON3_GPIO_Port, BUTTON3_Pin, &prevButton3State))
{
button3++;
button3 %=2; //0 1 0 1 0 1 0 1
if (button3)
{
led_all_off();
}
}
}
void select_mode()
{
switch(modestate)
{
case BLINK_UP :
led_blink_up();
break;
case BLINK_DOWN :
led_blink_down();
break;
case LED_ON_UP :
led_on_up();
break;
case LED_ON_DOWN:
led_on_down();
break;
case RESETBUTTON:
led_all_off();
break;
}
}
void led_on_up() // 0 ->01 -> 012 -> 0123 --- 01234567
{
led_all_off();
for (int i=0; i < 8; i++)
{
HAL_GPIO_WritePin(GPIOB, 0x01 << i, GPIO_PIN_SET);
my_delay100();
if (getButtonState(BUTTON3_GPIO_Port, BUTTON3_Pin, &prevButton3State))
{
led_all_off();
modestate = RESETBUTTON;
break;
}
}
}
//8.
void led_on_down()
{
led_all_off();
for (int i=0; i < 8; i++)
{
HAL_GPIO_WritePin(GPIOB, 0x80 >> i, GPIO_PIN_SET);
my_delay100();
if (getButtonState(BUTTON3_GPIO_Port, BUTTON3_Pin, &prevButton3State))
{
led_all_off();
modestate = RESETBUTTON;
break;
}
}
}
//7.
void led_blink_up()
{
for (int i = 0; i<8; i++)
{
led_all_off();
HAL_GPIO_WritePin(GPIOB, 0x01 << i, GPIO_PIN_SET);
my_delay100();
if (getButtonState(BUTTON3_GPIO_Port, BUTTON3_Pin, &prevButton3State))
{
led_all_off();
modestate = RESETBUTTON;
break;
}
}
}
//6.
void led_blink_down()
{
for (int i = 0; i<8; i++)
{
led_all_off();
HAL_GPIO_WritePin(GPIOB, 0x80 >> i, GPIO_PIN_SET);
my_delay100();
if (getButtonState(BUTTON3_GPIO_Port, BUTTON3_Pin, &prevButton3State))
{
led_all_off();
modestate = RESETBUTTON;
break;
}
}
}
//5.
void led_all_on()
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7, GPIO_PIN_SET);
}
//4.
void led_all_off()
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7, GPIO_PIN_RESET);
}
//3.
void demoboard_led2_toggle_button()
{
if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) == GPIO_PIN_RESET)
{
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
}
}
//2.
void demoboard_led2_button_onoff()
{
if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) == GPIO_PIN_RESET)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
}
else
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
}
}
//1.
void demoboard_led2_onoff_haldelay()
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
HAL_Delay(1000);
}
void my_delay100()
{
Tms_counter = 0;
while(Tms_counter <=100);
{
}
}
'코딩 > STM32' 카테고리의 다른 글
[STM32] Elevator project 동작 동영상 (0) | 2021.11.09 |
---|---|
[STM32]내부RTC Get/Set 동작 (0) | 2021.11.09 |
[STM32] Stepmotor FOR/BACKWARD/STOP+PC command (0) | 2021.11.09 |
[STM32] photo coupler LED 점등 (0) | 2021.11.09 |
[STM32] 8cm 초음파 센서 줄자 / 온도계 (0) | 2021.11.09 |