Exemple #1
0
static	void	App_TaskStart(void *p_arg)
{
	volatile  uint32_t status;
	int8u bufp[7] = {0xc4,0x01,0x01,0x00,0x00,0x00,0x55};
	uint8_t *ptr;
	uint8_t err;
	
	(void) p_arg;

	
	//系统滴答安装
	OS_CPU_SysTickInit();   

	//初始化信号量
	app_eventcreate();

	//初始化其他任务
	app_taskcreate();
	


	//初始化基础硬件
	BSP_Init();
	
	dw1000_init();

{
	dwtconf temp;
	temp.config.chan = 3;
	temp.config.prf = DWT_PRF_16M;
	
	temp.config.txPreambLength = DWT_PLEN_256;
	temp.config.rxPAC = DWT_PAC16;
	
	temp.config.rxCode = 5;
	temp.config.txCode = 5;
	temp.config.nsSFD = 1;
	
	temp.config.dataRate = DWT_BR_850K;
	temp.config.smartPowerEn = 0;
	
	temp.config.phrMode = 0;
	
	temp.mode = LOCA_LISTENER;
	dw1000_config(&temp);

}
dwt_rxenable(0);

	  USBD_Init(&USB_OTG_dev,
            USB_OTG_FS_CORE_ID, 
            &USR_desc, 
            &USBD_CDC_cb, 
            &USR_cb);
//dw1000_intenable();
	//发送log
	//Shell_SendDatas(strlen(logstr), logstr);

	//改变自己优先级 变为工作指示灯
	//OSTaskDel(OS_PRIO_SELF);
	OSTaskChangePrio(OS_PRIO_SELF, OS_LOWEST_PRIO - 4);
	
	while(TURE)
	{
	//	OSTimeDlyHMSM(0, 0, 0, 10);
		//dwt_writetxdata(127,msg,0);
		//dwt_writetxfctrl(127,0);
		//dwt_starttx(DWT_START_TX_IMMEDIATE);
	//	bufp[1] ++;
		//status = dwt_read32bitreg(SYS_STATUS_ID);


		ptr = OSQPend(qmsg, 0, &err);
		if (err == OS_ERR_NONE)
		{
		VCP_fops.pIf_DataTx(ptr+1, ptr[0]);

		free(ptr);
		}
	}
}
Exemple #2
0
int main(void)
{
    /*
     * System initializations.
     * - HAL initialization, this also initializes the configured
     *   device drivers and performs the board-specific initializations.
     * - Kernel initialization, the main() function becomes a thread
     *   and the RTOS is active.
     */
    halInit();
    chSysInit();

    // enable usb
    usbstartup();

    //enable debug print thread
    vInitDebugPrint((BaseSequentialStream *) &SDU1);

    palClearPad(GPIOA, GPIOA_PIN0);
    chThdSleepMilliseconds(20000);
    palSetPad(GPIOA, GPIOA_PIN0);
    //enable interrupt
    extStart(&EXTD1, &extcfg);

    // start thread to be activated by interrupt.
    start_thd();

    bool sender = false;
    if(palReadPad(GPIOC, GPIOC_PIN5) == PAL_HIGH){
        sender = true;
    }

    uint8_t rxbuf[4];
    dw1000_conf_t config;
    if(sender){
        config.shortaddr.u16 = 0xFA77;
    }
    else{
        config.shortaddr.u16 = 0xBEEF;
        //config.shortaddr.u16 = 0xBEFF;
    }


    dw.state = UNINITIALIZED;
    dw1000_euid_t euid;
    euid.u64 = 1;

    dw1000_generate_recommended_conf(
            &default_dw1000_hal,
            DW1000_DATARATE_850,
            DW1000_CHANNEL_2,
            euid,
            &config);

    dw.config = &config;

    dw1000_init(&dw);

    uint32_t zero = \
                    DW1000_EVENT_TXFRS | \
                    DW1000_EVENT_RXDFR | \
                    DW1000_EVENT_AFFREJ | \
                    DW1000_EVENT_RXFCE | \
                    DW1000_EVENT_RXPHE | \
                    DW1000_EVENT_LDEERR | \
                    DW1000_EVENT_RXRFSL | \
                    DW1000_EVENT_RXSFDTO | \
                    DW1000_EVENT_HPDWARN | \
                    DW1000_EVENT_TXBERR \
                    ;
    dw1000_set_interrupts(&default_dw1000_hal,zero);

    dw1000_receive(&dw);

    if(sender){
        set_ranging_callback(calibration_cb);
        palSetPad(GPIOC, GPIOC_PIN8);
    }
    else{
        palClearPad(GPIOC, GPIOC_PIN8);
    }

    int per_loop =0;
    uint8_t sleep =20;
    while(1)
    {
        //palTogglePad(GPIOC, GPIOC_PIN8);
        chThdSleepMilliseconds(sleep);
        dw1000_shortaddr_t dst;

        if(sender){
            dst.u16 = 0xBEEF;
            request_ranging(&dw, dst);
            chThdSleepMilliseconds(sleep);
            dst.u16 =0xBEFF;
            request_ranging(&dw, dst);
        }

        dw1000_get_event_counters(&default_dw1000_hal, counter);
        if (per_loop == 100){
            per_loop = 0;
           // printf("    PHR_ERRORS:    %u \n\r", counter[PHR_ERRORS]);
           // printf("    RSD_ERRORS:    %u \n\r", counter[RSD_ERRORS]);
           // printf("    FCS_GOOD:      %u \n\r", counter[FCS_GOOD]);
           // printf("    FCS_ERRORS:    %u \n\r", counter[FCS_ERRORS]);
           // printf("    FILTER_REJ:    %u \n\r", counter[FILTER_REJECTIONS]);
           // printf("    RX_OVERRUNS:   %u \n\r", counter[RX_OVERRUNS]);
           // printf("    SFD_TO:        %u \n\r", counter[SFD_TIMEOUTS]);
           // printf("    PREAMBLE_TO:   %u \n\r", counter[PREAMBLE_TIMEOUTS]);
           // printf("    RX_TIMEOUTS:   %u \n\r", counter[RX_TIMEOUTS]);
           // printf("    TX_SENT:       %u \n\r", counter[TX_SENT]);
           // printf("    HPWARN:        %u \n\r", counter[HALF_PERIOD_WARNINGS]);
           // printf("    TX_PWRUP_WARN: %u \n\r", counter[TX_PWRUP_WARNINGS]);
        }
        per_loop++;


    }

}