Exercise #5. Data Input/Output. Serial Interfaces∗
Description∗
Написать программу для подсчета и отображения количества нажатий на кнопку USER_BUTTON (PA0).
Guidance∗
Использовать Git.
Использовать следующие названия директорий:
exercise05- для проекта решения основной задачи;exercise05extra- для проекта решения дополнительной (extra) задачи;src- для исходников;bin- для расположения бинарного файла прошивки (необходимо сохранить в репозитории).Периодически отправлять изменения в удаленный репозиторий, соответствующий Вашей фамилии.
-  
Количество нажатий по модулю 5 отображать на светодиодах следующим образом:
- 0 - все светодиоды выключены;
 - 1 - горит только Green (PD12);
 - 2 - горят Green (PD12) и Orange (PD13);
 - 3 - горят Green (PD12), Orange (PD13) и Red (PD14);
 - 4 - горят Green (PD12), Orange (PD13), Red (PD14) и Blue (PD15).
 
 -  
Убедиться в наличии эффекта дребезга контактов кнопки.
 -  
Доработать программу для устранения дребезга контактов кнопки.
 -  
Реализовать обработку нажатий на кнопку с использованием прерываний, а также подавления дребезга контактов.
 
Extra∗
Написать программу для управления яркостью светодиодов.
-  
Установить следующие уровни яркости свечения светодиодов:
- Green (PD12) - 25%
 - Orange (PD13) - 50%
 - Red (PD14) - 75%
 - Blue (PD15) - 100%
 
 -  
Каждый раз при нажатии на кнопку USER_BUTTON (PA0) уменьшать яркость свечения всех светодиодов на 10%. Следовательно после 10 нажатий все светодиоды должны быть погашены.
 -  
При обработке нажатий на кнопку обеспечить подавление "дребезга" контактов.
 
Пример установки значения PWM
static void setTIM4PWM(int value, uint32_t Channel)
{
    TIM_OC_InitTypeDef sConfigOC = { 0 };
    sConfigOC.OCMode = TIM_OCMODE_PWM1;
    sConfigOC.Pulse = value;
    sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
    sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
    if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, Channel) != HAL_OK) {
          Error_Handler();
    }
    HAL_TIM_PWM_Start(&htim4, Channel);
}