- . - .
. , , , , (: ) , . , , . . .
.
uint8_t button_state=1;// .
. , . , . 2 :
#define LED_INV() togglebit(GPIOD, GPIO_pin_14);
#define BUTTON_READ() read_bit(GPIOA,GPIO_pin_0);
:
if (BUTTON_READ() == 0)//
{
if (button_state == 1)
{
LED_INV();
button_state = 0;
}
}
else
{
if (button_state == 0)
{
button_state = 1;
}
}
. ( 0), , . , , . .
. , 0, , .
uint8_t button_count=0;
if (BUTTON_READ() == 0)//
{
if (button_count < 10) //
{
button_count++;
} else if (button_state == 1) //
{
LED_INV();
button_state = 0;
}
}
else //
{
if (button_count > 0) // 0
{
button_count--;
}
else if (button_state == 0) //
{
button_state = 1;
}
}
.
Systick
Systick , . . systick.
|
|
uint16_t delay_count=0;
void Systick_Handler(void)
{
if (delay_count > 0)
{
delay_count--;
}
}
void delayMS(uint16_t delay_data)
{
delay_count = delay_data;
while(delay_count){};
}
delayMS. . Systick_Handler 1, 0. .., , . :
uint16_t delay_count=0;
uint8_t delay_flag=0;
void Systick_Handler(void)
{
if (delay_count > 1)
{
delay_count--;
} if (delay_count == 1)
{
delay_flag = 1;
delay_count--;
}
}
1 , 1 .
main :
int main(void)
{
delay_count =501;
while(1)
{
if (delay_flag == 1)
{
delay_flag = 0;
LED_INV();
delay_count =501;
}
}
}
delay_flag. 1, :
1) .
2) .
3) 0 delay_count. , 1 , .. 1, 0.
. , - , . , . , . , . timeout , , .
TimeOut.
USART . . , , . - , 1. , . , . , Timeout ( ) , .. 1.
, , .. .
:
uint8_t USART_data[256];
uint8_t USART_data_write=0;
uint8_t USART_data_read=0;
uint8_t USART_timeout_count=0;
uint8_t USART_timeout_flag=0;
//---------------------------------
void USART_Handler(void)
|
|
{
USART_data[USART_data_write] = USART_Read_Data(USART3);
USART_data_write++;
if (USART_data_write == 20)
{
USART_timeout_count = 0;//
} else {
USART_timeout_count = 200;//200
}
}
//---------------------------------
void Systick_Handler(void)
{
if (USART_timeout_count > 1)
{
USART_timeout_count --;
} else if (USART_timeout_count == 1)
{
USART_timeout_count --;
USART_timeout_flag = 1;
}
}
//---------------------------------
int main(void)
{
while(1)
{
if (USART_timeout_flag == 1)
{
USART_data_write = 0;
}
}
}
, USART_Handler . . 20- (, 20 ), 0.
1, main .
, 0 . , - .