.


:




:

































 

 

 

 


Systick

- . - .

. , , , , (: ) , . , , . . .

.

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 . , - .

 

 



<== | ==>
II. | .
:


: 2017-02-11; !; : 329 |


:

:

, .
==> ...

1717 - | 1531 -


© 2015-2024 lektsii.org - -

: 0.025 .