PMP4
.docxГУАП
КАФЕДРА № 43
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
Доцент, к.т.н. |
|
|
|
А.А. Ключарев |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ |
Исследование таймера |
по курсу: ПРОГРАММИРОВАНИЕ МИКРОПРОЦЕССОРОВ |
|
|
РАБОТУ ВЫПОЛНИЛ
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2017
int main(void)
{
uint16_t period = 999;
uint8_t flag1 = 0;
uint8_t flag = 0;
uint8_t flag2 = 0;
int Stop_Time=0;
float Q=0.1;
int Polarity=1;
uint32_t start_Time1;
uint32_t start_Time2;
uint32_t time_delta;
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM3_Init();
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
//__HAL_TIM_SET_AUTORELOAD(&htim3,freaq);
TIM3->CCR1 = dlit;
while (1)
{
if(HAL_GetTick()>Stop_Time)
Q=Q+0.008;
if (Q>0.8)
{
Q=0;
}
HAL_Delay(50);
__HAL_TIM_SET_AUTORELOAD(&htim3, period);
if (Polarity==1)
{
TIM3->CCR1=period*(1-Q);
}
else
{
TIM3->CCR1=period*Q;
}
if (HAL_GPIO_ReadPin(GPIOA,B1_Pin) == 1)
{
HAL_Delay(100);
if (HAL_GPIO_ReadPin(GPIOA,B1_Pin) == 1)
{
if(flag1==0 && flag==0)
{
flag1 = 1;
flag = 1;
start_Time1 = HAL_GetTick();
}
else
{
if(flag1==1 && flag==0)
{
flag2 = 1;
flag = 1;
start_Time2 = HAL_GetTick();
}
}
}
}
else
{
flag = 0;
time_delta = HAL_GetTick();
if(time_delta - start_Time1 >=400 && flag1==1 && flag2==0)
{
flag1=0;
flag2=0;
Stop_Time=HAL_GetTick()+20000;
}
if(flag1==1 && flag2==1)
{
flag1=0;
flag2=0;
period= period-91;
if(period<360)
{
period=999;
if (Polarity==1)
{
Polarity=0;
}
else
{
Polarity=1;
}
}
}
}
}
}