Beispiel #1
0
//配置UBLOX NEO-6的更新速率
//measrate:测量时间间隔,单位为ms,最少不能小于200ms(5Hz)
//reftime:参考时间,0=UTC Time;1=GPS Time(一般设置为1)
void Ublox_Cfg_Rate(u16 measrate, u8 reftime)
{
    u8 USART_TX_BUF[0xff];
    _ublox_cfg_rate *cfg_rate = (_ublox_cfg_rate *)USART_TX_BUF;
    if (measrate < 200)return;  //小于200ms,直接退出
    cfg_rate->header = 0X62B5;  //cfg header
    cfg_rate->id = 0X0806;      //cfg rate id
    cfg_rate->dlength = 6;      //数据区长度为6个字节.
    cfg_rate->measrate = measrate; //脉冲间隔,us
    cfg_rate->navrate = 1;      //导航速率(周期),固定为1
    cfg_rate->timeref = reftime; //参考时间为GPS时间
    Ublox_CheckSum((u8 *)(&cfg_rate->id), sizeof(_ublox_cfg_rate) - 4, &cfg_rate->cka, &cfg_rate->ckb);
    Sys_sPrintf(GPS_USART, USART_TX_BUF, sizeof(_ublox_cfg_tp));
    USART_DMA_Enable(GPS_USART, sizeof(_ublox_cfg_rate)); //通过dma发送出去
}
Beispiel #2
0
//配置UBLOX NEO-6的时钟脉冲输出
//interval:脉冲间隔
//length:脉冲宽度
//status:脉冲配置:1,高电平有效;0,关闭;-1,低电平有效.
void Ublox_Cfg_Tp(u32 interval, u32 length, signed char status)
{
    u8 USART_TX_BUF[0xff];
    _ublox_cfg_tp *cfg_tp = (_ublox_cfg_tp *)USART_TX_BUF;
    cfg_tp->header = 0X62B5;    //cfg header
    cfg_tp->id = 0X0706;        //cfg tp id
    cfg_tp->dlength = 20;       //数据区长度为20个字节.
    cfg_tp->interval = interval;//脉冲间隔,us
    cfg_tp->length = length;    //脉冲宽度,us
    cfg_tp->status = status;    //时钟脉冲配置
    cfg_tp->timeref = 0;        //参考UTC 时间
    cfg_tp->flags = 0;          //flags为0
    cfg_tp->reserved = 0;       //保留位为0
    cfg_tp->antdelay = 820;     //天线延时为820ns
    cfg_tp->rfdelay = 0;        //RF延时为0ns
    cfg_tp->userdelay = 0;      //用户延时为0ns
    Ublox_CheckSum((u8 *)(&cfg_tp->id), sizeof(_ublox_cfg_tp) - 4, &cfg_tp->cka, &cfg_tp->ckb);
    Sys_sPrintf(GPS_USART, USART_TX_BUF, sizeof(_ublox_cfg_tp));
    USART_DMA_Enable(GPS_USART, sizeof(_ublox_cfg_tp));  //通过dma发送出去
}
Beispiel #3
0
/**
  * @brief  Main program
  * @param  None
  * @retval None
  */
int main(void)
{          
    /* System Clocks Configuration */
    RCC_Configuration();
    
    /* NVIC configuration */
    NVIC_Configuration();
    
    /* LED configuration */
    LED_config();
    GD_EVAL_LEDOn(LED1);
    GD_EVAL_LEDOn(LED3);
    
    /* USART configuration */
    USART_Configuration(); 
#ifdef GD32F130_150
    /* DMA1 channel2 configuration */
    DMA_DeInit(DMA1_CHANNEL2);
    DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)0x40013828;
    DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SRC_Const_Buffer;
    DMA_InitStructure.DMA_DIR = DMA_DIR_PERIPHERALDST;
    DMA_InitStructure.DMA_BufferSize = BufferSize;
    DMA_InitStructure.DMA_MemoryInc = DMA_MEMORYINC_ENABLE;
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PERIPHERALDATASIZE_BYTE;
    DMA_InitStructure.DMA_MemoryDataSize = DMA_MEMORYDATASIZE_BYTE;
    DMA_InitStructure.DMA_PeripheralInc = DMA_PERIPHERALINC_DISABLE;
    DMA_InitStructure.DMA_Mode = DMA_MODE_NORMAL;
    DMA_InitStructure.DMA_Priority = DMA_PRIORITY_VERYHIGH;
    DMA_InitStructure.DMA_MTOM = DMA_MEMTOMEM_DISABLE;
    DMA_Init(DMA1_CHANNEL2, &DMA_InitStructure);
      
    USART_DMA_Enable(USART1, USART_DMAREQ_TX, ENABLE);
    
    DMA_INTConfig(DMA1_CHANNEL2, DMA_INT_TC, ENABLE);
    
    /* Enable DMA transfer */
    DMA_Enable(DMA1_CHANNEL2, ENABLE);
#elif defined GD32F170_190    
    /* DMA1 channel2 configuration */
    DMA_DeInit(DMA1_CHANNEL4);
    DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)0x40004428;
    DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SRC_Const_Buffer;
    DMA_InitStructure.DMA_DIR = DMA_DIR_PERIPHERALDST;
    DMA_InitStructure.DMA_BufferSize = BufferSize;
    DMA_InitStructure.DMA_MemoryInc = DMA_MEMORYINC_ENABLE;
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PERIPHERALDATASIZE_BYTE;
    DMA_InitStructure.DMA_MemoryDataSize = DMA_MEMORYDATASIZE_BYTE;
    DMA_InitStructure.DMA_PeripheralInc = DMA_PERIPHERALINC_DISABLE;
    DMA_InitStructure.DMA_Mode = DMA_MODE_NORMAL;
    DMA_InitStructure.DMA_Priority = DMA_PRIORITY_VERYHIGH;
    DMA_InitStructure.DMA_MTOM = DMA_MEMTOMEM_DISABLE;
    DMA_Init(DMA1_CHANNEL4, &DMA_InitStructure);
      
    USART_DMA_Enable(USART2, USART_DMAREQ_TX, ENABLE);
    
    DMA_INTConfig(DMA1_CHANNEL4, DMA_INT_TC, ENABLE);
    
    /* Enable DMA transfer */
    DMA_Enable(DMA1_CHANNEL4, ENABLE);
#endif    
    /* Waiting for the transfer to complete*/
    while(count == 0)
    {
    
    }
    
    GD_EVAL_LEDOff(LED1);
    GD_EVAL_LEDOff(LED3);
    GD_EVAL_LEDOn(LED2);
    GD_EVAL_LEDOn(LED4);
    
    while(1)
    {
        
    }
}