Beispiel #1
0
rtems_status_code can_open( const lpc176x_can_number minor, can_freq freq )
{
  const can_driver_entry *const can_driver = &can_driver_table[ minor ];
  rtems_status_code             sc = RTEMS_INVALID_NUMBER;

  if ( CAN_DRIVER_IS_MINOR_VALID( minor ) ) {
    /*Enable CAN and acceptance filter modules.*/
    sc =
      lpc176x_module_enable( can_driver->module, LPC176X_MODULE_PCLK_DEFAULT );
    RTEMS_CHECK_SC( sc, "enable can module" );
    sc = lpc176x_module_enable( LPC176X_MODULE_ACCF,
      LPC176X_MODULE_PCLK_DEFAULT );
    RTEMS_CHECK_SC( sc, "enable acceptance filter" );
    /*Set pin functions.*/
    setpins( minor );

    can_reset( can_driver );
    can_driver->device->IER = CAN_DEFAULT_INTERRUPT_CONFIGURATION;
    sc = can_frequency( can_driver, freq );
    RTEMS_CHECK_SC( sc, "Configure CAN frequency" );
    can_initialize();

    acceptance_filter_device->AFMR = CAN_ACCF_AFMR_ACCBP;     /*Bypass Filter.*/
  }

  return sc;
}
Beispiel #2
0
static bool lpc176x_uart3_probe(rtems_termios_device_context *ctx)
{
  (void)ctx;

  lpc176x_module_enable( LPC176X_MODULE_UART_3, LPC176X_MODULE_PCLK_DEFAULT );

  lpc176x_pin_select( LPC176X_PIN_UART_3_TXD, LPC176X_PIN_FUNCTION_10 );
  lpc176x_pin_select( LPC176X_PIN_UART_3_RXD, LPC176X_PIN_FUNCTION_10 );

  return true;
}
Beispiel #3
0
/**
 * @brief Initialize the rtc device.
 */
void bsp_rtc_initialize( void )
{
  /* Enable module power */
  lpc176x_module_enable( LPC176X_MODULE_RTC, LPC176X_MODULE_PCLK_DEFAULT );

  /* Enable the RTC and use external clock */
  RTC_CCR = RTC_CCR_CLKEN | RTC_CCR_CLKSRC;

  /* Disable interrupts */
  RTC_CIIR = 0U;
  RTC_CISS = 0U;
  RTC_AMR = 0xFFU;

  /* Clear interrupts */
  RTC_ILR = RTC_ILR_RTCCIF | RTC_ILR_RTCALF | RTC_ILR_RTSSF;
}
Beispiel #4
0
/**
 * @brief Enables the watchdog module, sets wd clock and wd timer.
 *
 * @param  tcount Timer's out value.
 * @return RTEMS_SUCCESSFUL if the configuration was done successfully.
 */
static inline rtems_status_code enable_module_and_set_clocksel(
  const lpc176x_microseconds tcount )
{
  rtems_status_code status_code;

  /* Sets clock. */
  LPC176X_WDCLKSEL = LPC176X_WWDT_CLKSEL_WDSEL_PCLK;

  /* Enables the watchdog module.  */
  status_code = lpc176x_module_enable( LPC176X_MODULE_WD,
    LPC176X_MODULE_PCLK_DEFAULT );
  RTEMS_CHECK_SC( status_code, "Enabling the watchdog module." );

  /* Set the watchdog timer constant value. */
  LPC176X_WDTC = ( LPC176X_CCLK / LPC176X_WD_PRESCALER_DIVISOR ) * tcount;

  return status_code;
}