コード例 #1
0
ファイル: ms2001_arch.c プロジェクト: 0lri/paparazzi
void ms2001_arch_init( void ) {

   ms2001_cur_axe = 0;

  /* configure SS pin */
  Ms2001Unselect();                       /* pin idles high */
  SetBit(MS2001_SS_IODIR, MS2001_SS_PIN); /* pin is output  */

  /* configure RESET pin */
  Ms2001Reset();                                /* pin idles low  */
  SetBit(MS2001_RESET_IODIR, MS2001_RESET_PIN); /* pin is output  */

  /* configure DRDY pin */
  /* connected pin to EXINT */
  MS2001_DRDY_PINSEL |= MS2001_DRDY_PINSEL_VAL << MS2001_DRDY_PINSEL_BIT;
  SetBit(EXTMODE, MS2001_DRDY_EINT); /* EINT is edge trigered */
  SetBit(EXTPOLAR,MS2001_DRDY_EINT); /* EINT is trigered on rising edge */
  SetBit(EXTINT,MS2001_DRDY_EINT);   /* clear pending EINT */

  /* initialize interrupt vector */
  VICIntSelect &= ~VIC_BIT( MS2001_DRDY_VIC_IT );                       /* select EINT as IRQ source */
  VICIntEnable = VIC_BIT( MS2001_DRDY_VIC_IT );                         /* enable it                 */
  _VIC_CNTL(MS2001_DRDY_VIC_SLOT) = VIC_ENABLE | MS2001_DRDY_VIC_IT;
  _VIC_ADDR(MS2001_DRDY_VIC_SLOT) = (uint32_t)EXTINT_ISR;         // address of the ISR

}
コード例 #2
0
ファイル: ms2100_arch.c プロジェクト: AshuLara/lisa
void ms2100_arch_init( void ) {

  ms2100_cur_axe = 0;

  /* set mag SS and reset as output and assert them (SS on PC12  reset on PC13) ----*/
  Ms2001Unselect();
  Ms2001Set();

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  /* configure data ready on PB5 */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

#ifdef MS2100_HANDLES_DMA_IRQ
 /* Enable DMA1 channel4 IRQ Channel */
  NVIC_InitTypeDef NVIC_init_structure_dma = {
    .NVIC_IRQChannel = DMA1_Channel4_IRQn,
    .NVIC_IRQChannelPreemptionPriority = 0,
    .NVIC_IRQChannelSubPriority = 0,
    .NVIC_IRQChannelCmd = ENABLE
  };
  NVIC_Init(&NVIC_init_structure_dma);
#endif /* MS2100_HANDLES_DMA_IRQ */

#ifdef MS2100_HANDLES_SPI_IRQ
  NVIC_InitTypeDef NVIC_init_structure_spi = {
    .NVIC_IRQChannel = SPI2_IRQn,
    .NVIC_IRQChannelPreemptionPriority = 0,
    .NVIC_IRQChannelSubPriority = 1,
    .NVIC_IRQChannelCmd = ENABLE
  };
  NVIC_Init(&NVIC_init_structure_spi);
#endif /* MS2100_HANDLES_SPI_IRQ */

}

#ifdef MS2100_HANDLES_SPI_IRQ
void spi2_irq_handler(void) {
  Ms2001OnSpiIrq();
}
#endif


#ifdef MS2100_HANDLES_DMA_IRQ
void dma1_c4_irq_handler(void) {
  Ms2001OnDmaIrq();
}