Слияние кода завершено, страница обновится автоматически
/*!
* \file gpio-board.c
*
* \brief Target board GPIO driver implementation
*
* \copyright Revised BSD License, see section \ref LICENSE.
*
* \code
* ______ _
* / _____) _ | |
* ( (____ _____ ____ _| |_ _____ ____| |__
* \____ \| ___ | (_ _) ___ |/ ___) _ \
* _____) ) ____| | | || |_| ____( (___| | | |
* (______/|_____)_|_|_| \__)_____)\____)_| |_|
* (C)2013-2017 Semtech
*
* \endcode
*
* \author Miguel Luis ( Semtech )
*
* \author Gregory Cristian ( Semtech )
*
* \author Marten Lootsma(TWTG) on behalf of Microchip/Atmel (c)2017
*/
#include <hal_gpio.h>
#include <hal_ext_irq.h>
#include "gpio-board.h"
void GpioMcuInit( Gpio_t *obj, PinNames pin, PinModes mode, PinConfigs config, PinTypes type, uint32_t value )
{
obj->pin = pin;
if( pin == NC )
{
return;
}
//obj->port = ( void* )GPIO_PORT( obj->pin );
if( mode == PIN_INPUT )
{
gpio_set_pin_direction( obj->pin, GPIO_DIRECTION_IN );
gpio_set_pin_pull_mode( obj->pin, type ); // the pull up/down need to be set after the direction for correct working
}
else // mode output
{
gpio_set_pin_direction( obj->pin, GPIO_DIRECTION_OUT );
}
// Sets initial output value
if( mode == PIN_OUTPUT )
{
GpioMcuWrite( obj, value );
}
}
void GpioMcuSetContext( Gpio_t *obj, void* context )
{
obj->Context = context;
}
void GpioMcuSetInterrupt( Gpio_t *obj, IrqModes irqMode, IrqPriorities irqPriority, GpioIrqHandler *irqHandler )
{
//ext_irq_register( obj->pin, irqHandler );
}
void GpioMcuRemoveInterrupt( Gpio_t *obj )
{
//ext_irq_register( obj->pin, NULL );
}
void GpioMcuWrite( Gpio_t *obj, uint32_t value )
{
if( obj == NULL )
{
//assert_param( FAIL );
while( 1 );
}
// Check if pin is not connected
if( obj->pin == NC )
{
return;
}
gpio_set_pin_level( obj->pin, value );
}
void GpioMcuToggle( Gpio_t *obj )
{
if( obj == NULL )
{
//assert_param( FAIL );
while( 1 );
}
// Check if pin is not connected
if( obj->pin == NC )
{
return;
}
gpio_toggle_pin_level( obj->pin );
}
uint32_t GpioMcuRead( Gpio_t *obj )
{
if( obj == NULL )
{
//assert_param( FAIL );
while( 1 );
}
// Check if pin is not connected
if( obj->pin == NC )
{
return 0;
}
return ( uint32_t )gpio_get_pin_level( obj->pin );
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )