示例#1
0
unsigned char handleCmd_timer(void ** args)
{
	USART_printf("Timer raw val: ");
	USART_printf(itoa(getTimerRaw()));
	USART_printf("\r\n");
	return 0;
}
示例#2
0
void ledStringSetProgram(void ** args )
{
	unsigned int numArg = atoi(((unsigned char **) args)[1]);
	unsigned int numArg2 = atoi(((unsigned char **) args)[2]);
	/*get sub command*/
	if(strcmp((((unsigned char **) args)[0]), "prog" )==0)
	{
		USART_printf("Setting ledString program...\r\n");
		currentProgram = numArg;
	}
	else if(strcmp((((unsigned char **) args)[0]), "speed" )==0)
	{
		USART_printf("Update speed ledString...\r\n");
		timer_update(0, 0,numArg, ledStringTimer);
	}
	else if(strcmp((((unsigned char **) args)[0]), "effect" )==0)
	{
		setLedEffect(numArg,(unsigned char)numArg2);
	}
	else
	{
		USART_printf("prog, speed, effect, are valid.");
	}

}
示例#3
0
void shellProcess()
{
	if(console_process(CONSOLE_NON_BLOCKING,input_str, CONSOLE_MAXLEN)) {
		USART_printf("\r\n");
		shell_process(input_str);
		USART_printf("->");
	}
}
示例#4
0
unsigned char handleCmd_help(void ** args)
{
	unsigned char i;
	for(i=0; i< (sizeof(commandList)/sizeof(t_command)); i++)
	{
		USART_printf(&(commandList[i]).cmd);
		USART_printf(": ");
		USART_printf(&(commandList[i]).descr);
		USART_printf("\r\n");
	}

	return 0;
}
示例#5
0
文件: HMC5883.c 项目: ccccjason/IMU
void Magnetic::HMC5883_Read(void)
{

    uint8_t t_cmd;
    t_cmd = 0x14;
    I2C_Write_NBytes(HMC5883_ADDR, 0x00, 1, &t_cmd);
    t_cmd = 0x00;
    I2C_Write_NBytes(HMC5883_ADDR, 0x02, 1, &t_cmd);

    for (int i = 0; i < 6; i++) {
        I2C_Read_NBytes(HMC5883_ADDR, 0x03 + i, 6, &Mag_buf[i]);
    }

    Mag_X = (Mag_buf[1] << 8) | Mag_buf[0];
    Mag_Z = (Mag_buf[3] << 8) | Mag_buf[2];
    Mag_Y = (Mag_buf[5] << 8) | Mag_buf[4];
    USART_printf("m_x:%10d m_y:%10d m_z:%10d\r\n",
                 Mag_X, Mag_X, Mag_X);
    /*

      if(HMC5883.x>0X7FFF)HMC5883.x -= 0XFFFF;
      if(HMC5883.y>0X7FFF)HMC5883.y -= 0XFFFF;

    angle = atan2((double)HMC5883.y,(double)HMC5883.x) * (180 / 3.14159265) + 180;
              // angle in degrees

    */
}
/**
   * @brief Reports the name of the source file and the source line number
   * where the assert_param error has occurred.
   * @param file: pointer to the source file name
   * @param line: assert_param error line source number
   * @retval None
   */
void assert_failed(uint8_t* file, uint32_t line)
{
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,*/
    USART_printf( &BSP_USART_PRINT, "Wrong parameters value: file %s on line %d\r\n", file, line) ;
  /* USER CODE END 6 */

}
示例#7
0
unsigned char handleCmd_adc(void ** args)
{
	 int i, sample, min = 1024, max = 0;
	unsigned int average =0;

	/*get first argument as string*/
	unsigned char * arg1 = (unsigned char *)args[0];

	if(!strcmp(arg1, "test")) {

		USART_printf("ADC sample: ");
		for(i=0;i< 100; i++)
		{
			sample = adcSampleBlocking();
			USART_printf(itoa(sample));
			USART_printf("\r\n");
			if(min > sample) min = sample;
			if(max < sample) max = sample;
			average += sample;
		}


		USART_printf("min:");
		USART_printf(itoa(min));

		USART_printf("max:");
		USART_printf(itoa(max));
		USART_printf("avg:");
		USART_printf(itoa((unsigned int)(average/100)));

	} else if(!strcmp(arg1, "cont")) {
		/*install timer which calls adc continuously.*/

		/*install timer which handles chunk of samples*/
	}
	else
		USART_printf("arg: 't'||'c'\r\n");

	return 0;
}
示例#8
0
int main (void)
{


	init_main();
	/*wait for first character to be received*/
	USART_Receive(0);

	/*print welcome string*/
	USART_printf("Hello there....................\r\n->");
	DDRB |= _BV(DDB5);


	while(1)
	{
		/*exec shell*/
		shellProcess();

		/*exec timer process*/
		timing_process();

		/*exec led updater*/
		ledStringProcess();


/* set pin 5 of PORTB for output*/
 //


  /* set pin 5 high to turn led on */
  //PORTB |= _BV(PORTB5);
  //_delay_ms(BLINK_DELAY_MS*4);

  /* set pin 5 low to turn led off */
  //PORTB &= ~_BV(PORTB5);
  //_delay_ms(BLINK_DELAY_MS);


 }

 return 0;
}
示例#9
0
int main(void)
{
	char start_char;
	uint16_t n_chars;
	/* Clock setup */
	InitClock();

	/* Program Timer 1 to raise interrupts */
	T1_program();

	/* Init leds */
	EE_leds_init();
	EE_demoboard_leds_init();

	console_init();
	USART_printf("Hello From Erika RTOS, press t to run the benchmark \r\n");
	//calcRawSpeed();


	do{
		readChar(&start_char);
	}while(start_char != 't');
	//USART_printf("T ok \r\n");
	stop = 0;

	uint8_t i;
	calcRawSpeed();
	initState(kwips_rawspeed, initAlarms, initFreq, initKWPP);

	//for(i=0; i<9999; i++){}

	ActivateTask(SuperTask);

	//for(i=0; i<9999; i++){}

	StartOS(OSDEFAULTAPPMODE);

	/* Forever loop: background activities (if any) should go here */
	for (;;);

	return 0;
}
示例#10
0
void setLedEffect(unsigned char effectNr, unsigned char argument)
{
	USART_printf("setting effect:");
	USART_printf(itoa(effectNr));
	switch(effectNr)
	{
		case 1:
			if(globalEffectArgument > 99)
			{
				USART_printf(itoa(argument));
				USART_printf("?, prog needs arg < 100...");
			}
			else
			{
				globalEffectArgument = argument;
				doLedEffectFunc = ledEffectPostGlow;
			}
			break;
		case 2:
			if(globalEffectArgument > 10)
			{
				USART_printf(itoa(argument));
				USART_printf("?, prog needs arg < 10...");
			}
			else
			{
				doLedEffectFunc = ledEffectFade;
				globalEffectArgument = argument;
			}
			break;
		default:
			/*directly forward*/
			doLedEffectFunc = showPixel;
			break;
	}
}
示例#11
0
int main(void)
{
	char cmd, subcmd, x, y, v, w, r;	//variables used for loops, buffering of command bytes, counters etc.
	uint16_t color;		//counters for long stuff that may go over 256
	uint8_t pressureThreshhold = 10;

	TouchScreen_init();

	USART_set_baud(6);
	LCD_init();

	//flush any received chars
	USART_flush();

	LCD_drawString("Ready For Command", 0, 10, 1, WHITE, USART_recv);

    /* Replace with your application code */
    while (1)  {
		if(!RX_available()) {

			TSPoint p = TouchScreen_getPoint();

			if(p.z > pressureThreshhold) {
				USART_printf("X = %d\r\n", p.x);
				USART_printf("Y = %d\r\n", p.y);
				USART_printf("Pressure = %d\r\n", p.z);
			}

		} else {
			cmd = USART_recv();
			switch(cmd) {

				case 124:
					subcmd = USART_recv();

					switch(subcmd) {

						case 1:	//clear screen
							LCD_paint_screen_black();
						break;
						//************************************************************************************************************
						case 3:	//draw circle
							x = USART_recv();
							y = USART_recv();
							r = USART_recv();

								// get integer color
							color = USART_recv();
							color = color << 8;
							color |= USART_recv();  

							LCD_drawCircle(x, y, r, color);
						break;
						case 4:
							x = USART_recv();
							y = USART_recv();
							r = USART_recv();

							// get integer color
							color = USART_recv();	//store it and increment RX_read
							color = color << 8;
							color |= USART_recv();

							LCD_fillCircle(x, y, r, color);
						break;
						case 12:	//line
							x = USART_recv();
							y = USART_recv();
							v = USART_recv();
							w = USART_recv();

							// get integer color
							color = USART_recv();
							color = color << 8;
							color |= USART_recv();

							LCD_drawLine(x, y, v, w, color);
						break;
						//************************************************************************************************************
 						case 15:
							x = USART_recv();
							y = USART_recv();
							v = USART_recv();
							w = USART_recv();

							// get integer color
							color = USART_recv();
							color = color << 8;
							color |= USART_recv();

							LCD_drawRectangle(x, y, v, w, color);
						break;
						//************************************************************************************************************
						case 16:		//set pixel
							x = USART_recv();
							y = USART_recv();

							color = USART_recv();
							color = color << 8;
							color |= USART_recv();
 					
					
							LCD_setPixel(x, y, color);
						break;
						case 18:
							x = USART_recv();
							y = USART_recv();
							v = USART_recv();
							w = USART_recv();

							// get integer color
							color = USART_recv();
							color = color << 8;
							color |= USART_recv();

							LCD_fillRectangle(x, y, v, w, color);
						break;
						case 20: // draw text
							x = USART_recv();

							y = USART_recv();

							// size
							r = USART_recv();

							// get integer color
							color = USART_recv();	//store it and increment RX_read
							color = color << 8;
							color |= USART_recv();

							// send string end with 0
							LCD_drawString(NULL, x, y, r, color, USART_recv);
						break;
					}
				break;
			}
		}
    }
}
示例#12
0
int main(void)
{	
	u8 i=0,m=0;
	//char buff[6];
	SystemInit();//初始化RCC 设置系统主频为72MHZ
	USART1_Config();
	delay_init();	     //延时初始化
	Ultran_Init();
	I2c_Init_MI();
	TIM5_Cap_Init(0xfffe,8);
	TIM2_Cap_Init(0xfffe,8);
	TIM3_Cap_Init(0xfffe,8);
	TIM1_Cap_Init(0xfffe,8);
	TIM4_Cap_Init(0xfffe,8);
	TIM8_Cap_Init(0xfffe,8);
	USART1_Config();
	USART2_Config();
	USART3_Config();
	delay_ms(1000);
	delay_ms(1000);
	esp8266_ap_server_init();
	for(i=0;i<99;i++)//数组初始化
	{
		data_pc[i]=0x30;
	}
	data_pc[0]=0xff;
	data_pc[1]=0xff;
  while(1)
{	
//		char *buff[10]={"AT",
//	"AT+CIPSTATUS"};
	Ultra_Ranging();
	if(state_0x0a==1)//字符串解析函数
	{
		u8 i=0,weizhi=0;
		data_exist=bf( data_cu,ESP_Responses[5]);
		if(data_exist!=-1)
		{
			data_exist1=bf( data_cu,ESP_Responses[10]);
			if(data_exist1!=-1)
			{	
				data_exist2=data_exist1-data_exist-7;
				if(data_exist2==1)
				{
					data_length1=data_cu[data_exist+7];
					data_length1=data_length1-0x30;
					data_length=data_length1;
					weizhi=9;
				}

				if(data_exist2==2)
				{
					data_length1=data_cu[data_exist+7];
					data_length1=data_length1-0x30;
					data_length1=data_length1*10;

					data_length2=data_cu[data_exist+8];
					data_length2=data_length2-0x30;
					data_length=data_length1+data_length2;
					weizhi=10;
				}

				for(i=0;i<data_length;i++)
				{
					data_wifi[i]=data_cu[data_exist+weizhi+i];				
				}
//				USART_printf(USART1, data_right);//发送通过校验的数据到电脑上方便调试
//				USART_printf(USART1, "\r\n");
			}


		}
		cun=0;
		for(i=0;i<100;i++)//清空接收数组
		{
			data_cu[i]=0;
		}
		state_0x0a=0;//接收状态变量清零
		//data_exist=0;
	}
	if(state_0x0a1==1)//字符串解析函数
	{
		u8 i=0,weizhi=0;
		data_exist3=bf( data_cu1,ESP_Responses[5]);
		if(data_exist3!=-1)
		{
			data_exist4=bf( data_cu1,ESP_Responses[10]);
			if(data_exist4!=-1)
			{	
				data_exist5=data_exist4-data_exist3-7;
				if(data_exist5==1)
				{
					data_length4=data_cu1[data_exist3+7];
					data_length4=data_length4-0x30;
					data_length3=data_length4;
					weizhi=9;
				}

				if(data_exist5==2)
				{
					data_length4=data_cu1[data_exist3+7];
					data_length4=data_length4-0x30;
					data_length4=data_length4*10;

					data_length5=data_cu1[data_exist3+8];
					data_length5=data_length5-0x30;
					data_length3=data_length4+data_length5;
					weizhi=10;
				}

				for(i=0;i<data_length3;i++)
				{
					data_wifi1[i]=data_cu1[data_exist3+weizhi+i];				
				}
				//USART_printf(USART1, data_right);//发送通过校验的数据到电脑上方便调试
				//USART_printf(USART1, "\r\n");
			}


		}
		cun1=0;
		for(i=0;i<100;i++)//清空接收数组
		{
			data_cu1[i]=0;
		}
		state_0x0a1=0;//接收状态变量清零
		//data_exist=0;
	}	 
	data_test=0;
	for(data_long=0;data_long<9;data_long++)//将接收到的数据进行加和,准备进行校验
	{
		data_test+=data_wifi[data_long];

	}
	if(data_test==data_wifi[9])//校验通过就将数据转移并且保存
	{
		for(data_long=0;data_long<9;data_long++)
		{
			data_right[data_long]=data_wifi[data_long];

		}
	}
	data_test=0;
	for(data_long=0;data_long<9;data_long++)//将接收到的数据进行加和,准备进行校验
	{
		data_test+=data_wifi1[data_long];

	}
	if(data_test==data_wifi1[9])//校验通过就将数据转移并且保存
	{
		for(data_long=0;data_long<9;data_long++)
		{
			data_right1[data_long]=data_wifi1[data_long];

		}
	}
	
	for(i=0;i<6;i++)//将转速数据放入data_pc数据包
	{
		sprintf(revolving,"%d",juli[i]);
		for(m=0;m<5;m++)
		{
			if(revolving[m]==0)
				revolving[m]=0xaa;
		}
		for(m=revolving_long;m>0;m--)
		{
			data_pc[i*revolving_long+m+1]=revolving[m-1];

		}
		for(m=0;m<revolving_long;m++)							//将revolving在这里清零
		{
			revolving[m]=0;
		}
	}

	for(i=0;i<8;i++)
	{
		data_pc[32+i+8*(data_right[8]-1)]=data_right[i];
	}
	for(i=0;i<8;i++)
	{
		data_pc[32+i+8*(data_right1[8]-1)]=data_right1[i];
	}	
      crc_code = yb_crc(data_pc,80);//计算CRC校验码
			
	USART_printf(USART1, data_pc);//发送通过校验的数据到电脑上方便调试
	USART_printf(USART1, "\r\n");
	//printf(data_right);
	//printf("\r\n");
	//			printf("电机1=%d ",juli);
	//			printf("电机2=%d\r\n",juli1);
	//			printf("*********\r\n");
	//USART_printf(USART1,buff[1] );
	//delay_ms(100);
	//esp8266_ap_server_init();
	}
			//printf("电机1=%d\s\n",juli);
			//printf("电机2=%s\r\n",juli1);
			
 }