Пример #1
0
/*!
 * Init board.
 */
void BoardInit(void)
{
    /* Initialise ports. */
    PortInit();
    /* Initialise system clock. */
    SystemClkInit();
    /* Initialise SPI1. */
    Spi1Init();
    /* Initialise Timer0. */
    Timer0Init();
    /* Initialise Timer3. */
    Timer3Init();
    /* Initialise interrupts. */
    InterruptInit();
    /* Initialise the LCD. */
    LcdInit();
    /* Clear LCD. */
    LcdClearDisplay();
    /* Initialise LEDs. */
    LEDInit();
  #ifdef RTC_ENABLED
    /* RTC init. */
    RTC_Init();
  #endif //RTC_ENABLED
  #ifdef UART0_ENABLED
    /* UART0 init. */
    Uart0Init();
  #endif //UART0_ENABLED
}
Пример #2
0
/*******************************************************************************
* 函 数 名 :main
* 函数功能 :主函数
* 输    入 :无
* 输    出 :无
*******************************************************************************/
void main()
{
	UsartConfiguration();
	printf("system begin\r\n");
	Timer0Init();
	Exit0Init();
	SystemInit();	
	
	while(1)
	{
		KeyScan();
		Display(ratio_value);
//		if(motor_count >= 5000)//每隔5s反转一次
//		{
//			motor_count = 0;
//			motor_dir = !motor_dir;
//			printf("system switch dir\r\n");
//		}
		if(time1s_tick>= 2000)
		{
			time1s_tick = 0;
			printf("%d %d\r\n",coder_count,motor_count);
		}
	}	
}
Пример #3
0
Файл: main.c Проект: Gewin/Ucos
void MainTask(void *pdata) //Main Task create taks0 and task1
{
	#if OS_CRITICAL_METHOD == 3		/* Allocate storage for CPU status register */
		OS_CPU_SR  cpu_sr;
	#endif
	OS_ENTER_CRITICAL();

	Timer0Init();				//initial timer0 for ucos time tick
	ISRInit();				//initial interrupt prio or enable or disable

	OS_EXIT_CRITICAL();

	OSPrintfInit();				//use task to print massage to Uart 

	OSStatInit();
	OSTaskCreate (Task0,(void *)0, &Task0Stk[Task0StkLengh - 1], Task0Prio);	
	OSTaskCreate (Task1,(void *)0, &Task1Stk[Task1StkLengh - 1], Task1Prio);	
	OSTaskCreate (Task2,(void *)0, &Task2Stk[Task2StkLengh - 1], Task2Prio);	 
	OSTaskCreate (Task3,(void *)0, &Task3Stk[Task2StkLengh - 1], Task3Prio);	 
	while(1)
	{
		OSPrintf("\nEnter Main Task\n");
		OSTimeDly(OS_TICKS_PER_SEC);
	}
}
Пример #4
0
void main(void){
//	UCHAR Test[3]={0x88,0x01,0x02};
	
IO_Init();
init_Uart();
Timer0Init();
INT_Init();
System_SetParaInit();
EA=1;
//		USART_Send(Test,sizeof(Test),1);
		Delay_ms(100);
		BuzzerTriggrt = 1;


while(1){
//		Delay_ms(1000);
//		SBUF = 0xaf;while(!(SCON&0x02));SCON &= ~0x02;
//if(Com1DataCounter != 0){
//	Muti_Send_Byte(Com1DataBuffer,Com1DataCounter);		//将上位机的数据直接下发到下面的单片机
//	Com1DataCounter=0;
//	memset(Com1DataBuffer,0x00,600);
//}
	
	P34 = 1;
	ENTM = 1;
if(HeartbeatTrigger == 1)
{
	UART_Fe_Seq++;
	USART1_Send(CommonDataBuffer,Fe_data_Organize(CMD_Heartbeat,&ReplySucc,1,0));
	HeartbeatTrigger = 0;
}

if(ResetWifiTrigger == 1)
{	/*由徐志坚禁止了没有收到服务器的命令而重启WiFi的功能*/
	//nResetWifi = 0;   
	//Delay_ms(500);
	//nResetWifi = 1;
	//ResetWifiOnOff  = 0;//关闭WIFI重置开关,WIFI重启以后,必须关闭重置开关防止WIFI模块连接服务器过程中再次重启。
	ResetWifiTrigger = 0;
}

if(Com1HaveDate)
{
	USART4_Send(Com1DataBuffer,Com1DataCounter);
	Com1DataCounter=0;
	memset(Com1DataBuffer,0x00,600);
	Com1HaveDate = 0;
}


if(Exint0Counter != 0)
{
	Exint0_DATA_deal();
}

	}

}
Пример #5
0
/*******************************************************************************
* 函 数 名 :main
* 函数功能 :主函数
* 输    入 :无
* 输    出 :无
*******************************************************************************/
void main()
{
	Timer0Init();
	speed = 30;
	while(1)
	{ 
		KeyScan();
	}
}
Пример #6
0
/*******************************************************************************
* 函 数 名 :main
* 函数功能 :主函数
* 输    入 :无
* 输    出 :无
*******************************************************************************/
void main()
{
	Timer0Init();
	InitMotor();
	while(1)
	{ 
		SetMotor();
	}
}
Пример #7
0
void main(){
	EA = 1;
	Timer0Init();
	Timer1Init();
	
	while(1){
		P26 = P15;
		P25 = keysta;
	};
}
Пример #8
0
/*******************************************************************************
* 函 数 名 :main
* 函数功能 :主函数
* 输    入 :无
* 输    出 :无
*******************************************************************************/
void main()
{
	CarStop();	
	LED_OFF;
	UsartConfiguration();
	LCD1602Init();
	Timer0Init();
	
	//5ms 执行一次
	while(1)
	{ 
		if(tick_5ms >= 5)
		{
			tick_5ms = 0;
			tick_200ms++;
			if(tick_200ms >= 40)
			{
				tick_200ms = 0;
				if(switch_flag)
				{
					LED_ON;
					switch_flag = 0;
				}else
				{
					LED_OFF;
					switch_flag = 1;				
				}
			}
			
			continue_time--;//200ms 无接收指令就停车
			if(continue_time == 0)
			{
				continue_time = 1;
				CarStop();
			}
			//do something
			if(bt_rec_flag == 1)//接收到红外信号
			{
				bt_rec_flag = 0;
				switch(ctrl_comm)
				{
					case COMM_UP:    CarGo();break;
					case COMM_DOWN:  CarBack();break;
					case COMM_LEFT:  CarLeft();break;
					case COMM_RIGHT: CarRight();break;
					case COMM_STOP:  CarStop();break;
					default : break;
				}
				LCD1602WriteCommand(ctrl_comm);
				//printf("%c",ctrl_comm);
			}
		}
	}
}
Пример #9
0
void TIMERdelay (int uSec) {
    if(!timer0Inicializado) {
        Timer0Init();
        timer0Inicializado = 1;
    }
    flagTimer = 0;
    Timer0Count(uSec);
    while(!flagTimer)
        ;// Espero la interrupcion del timer que suba el flag
    return;
}
Пример #10
0
void main(){
	u8 str[] = "MaWei";
	
	EA = 1;
	UartInit();
	Timer0Init();
	
	sendStr(str);
	while(1){		
		P30 = P31;
	}
}
Пример #11
0
/*******************************************************************************
* 函 数 名 :main
* 函数功能 :主函数
* 输    入 :无
* 输    出 :无
*******************************************************************************/
void main()
{
	Timer0Init();
	angle_count=7;
	Delayms(500);//先回原位
	while(1)
	{ 
		for(angle_count=7;angle_count<23;angle_count++)
		Delayms(30);
		for(angle_count=23;angle_count>7;angle_count--)
		Delayms(30);
	}
}
Пример #12
0
/*********************************************************************************************************
** 函数名称: TargetInit
** 功能描述: 目标板初始化代码,在需要的地方调用,根据需要改变
** 输 入: 无
**
** 输 出: 无
**         
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 陈明计
** 日 期: 2004年2月2日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void TargetInit(void) /*由汇编转入到此处*/
{
    OS_ENTER_CRITICAL();
    srand((INT32U) TargetInit);
    VICInit();
    Timer0Init();
	
  VICIntSelect=0x00;		  //中断全部设置为IRQ
  VICVectCntl8=0x20|4;	  //第8优先级的中断分配给了Timer0,向量IRQ使能
  VICVectAddr8=(unsigned int) IRQ_Timer0;	 //将第8优先级的地址赋值为TIMER0中断入口地址
  VICIntEnable=1<<4;

    OS_EXIT_CRITICAL();
}
Пример #13
0
/*******************************************************************************
* 函 数 名 :main
* 函数功能 :主函数
* 输    入 :无
* 输    出 :无
*******************************************************************************/
void main()
{
	int key_value;
	CarStop();	
	LED_OFF;
	LCD1602Init();
	Timer0Init();
	
	//5ms 执行一次
	while(1)
	{ 
		key_value = KeyScan();
		if(key_value == KEY1) 
		{
			sys_status = 0;
		}			
		if(key_value == KEY2) 
		{
			sys_status = 1;
		}
		//执行部分
		if(sys_status == 1)
		{
			VoidRun();
		}else
		{
			ctrl_comm = COMM_STOP;
			CarStop();
		}
		if(tick_5ms >= 5)
		{
			tick_5ms = 0;
			tick_200ms++;
			if(tick_200ms >= 40)
			{
				tick_200ms = 0;
				if(switch_flag)
				{
					LED_ON;
					switch_flag = 0;
				}else
				{
					LED_OFF;
					switch_flag = 1;				
				}
			}
		}			
	}
}
Пример #14
0
MAIN void main(void) {
    Init();

    // Enable odometry
    LED_CONFIGURE_ODOMETRY();
    // Configure auto measurment mode
    SensorInit();
    SensorConfigAutomode(am_odo);
    // Setup encoder control
    EncoderInit();
    EncoderMovementReset();
    // Initialize 1kHz tick timer
    Timer0Init();
    Timer0IntEnable();

    // Set drive direction
    MotorDir(FWD, FWD);

    for (;;) {
        // Circle with approx. 10cm diameter
        ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
            EncoderMovementSetSpeed(INNER_SPEED, OUTER_SPEED(100));
        }
        msleep(5000);

        // Circle with approx. 25cm diameter
        ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
            EncoderMovementSetSpeed(INNER_SPEED, OUTER_SPEED(250));
        }
        msleep(3000);

        // Tightening spiral
        for (uint8_t i = 250; i >= 80; i -= 10) {
            ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
                EncoderMovementSetSpeed(INNER_SPEED, OUTER_SPEED(i));
            }
            msleep(500);
        }

        // Straight line
        ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
            EncoderMovementSetSpeed(125, 125);
        }
        msleep(3000);
    }
}
Пример #15
0
void main()
{
	flag= 0;
	sys_init();
	Timer0Init();
	Timer0Init_50ms();
	IO_init();	
	PWM_Init();
	clear();
	while(1)
	{
		key();
		conver_nu();
		LCD_display();
	
	}
}
Пример #16
0
/***********************************************************************************
 * @prototype       void SystemInit(void)
 * @description     Initializes the device
 * @param           None
 * @return          None
 ***********************************************************************************/
void SystemInit(void)
{
    // Initialize GPIO and peripheral
    GPIOInit();

    // Initialize Timers
    Timer0Init();
	Timer1Init();

    // Initialize UART
    USARTInit(_BAUDRATE);
	
	// Initialize ADC
	ADC_Init();

	// Enable interrupts
    sei();
}
Пример #17
0
void main(void)
{
	u8 i;
	delay_ms(200); //上电延时200ms等待系统稳定
	UartInit();	 //串口1初始化
	Timer0Init();//定时器0初始化
	INT0Init();//中断0初始化
	IR_IO=1;
    while(1)
	{
		if(codeCnt==31)	//数据接收完成
		{
			if(IR_data[2]==~IR_data[3])//校验一下反码
			{
				for(i=0;i<4;i++) SendData(IR_data[i]);//输出4位hex
				delay_ms(30);//延时30ms等待数据超时,遥控器一次发3组相同的数据,这里用延时只接收1组就好了。
			}
		}
	}
}
Пример #18
0
/*******************************************************************************
* 函 数 名 :main
* 函数功能 :主函数
* 输    入 :无
* 输    出 :无
*******************************************************************************/
void main()
{
	CarStop();	
	LCD1602Init();
	Timer0Init();
	UltraSoundInit();
	//5ms 执行一次
	while(1)
	{ 
		if(tick_5ms >= 5)
		{
			tick_5ms = 0;
			tick_200ms++;
			if(tick_200ms >= 40)
			{
				tick_200ms = 0;
				LCD1602WriteDistance(distance_cm);
			}
			
			//do something
			Distance();
			BarrierProc();
//			if(ctrl_comm_last != ctrl_comm)//指令发生变化
//			{
//				ctrl_comm_last = ctrl_comm;
//				switch(ctrl_comm)
//				{
//					case COMM_UP:    CarGo();break;
//					case COMM_DOWN:  CarBack();break;
//					case COMM_LEFT:  CarLeft();break;
//					case COMM_RIGHT: CarRight();break;
//					case COMM_STOP:  CarStop();break;
//					default : break;
//				}
//				LCD1602WriteCommand(ctrl_comm);
//			}
		}
	}
}
Пример #19
0
/*******************************************************************************
* 函 数 名 :main
* 函数功能 :主函数
* 输    入 :无
* 输    出 :无
*******************************************************************************/
void main()
{
	int key_value;
	CarStop();	
	LED_OFF;
	Timer0Init();
	UltraSoundInit();
	
	//5ms 执行一次
	while(1)
	{ 
		key_value = KeyScan();
		if(key_value == KEY1) 
		{
			sys_status = 0;
		}
			
		if(key_value == KEY2) 
		{
			sys_status = 1;
		}
		//执行部分
		if(tick_5ms >= 5)
		{
			tick_5ms = 0;
			if(sys_status == 1)
			{
				Distance();
				VoidRun();
			}else
			{
				CarStop();
			}  
		}   
	}
}
Пример #20
0
void main()
{
	u16 i;
	u8 dir=0,height=0,cmd=0;
	u8 color=0,light=0;
	u8 temp;
	u8 d,h;
	Timer0Init();
	Timer1Init();
	usart_init(9600);
	//SendString("mcu is working!\n");
	
	while(1)
	{	
	/*获取地址*/
	block=P2&0x0f;
	pole=(P3&0xf0)>>4;
	
	/*串口接收处理*/
	if(USART_RX_STA==STA_OK)
	{
		for(i=0;i<USART_REC_LEN;i++)//返回数据
		{
		SendData(USART_RX_BUF[i]);
		}
		
		if(USART_RX_BUF[0]==0)//群发数据
		{
			cmd = USART_RX_BUF[1];
			switch(cmd)
			{
				case 1:Display_ALL();break;//同步
				case 2:OFF_ALL();break;//复位
				case 3:break;//呼吸灯
				case 4:color = USART_RX_BUF[2];
					   light = USART_RX_BUF[3];
					   LED_ALL_ON(color,light);break;//跑马灯
				case 5:check_led();break;//检测
				case 6:WriteData(IAP_ADDRESS,480,EEPROM_TEMP);break;//将缓存区数据存入EEPORM
				case 7:ReadRGB_EEPORM_ByID(IAP_ADDRESS,1);break;
				case 8:for(i=0;i<ONE_SECTOR;i++)
						{
						temp = IAP_ReafByte(IAP_ADDRESS+i);
						SendData(temp);
						}break;//读取EEPROM数据
				case 9:ET0=0;
					   SendData(block);//返回目标地址
					   SendData(pole);break;
				case 10:ET0=1;break;
			}
			SendData(cmd);//返回命令字
		}
		
		else if(USART_RX_BUF[0]>0)//单个目标数据
		{
			if(USART_RX_BUF[0]==block&&USART_RX_BUF[1]==pole)//是否为目标地址
			{
				RGB_DATA.dir    = USART_RX_BUF[2];//获取方向值
				RGB_DATA.height = USART_RX_BUF[3];//获取高度值
				RGB_DATA.rgb[0] = USART_RX_BUF[4];//获取数据值
				RGB_DATA.rgb[1] = USART_RX_BUF[5];
				RGB_DATA.rgb[2] = USART_RX_BUF[6];
				RGB_DATA.id     = USART_RX_BUF[7];//获得帧ID
//				rgb =&USART_RX_BUF[4];//获取数据值
//				
//				SetRGB(dir,height,rgb);//设置数据值
				WriteRGB_EEPROMTemp(EEPROM_TEMP,RGB_DATA);
//				SendData(block);//返回目标地址
//				SendData(pole);
			}
		}				
		USART_RX_STA=STA0;
		USART_REC_LEN=0;
	}
	for(d=1;d<=4;d++)
	for(h=1;h<=4;h++)
	BreathingLight(d,h,1,60);
	}
}