1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lupyuen-LoRaMac-node-nuttx

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
board.c 4.9 КБ
Копировать Редактировать Исходные данные Просмотреть построчно История
Miguel Luis Отправлено 5 лет назад 41e13a6
/*!
* \file board.c
*
* \brief Target board general functions 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 <peripheral_clk_config.h>
#include <hal_init.h>
#include <hal_delay.h>
#include <hal_timer.h>
#include <hal_spi_m_sync.h>
#include <hal_usart_sync.h>
#include <hpl_rtc_base.h>
#include "board-config.h"
#include "utilities.h"
#include "delay.h"
#include "gpio.h"
#include "adc.h"
#include "spi.h"
#include "i2c.h"
#include "uart.h"
#include "timer.h"
#include "gps.h"
#include "rtc-board.h"
#include "sx1276-board.h"
#include "board.h"
/*
* MCU objects
*/
Gpio_t Led1;
Uart_t Uart1;
I2c_t I2c;
/*!
* Flag to indicate if the MCU is Initialized
*/
static bool McuInitialized = false;
void BoardCriticalSectionBegin( uint32_t *mask )
{
*mask = __get_PRIMASK( );
__disable_irq( );
}
void BoardCriticalSectionEnd( uint32_t *mask )
{
__set_PRIMASK( *mask );
}
void BoardInitPeriph( void )
{
GpioInit( &Led1, LED_1, PIN_OUTPUT, PIN_PUSH_PULL, PIN_NO_PULL, 0 );
}
void BoardInitMcu( void )
{
init_mcu( );
delay_init( SysTick );
hri_gclk_write_PCHCTRL_reg( GCLK, EIC_GCLK_ID, CONF_GCLK_EIC_SRC | ( 1 << GCLK_PCHCTRL_CHEN_Pos ) );
hri_mclk_set_APBAMASK_EIC_bit( MCLK );
RtcInit( );
UartInit( &Uart1, UART_1, UART_TX, UART_RX );
UartConfig( &Uart1, RX_TX, 921600, UART_8_BIT, UART_1_STOP_BIT, NO_PARITY, NO_FLOW_CTRL );
SpiInit( &SX1276.Spi, SPI_1, RADIO_MOSI, RADIO_MISO, RADIO_SCLK, NC );
SX1276IoInit( );
I2cInit( &I2c, I2C_1, I2C_SCL, I2C_SDA );
McuInitialized = true;
SX1276IoDbgInit( );
SX1276IoTcxoInit( );
}
void BoardResetMcu( void )
{
CRITICAL_SECTION_BEGIN( );
//Restart system
NVIC_SystemReset( );
}
void BoardDeInitMcu( void )
{
SpiDeInit( &SX1276.Spi );
}
uint32_t BoardGetRandomSeed( void )
{
return 0;
}
void BoardGetUniqueId( uint8_t *id )
{
// We don't have an ID, so use the one from Commissioning.h
}
uint8_t BoardGetBatteryLevel( void )
{
return 0; // Battery level [0: node is connected to an external power source ...
}
uint8_t GetBoardPowerSource( void )
{
return USB_POWER;
}
void BoardLowPowerHandler( void )
{
__disable_irq( );
/*!
* If an interrupt has occurred after __disable_irq( ), it is kept pending
* and cortex will not enter low power anyway
*/
// Call low power handling function.
__enable_irq( );
}
#if !defined ( __CC_ARM )
/*
* Function to be used by stdout for printf etc
*/
int _write( int fd, const void *buf, size_t count )
{
while( UartPutBuffer( &Uart1, ( uint8_t* )buf, ( uint16_t )count ) != 0 ){ };
return count;
}
/*
* Function to be used by stdin for scanf etc
*/
int _read( int fd, const void *buf, size_t count )
{
size_t bytesRead = 0;
while( UartGetBuffer( &Uart1, ( uint8_t* )buf, count, ( uint16_t* )&bytesRead ) != 0 ){ };
// Echo back the character
while( UartPutBuffer( &Uart1, ( uint8_t* )buf, ( uint16_t )bytesRead ) != 0 ){ };
return bytesRead;
}
#else
#include <stdio.h>
// Keil compiler
int fputc( int c, FILE *stream )
{
while( UartPutChar( &Uart1, ( uint8_t )c ) != 0 );
return c;
}
int fgetc( FILE *stream )
{
uint8_t c = 0;
while( UartGetChar( &Uart1, &c ) != 0 );
// Echo back the character
while( UartPutChar( &Uart1, c ) != 0 );
return ( int )c;
}
#endif
#ifdef USE_FULL_ASSERT
#include <stdio.h>
/*
* Function Name : assert_failed
* Description : Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* Input : - file: pointer to the source file name
* - line: assert_param error line source number
* Output : None
* Return : None
*/
void assert_failed( uint8_t* file, uint32_t line )
{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %u\n", file, line) */
printf( "Wrong parameters value: file %s on line %u\n", ( const char* )file, line );
/* Infinite loop */
while( 1 )
{
}
}
#endif

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/lupyuen-LoRaMac-node-nuttx.git
git@gitlife.ru:oschina-mirror/lupyuen-LoRaMac-node-nuttx.git
oschina-mirror
lupyuen-LoRaMac-node-nuttx
lupyuen-LoRaMac-node-nuttx
v4.5.2