Доработал модуль TIM (с точки зрения документции. Код не проверен)
Доработна документация в целом - добавелн main page - исправлены ошибки в шапках и коментах - добавлен граф инклюдов
This commit is contained in:
@@ -1,13 +1,14 @@
|
||||
/**
|
||||
**************************************************************************
|
||||
* @file general_gpio.c
|
||||
* @brief Модуль для инициализации портов.
|
||||
* @brief Модуль для инициализации портов и работы с ними.
|
||||
**************************************************************************
|
||||
* @details Реализация функций для работы с GPIO:
|
||||
* - Включение тактирования портов
|
||||
* - Инициализация светодиодов и кнопок
|
||||
* - Управление светодиодами: включение, выключение, моргание, плавное затухание
|
||||
* - Чтение состояния кнопок с фильтром от дребезга
|
||||
* @details
|
||||
Реализация функций для работы с GPIO:
|
||||
- Включение тактирования портов
|
||||
- Инициализация светодиодов и кнопок
|
||||
- Управление светодиодами: включение, выключение, моргание, плавное затухание
|
||||
- Чтение состояния кнопок с фильтром от дребезга
|
||||
***************************************************************************/
|
||||
#include "general_gpio.h"
|
||||
|
||||
@@ -20,6 +21,9 @@
|
||||
*/
|
||||
HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
|
||||
{
|
||||
if(check_null_ptr_1(GPIOx))
|
||||
return HAL_ERROR;
|
||||
|
||||
HAL_StatusTypeDef status = HAL_OK;
|
||||
// choose port for enable clock
|
||||
if (GPIOx==GPIOA)
|
||||
@@ -68,7 +72,7 @@ HAL_StatusTypeDef GPIO_Clock_Enable(GPIO_TypeDef *GPIOx)
|
||||
*/
|
||||
HAL_StatusTypeDef GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t LED_ActiveLevel)
|
||||
{
|
||||
if(check_null_ptr_2(led, GPIOx))
|
||||
if(check_null_ptr_3(led, GPIOx, GPIO_PIN_X))
|
||||
return HAL_ERROR;
|
||||
|
||||
led->LED_Port = GPIOx;
|
||||
@@ -86,14 +90,12 @@ HAL_StatusTypeDef GPIO_LED_Init(GPIO_LEDTypeDef *led, GPIO_TypeDef *GPIOx, uint3
|
||||
*/
|
||||
HAL_StatusTypeDef GPIO_LED_On(GPIO_LEDTypeDef *led)
|
||||
{
|
||||
if(check_null_ptr_1(led))
|
||||
return HAL_ERROR;
|
||||
if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
|
||||
return HAL_ERROR;
|
||||
|
||||
led->state = LED_IS_ON;
|
||||
if(led->LED_Port != NULL)
|
||||
HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, led->LED_ActiveLvl);
|
||||
else
|
||||
return HAL_ERROR;
|
||||
HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, led->LED_ActiveLvl);
|
||||
|
||||
|
||||
return HAL_OK;
|
||||
}
|
||||
@@ -104,14 +106,12 @@ HAL_StatusTypeDef GPIO_LED_On(GPIO_LEDTypeDef *led)
|
||||
*/
|
||||
HAL_StatusTypeDef GPIO_LED_Off(GPIO_LEDTypeDef *led)
|
||||
{
|
||||
if(check_null_ptr_1(led))
|
||||
return HAL_ERROR;
|
||||
if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
|
||||
return HAL_ERROR;
|
||||
|
||||
led->state = LED_IS_OFF;
|
||||
if(led->LED_Port != NULL)
|
||||
HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, !led->LED_ActiveLvl);
|
||||
else
|
||||
return HAL_ERROR;
|
||||
HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, !led->LED_ActiveLvl);
|
||||
|
||||
|
||||
|
||||
return HAL_OK;
|
||||
@@ -124,8 +124,8 @@ HAL_StatusTypeDef GPIO_LED_Off(GPIO_LEDTypeDef *led)
|
||||
*/
|
||||
HAL_StatusTypeDef GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state)
|
||||
{
|
||||
if(check_null_ptr_1(led))
|
||||
return HAL_ERROR;
|
||||
if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
|
||||
return HAL_ERROR;
|
||||
|
||||
if(led_state)
|
||||
{
|
||||
@@ -145,7 +145,7 @@ HAL_StatusTypeDef GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state)
|
||||
*/
|
||||
HAL_StatusTypeDef GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period)
|
||||
{
|
||||
if(check_null_ptr_2(led, led->LED_Port))
|
||||
if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
|
||||
return HAL_ERROR;
|
||||
|
||||
led->state = LED_IS_BLINKING;
|
||||
@@ -163,7 +163,7 @@ HAL_StatusTypeDef GPIO_LED_Blink_Start(GPIO_LEDTypeDef *led, uint32_t period)
|
||||
*/
|
||||
HAL_StatusTypeDef GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period)
|
||||
{
|
||||
if(check_null_ptr_2(led, led->LED_Port))
|
||||
if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
|
||||
return HAL_ERROR;
|
||||
|
||||
led->state = LED_IS_FADING;
|
||||
@@ -183,7 +183,7 @@ HAL_StatusTypeDef GPIO_LED_Fading_Start(GPIO_LEDTypeDef *led, uint32_t period)
|
||||
*/
|
||||
void GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led)
|
||||
{
|
||||
if(check_null_ptr_2(led, led->LED_Port))
|
||||
if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
|
||||
return;
|
||||
|
||||
/* Режим моргания светодиода */
|
||||
@@ -257,7 +257,7 @@ void GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led)
|
||||
*/
|
||||
HAL_StatusTypeDef GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx, uint32_t GPIO_PIN_X, uint8_t SW_ActiveLevel)
|
||||
{
|
||||
if(check_null_ptr_2(sw, GPIOx))
|
||||
if(check_null_ptr_3(sw, GPIOx, GPIO_PIN_X))
|
||||
return HAL_ERROR;
|
||||
|
||||
sw->Sw_Port = GPIOx;
|
||||
@@ -269,14 +269,16 @@ HAL_StatusTypeDef GPIO_Switch_Init(GPIO_SwitchTypeDef *sw, GPIO_TypeDef *GPIOx,
|
||||
/**
|
||||
* @brief Считать состоянии кнопки
|
||||
* @param sw Указатель на структуру кнопки
|
||||
* @return 1 - если кнопка нажата, 0 - если отжата
|
||||
* @return 1 - если кнопка нажата,
|
||||
* 0 - если отжата,
|
||||
* -1 - если ошибка
|
||||
* @details Функция включает в себя неблокирующую проверку на дребезг
|
||||
* Т.е. функцию надо вызывать постоянно, чтобы она мониторила состояние кнопки
|
||||
*/
|
||||
uint8_t GPIO_Read_Switch(GPIO_SwitchTypeDef *sw)
|
||||
int GPIO_Read_Switch(GPIO_SwitchTypeDef *sw)
|
||||
{
|
||||
if(check_null_ptr_1(sw))
|
||||
return 0;
|
||||
if(check_null_ptr_3(sw, sw->Sw_Port, sw->Sw_Pin))
|
||||
return -1;
|
||||
|
||||
if(HAL_GPIO_ReadPin(sw->Sw_Port, sw->Sw_Pin) == sw->Sw_ActiveLvl)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user