Esempio n. 1
0
void AT24Cxx_Test(void)
{
    uint16_t i = 0;
    uint8_t buffer[AT24CXX_TEST_DATASIZE];
    UART_printf("beigin AT24Cxx Test\r\n");
    AT24Cxx_Init();
    for(i=0; i<sizeof(buffer); i++)
    {
        buffer[i] = i;
    }
    AT24Cxx_Write(buffer, AT24CXX_TEST_ADDR, sizeof(buffer));
    for(i=0; i<sizeof(buffer); i++)
    {
        buffer[i] = 0;
    }
    AT24Cxx_Read(buffer,AT24CXX_TEST_ADDR,sizeof(buffer));
    for(i=0; i<sizeof(buffer); i++)
    {
        if(buffer[i] != i)
        {
            UART_printf("AT24Cxx Test:Err:buffer[%d] = %d\r\n",i,buffer[i]);
        }
    }
    UART_printf("AR24CXX Test complete\r\n");
}
Esempio n. 2
0
int main(void)
{
	  //使用USB 必须CoreClock = 96M
    uint8_t usb_hid_send_buf[8] ={0,0,0,0,0,0};
    uint8_t usb_hid_rec_buf[8];
    uint8_t usb_hid_rec_cnt = 0; //接收帧计数
    SystemClockSetup(ClockSource_EX50M,CoreClock_96M);
    DelayInit();
    LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED);
	  KBI_Init(KBI_PinLookup_CHK60EVB, kNumOfKEY);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
	  DisplayCPUInfo();
	     
	  UART_printf("Waitting for USB connect ...\r\n");
    USB_Init(); //初始化USB设备 
    USB_WaitDeviceEnumed(); //等待USB枚举成功
	  UART_printf("USB connected!\r\n");
	
    while(1) 
    {
			  KBI_Scan();
        usb_hid_send_buf[0] = KBI_GetKeyValue(kKEY1);
        usb_hid_send_buf[1] = KBI_GetKeyValue(kKEY2);	
        USB_HID_SendData(usb_hid_send_buf,8);  //发送数据
        if(USB_HID_RecData(usb_hid_rec_buf) != 0)  //接收到了数据
        {
            LED_Ctrl(kLED1, (usb_hid_rec_buf[0]&0x01)>>0);
            LED_Ctrl(kLED2, (usb_hid_rec_buf[0]&0x02)>>1);		
            usb_hid_rec_cnt++;
					  UART_printf("USB HID Data Received\r\n");
        }
        HID_Proc(); //执行HID进程
			  DelayMs(KBI_SCAN_PERIOD_IN_US/1000); //延时
    }
void mtk_send_command(char* command){
	uint8_t  checksum = 0; 
	int i; 

	/* Send what we have first, and then calculate checksums, etc while
	 its sending */ 
	UART_printf("%s", command);

	for(i=0; command[i] != '$'; i++)
		;

	/* Get to the character after the $ */ 
	i++;

	/* Calculate the checksum */ 
	for(; (command[i] != '*') && (command[i] != '\0'); i++)
		checksum ^= command[i];

	if(command[i] != '*')
		UART_putchar('*');

	UART_putchar(checksum);

	UART_printf("\r\n");
}
Esempio n. 4
0
int main(void)
{
	  //使用USB 必须CoreClock = 96M
    uint8_t FnKey = 0;
    uint8_t Keybuf[6] = {0,0,0,0,0,0};
    SystemClockSetup(ClockSource_EX50M,CoreClock_96M);
    DelayInit();
    LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED);
	  KBI_Init(KBI_PinLookup_CHK60EVB, kNumOfKEY);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
	  DisplayCPUInfo();
	     
	  UART_printf("Waitting for USB connect ...\r\n");
    USB_Init(); //初始化USB设备 
    USB_WaitDeviceEnumed(); //等待USB枚举成功
	  UART_printf("USB connected!\r\n");
	
    while(1) 
    {
			  KBI_Scan();
			  if(KBI_GetKeyState(kKEY1) == kKBI_SINGLE)
				{
            Keybuf[0] = 4;  //A 的USBHIDKeyCode
				    USB_HID_SetKeyBoard(FnKey,Keybuf);
				}
			  if(KBI_GetKeyState(kKEY2) == kKBI_SINGLE)
				{
            Keybuf[0] = 5;  //A 的USBHIDKeyCode
				    USB_HID_SetKeyBoard(FnKey,Keybuf);
				}
        HID_Proc(); //执行HID进程
			  DelayMs(KBI_SCAN_PERIOD_IN_US/1000); //延时
    }
}
Esempio n. 5
0
//DRIVE ENABLE/DISABLE
void drive_enable_handler(void) {
	uint32_t data;
	if (drive_state == DRIVE_DISABLED) {
		UART_printf("DRIVE ENABLED\n\r");
		drive_state = DRIVE_ENABLED;
		precharge_state = PRECHARGED;
		torque_vectoring_state = TQ_VEC_CENTRE;
		data = MLINK_PRECHARGE_CHARGE;
		//sys_state = SYS_MANUAL;
		mlink_send(0x00, MLINK_PRECHARGE_ADDR, (void*) &data);
		//steveLEDs.led[2]->state = ON;
		//steveLEDs.led[2]->flash = OFF;
		//steveLEDs.led[5]->state = ON;
		//steveLEDs.led[5]->flash = OFF;
                left_ws_state = LEFT_WS_ENABLE;
                right_ws_state = RIGHT_WS_ENABLE;
                steveLEDs.K5V[2]->flash = OFF;
                steveLEDs.K5V[2]->state = OFF;
                steveLEDs.K5V[3]->flash = OFF;
                steveLEDs.K5V[3]->state = OFF;
	} else {
		UART_printf("DRIVE_DISABLED\n\r");
		drive_state = DRIVE_DISABLED;
		precharge_state = DISCHARGED;
		data = MLINK_PRECHARGE_DISCHARGE;
		//sys_state = SYS_INIT;
		mlink_send(0x00, MLINK_PRECHARGE_ADDR, (void*) &data);
		//steveLEDs.led[2]->state = OFF;
		//steveLEDs.led[2]->flash = OFF;
		//steveLEDs.led[5]->state = OFF;
		//steveLEDs.led[5]->flash = OFF;
	}
}
Esempio n. 6
0
/* A simple print float implementation. Takes the decimal part, prints it
 * as an int. Subtracts decimal part, and multiplies by 10^digits_past_point
 * and prints that as the fraction part.
 * Warning: There is probably going to be rounding error in here.
 * NOTE: This function should only be used for debugging as it's VERY slow in use
 * it performs many double floating point ops per character printed.
 */
static unsigned UART_printfloat(char **out, double dbl, unsigned frac_len) {
	int len = 0;
	int frac = 0;
	int dec = (int)dbl;
	int i;
	int sign;
	int multiplier=1;

	if (dbl < 0.0)
		sign = -1;
	else
		sign = 1;

	len += UART_printf("%d", dec);

	for (i = 0; i < frac_len; i++){
		if(i==0){
			UART_printf(".");
		}
 
		frac=((int) (dbl*multiplier*sign))*10; //Stuff already printed to the left mi
		multiplier*=10;
		dec=((int) (dbl * multiplier*sign))-frac;
		
		UART_printf("%d", dec);
		
	}

	return len;
}
Esempio n. 7
0
//CRUISE ENABLE/DISABLE
void cruise_handler(void) {
	if (sys_state == SYS_CRUISE) {
		sys_state = SYS_MANUAL;
                left_ws_state = LEFT_WS_ENABLE;
                right_ws_state = RIGHT_WS_ENABLE;
		torque_vectoring_state = TQ_VEC_CENTRE;
		UART_printf("MANUAL \n\r");
		steveLEDs.K5V[2]->state = OFF;
		steveLEDs.K5V[2]->flash = OFF;
		steveLEDs.K5V[3]->state = OFF;
		steveLEDs.K5V[3]->flash = OFF;
		steveLEDs.K5V[6]->state = OFF;
		steveLEDs.K5V[6]->flash = OFF;
		steveLEDs.K5V[11]->state = OFF;
		steveLEDs.K5V[11]->flash = OFF;
	} else if ((sys_state == SYS_MANUAL) && (reverse_state == REVERSE_OFF)) {
		sys_state = SYS_CRUISE;
                left_ws_state = LEFT_WS_ENABLE;
                right_ws_state = RIGHT_WS_ENABLE;
		cruise_rpm = current_rpm;
		UART_printf("CRUISE \n\r");
		steveLEDs.K5V[2]->state = OFF;
		steveLEDs.K5V[2]->flash = OFF;
		steveLEDs.K5V[3]->state = OFF;
		steveLEDs.K5V[3]->flash = OFF;
		steveLEDs.K5V[6]->colour = GREEN;
		steveLEDs.K5V[6]->flash = ON;
		steveLEDs.K5V[11]->colour = GREEN;
		steveLEDs.K5V[11]->flash = ON;
	}
}
Esempio n. 8
0
//HAZARDS - BUT9
void hazards_handler(void) {
	uint32_t data;
	if (hazards_state == HAZARDS_OFF) {
		left_ind_state = LEFT_IND_OFF;
		right_ind_state = RIGHT_IND_OFF;
		hazards_state = HAZARDS_ON;
		UART_printf("HAZARDS_ON\n\r");
		data = MLINK_RIGHT_IND_ON;
		mlink_send(0x00, MLINK_RIGHT_IND_ADDR, (void*) &data);
		data = MLINK_LEFT_IND_ON;
		mlink_send(0x00, MLINK_LEFT_IND_ADDR, (void*) &data);
		steveLEDs.K5V[9]->colour = ORANGE;
		steveLEDs.K5V[9]->flash = ON;
		steveLEDs.K5V[2]->flash = OFF;
		steveLEDs.K5V[2]->state = OFF;
		steveLEDs.K5V[3]->flash = OFF;
		steveLEDs.K5V[3]->state = OFF;
	} else {
		hazards_state = HAZARDS_OFF;
		UART_printf("HAZARDS_OFF\n\r");
		data = MLINK_RIGHT_IND_OFF;
		mlink_send(0x00, MLINK_RIGHT_IND_ADDR, (void*) &data);
		data = MLINK_LEFT_IND_OFF;
		mlink_send(0x00, MLINK_LEFT_IND_ADDR, (void*) &data);
		steveLEDs.K5V[9]->flash = OFF;
		steveLEDs.K5V[9]->state = OFF;
	}
}
Esempio n. 9
0
int main(void)
{
    uint8_t last_sec;
    RTC_CalanderTypeDef RTC_Calander1;
    //初始化系统时钟 使用外部50M晶振 PLL倍频到100M
    SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
    DelayInit();
    LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
    UART_printf("RTC TEST\r\n");
    RTC_Init();
	
	  //可以设置时间
    RTC_Calander1.Hour = 10;
    RTC_Calander1.Minute = 57;
    RTC_Calander1.Second = 58;
    RTC_Calander1.Month = 10;
    RTC_Calander1.Date = 10;
    RTC_Calander1.Year = 2013;
    //RTC_SetCalander(&RTC_Calander1);
    NVIC_EnableIRQ(RTC_IRQn);
    while(1) 
		{
        RTC_GetCalander(&RTC_Calander1); //读取时间
        if(last_sec != RTC_Calander1.Second)
				{
            UART_printf("%d-%d-%d %d:%d:%d\r\n", RTC_Calander1.Year, RTC_Calander1.Month, RTC_Calander1.Date, RTC_Calander1.Hour, RTC_Calander1.Minute, RTC_Calander1.Second);
            last_sec = RTC_Calander1.Second;
				}	
		}
 }
Esempio n. 10
0
int main(void)
{
    uint8_t i;
    uint32_t cnt = 0;
    CAN_InitTypeDef CAN_InitStruct1;
    //使用CAN时 CoreClock 必须是96M
    SystemClockSetup(ClockSource_EX50M,CoreClock_96M);
    DelayInit();
    LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
    DisplayCPUInfo();
    //配置CAN初始化信息
    CAN_InitStruct1.CANxMap = CAN1_TX_PE24_RX_PE25;      //PE24 PE25引脚
    CAN_InitStruct1.CAN_BaudRateSelect = CAN_SPEED_125K; //125K 波特率
    CAN_InitStruct1.FilterEnable = ENABLE;              //不使用过滤ID功能
    CAN_Init(&CAN_InitStruct1);
	  
    //配置接收信息
    CAN_RxMsg1.MBIndex = CAN_MB1;                  //接收邮箱使用CAN_MB1
    CAN_RxMsg1.DLC = 8;                            //最多接收8个字节 一帧
    CAN_RxMsg1.Id = 7;                             //接收ID
    CAN_EnableReceiveMB(CAN1, &CAN_RxMsg1);        //使能接收邮箱
    //配置发送数据
    CAN_TxMsg1.Id = 10;                          //发送ID 10
    CAN_TxMsg1.DLC = 8;                          //每帧8字节
    CAN_TxMsg1.IDE = CAN_IDE_Standard;           //标准数据帧
    CAN_TxMsg1.RTR = CAN_RTR_Data;               //数据帧
    CAN_TxMsg1.MBIndex = CAN_MB2;                //使用邮箱0
		
    //写入测试数据  
    memcpy(CAN_TxMsg1.Data, "12345678", CAN_TxMsg1.DLC);
    while(1) 
    { 
        if (CAN_Receive(CAN1, &CAN_RxMsg1) == TRUE)
        {
					  //如果接收成功 打印接收数据
            UART_printf("ID:0x%x\r\n",CAN_RxMsg1.Id);
            UART_printf("Data: ");
            for(i = 0; i < CAN_RxMsg1.DLC; i++)
            {
                UART_printf("0x%x ", CAN_RxMsg1.Data[i]);
            }
            UART_printf("\r\n");
        }
        cnt++; 
        //发送
        if(cnt == 1000000)
        {
            CAN_Transmit(CAN1, &CAN_TxMsg1);
            cnt = 0;
        }				
    }
}
Esempio n. 11
0
int main(void)
{
    uint32_t counter;
    NRF2401_InitTypeDef NRF2401_InitStruct1;
    SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
    DelayInit();
    LED_Init(LED_PinLookup_CHKATOM, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
    DisplayCPUInfo();
    //配置2401引脚
    NRF2401_InitStruct1.CE_GPIO_Instance  = PTA_BASE;    //CE
    NRF2401_InitStruct1.CE_GPIO_Pin       = GPIO_Pin_13;
    NRF2401_InitStruct1.CS_GPIO_Instance  = PTA_BASE;    //CS
    NRF2401_InitStruct1.CS_GPIO_Pin       = GPIO_Pin_14;
    NRF2401_InitStruct1.IRQ_GPIO_Instance = PTA_BASE;    //IRQ
    NRF2401_InitStruct1.IRQ_GPIO_Pin      = GPIO_Pin_12;
    NRF2401_InitStruct1.DATA_SPI_CSMap = SPI0_PCS0_PA14; //SPI
    NRF2401_InitStruct1.DATA_SPI_DataMap = SPI0_SCK_PA15_SOUT_PA16_SIN_PA17;
    NRF2401_Init(&NRF2401_InitStruct1);
    if(NRF24L01_Check() != NRF_OK)
    {
        UART_printf("NRF2401 init failed\r\n");
        return 1;
    }
		
    //先设置为接收模式
    NRF2401_SetRXMode(); 
    while(1)
    {
        if(counter > 20000)
        {
            NRF2401_SetTXMode(); //设置为发送模式
            if(NRF2401_SendData("NRF2401 Test CHK60EVB!") == TX_OK)
            {
                UART_printf("Send Succ.\r\n");
            }
            else
            {
                UART_printf("Send Failed\r\n");
            }
            NRF2401_SetRXMode(); //设置为接收模式
            counter = 0;
        }
        counter++;
        if(NRF2401_RecData(NRF2401RXBuffer) == NRF_OK) //接收到了数据
        {
            UART_printf("DataRec:%s\r\n",NRF2401RXBuffer); //打印数据
        }
    }
}
Esempio n. 12
0
// write to scratchpad of a SINGLE sensor
void writeSP(int brdNo) {
    int i;
    int get[8];

    ow_reset();
    write_byte(0xCC);
    write_byte(0x4E);
    write_byte(brdNo);
    write_byte(0x0);
    write_byte(0x7F);
    while(read_bit() == 0);

    ow_reset();
    write_byte(0xCC);
    write_byte(0x48);
    uDelay(120);

    ow_reset();
    write_byte(0xCC);
    uDelay(120);
    write_byte(0xBE);
    for (i = 0 ; i < 9 ; i++){
        get[i] = read_byte();
    }

    if(get[2] != brdNo || get[3] != 0 || get[4] != 0x7F) {
        UART_printf("BAD CONFIGURATION?\n");
    }
}
Esempio n. 13
0
// FIND DEVICES
uint8_t FindDevices(void) {
    unsigned char m;

    // Begins when a presence is detected
    if(!ow_reset()) {
        // Begins when at least one part is found
        if(First()) {
            numROMs=0;

            do {
                numROMs++;
                for(m=0;m<8;m++) {
                    // Identifies ROM number on found device
                    FoundROM[numROMs][m]=ROM[m];
                }
#if OW_DEBUG
                UART_printf("\nSENSOR = %d ROM = %02X %02X %02X %02X %02X %02X %02X %02X\n", 
                    numROMs + 1, FoundROM[numROMs][0],FoundROM[numROMs][1],
                    FoundROM[numROMs][2],FoundROM[numROMs][3], FoundROM[numROMs][4],
                    FoundROM[numROMs][5],FoundROM[numROMs][6],FoundROM[numROMs][7]);
#endif
            } while (Next()&&(numROMs<=NO_ROMS)); //Continues until no additional devices are found
        }
    }
    
    return numROMs;
}
Esempio n. 14
0
int main(void)
{
    uint32_t LPTM_Value = 0;
    LPTM_InitTypeDef LPTM_InitStruct1;
    FTM_InitTypeDef FTM_InitStruct1;
    SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
    DelayInit();
    LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
	  DisplayCPUInfo();
	  //在PC3上产生 1KHz 占空比50%的 方波
    FTM_InitStruct1.Frequency = 1000;
    FTM_InitStruct1.FTMxMAP = FTM0_CH3_PC4;
    FTM_InitStruct1.FTM_Mode = FTM_Mode_EdgeAligned;
    FTM_InitStruct1.InitalDuty = 5000;
    FTM_Init(&FTM_InitStruct1);
    //开启PTC5上的脉冲计数引脚
    LPTM_InitStruct1.LPTMxMap = LPTM_CH2_PC5;
    LPTM_InitStruct1.LPTM_InitCompareValue = 200;          //在脉冲计数模式下无意义
    LPTM_InitStruct1.LPTM_Mode = LPTM_Mode_PC_FALLING;     //下降沿触发计数
    LPTM_Init(&LPTM_InitStruct1);
    while(1) 
    {
        //读取脉冲技术值
        LPTM_Value = LPTM_GetTimerCounterValue(LPTMR0);
        //清空技术值
        LPTM_ResetTimeCounter(LPTMR0);
        UART_printf("LPTMR:%dHz\r\n", LPTM_Value);
        DelayMs(1000);
    }
}
Esempio n. 15
0
void PIT_IRQHandler (void)
{
	ITStatus status;
	status = PIT_GetITStatus(PIT0, PIT_IT_TIF);
	if(status == SET)
	{
		UART_printf("PIT0_Enter\r\n");
		PIT_ClearITPendingBit(PIT0, PIT_IT_TIF);
	}
	status = PIT_GetITStatus(PIT1, PIT_IT_TIF);
	if(status == SET)
	{
		UART_printf("PIT1_Enter\r\n");
		PIT_ClearITPendingBit(PIT1, PIT_IT_TIF);
	}
}
Esempio n. 16
0
//开始任务
void AppStartTask(void *pdata)
{
  OS_CPU_SR cpu_sr=0;
	pdata = pdata; 		  
	msg_test=OSMboxCreate((void*)0);	//创建消息邮箱
	sem_test=OSSemCreate(0);		//创建信号量	
	OSStatInit();					//初始化统计任务.这里会延时1秒钟左右	
 	OS_ENTER_CRITICAL();			//进入临界区(无法被中断打断)    
    OSTaskCreate(AppLEDTask,(void *)0,
                &APP_LED_STK[TASK_STK_SIZE-1],
                APP_LED_TASK_PRIO); //建立LED1任务
    OSTaskCreate(AppMBOXTask,(void *)0,
                &APP_MBOX_STK[TASK_STK_SIZE-1],
                APP_MBOX_TASK_PRIO); //建立邮箱接收显示任务
    OSTaskCreate(AppSEMTask,(void *)0,
                &APP_SEM_STK[TASK_STK_SIZE-1],
                APP_SEM_TASK_PRIO); //建立信号量接收显示任务
    OSTaskCreate(AppWDOGTask,(void *)0,
                &APP_WDOG_STK[TASK_STK_SIZE-1],
                APP_WDOG_TASK_PRIO); //建立看门狗任务
    OSTaskCreate(AppPostTask,(void *)0,
                &APP_POST_STK[TASK_STK_SIZE-1],
                APP_POST_TASK_PRIO); //建立邮箱,信号量投递任务
  UART_printf("uCOSII MBox&Sem DemoTest\r\n");
 	OSTaskSuspend(APP_START_TASK_PRIO);	//挂起起始任务.
	OS_EXIT_CRITICAL();				//退出临界区(可以被中断打断)
}
Esempio n. 17
0
//---------------------
// Get Line Input
//---------------------
static void get_line (uint8_t *buff, uint8_t len)
{
    uint8_t c, i;

    i = 0;
    for (;;) {
        //c = rcvr();
        c = (BYTE) UARTReceive_Byte();
        UART_printf("%c", c);
        if (c == '\r') break;
        if ((c == '\b') && i) i--;
        if ((c >= ' ') && (i < len - 1))
                buff[i++] = c;
    }
    buff[i] = 0;
    UART_printf("\n\r");
}
Esempio n. 18
0
void ADC0_IRQHandler(void)
{
	ADC_ClearITPendingBit(ADC0,A,ADC_IT_AI);
	UART_printf("!!!\r\n");
	
	
	
}
Esempio n. 19
0
int main(void)
{
    SD_InitTypeDef SD_InitStruct1;
    SystemClockSetup(ClockSource_EX50M,CoreClock_100M);
    DelayInit();
    LED_Init(LED_PinLookup_CHK60EVB, kNumOfLED);
    UART_DebugPortInit(UART4_RX_C14_TX_C15, 115200);
	  DisplayCPUInfo();
	  UART_printf("Please Insert Card\r\n");
    SD_InitStruct1.SD_BaudRate = 2000000;
    //等待SD卡初始化成功
    while(SD_Init(&SD_InitStruct1) != ESDHC_OK);
    UART_printf("SD Size:%dMB\r\n", SD_InitStruct1.SD_Size);
    while(1)
    {
		
    }
}
Esempio n. 20
0
void ADC_Test(void)
{
    uint8_t i = 0;
    uint16_t res = 0;
    ADC_InitTypeDef ADC_InitStruct1;
    UART_printf("Begin ADC test\r\n");
    ADC_InitStruct1.ADCxMap = ADC0_SE3A_PE22;
    ADC_InitStruct1.ADC_Precision = ADC_PRECISION_12BIT;
    ADC_InitStruct1.ADC_TriggerSelect = ADC_TRIGGER_SW;
    ADC_Init(&ADC_InitStruct1);
    while(i<10)
    {
        res = ADC_GetConversionValue(ADC0_SE3A_PE22);
        UART_printf("ADRest:%d\r\n",res);
        DelayMs(200);
        i++;
    }
    UART_printf("ADC test complete\r\n");
}
Esempio n. 21
0
void AppLED0Task(void *pdata)
{
  pdata = pdata; //防止编译器出错 无实际意义
	while(1)
	{
		UART_printf("AppLED 2 Task:Process\r\n");
		LED_Toggle(kLED2);
		OSTimeDlyHMSM(0, 0, 0, 300);
	}
}
Esempio n. 22
0
//串口通信
void SendImage(void)
{
	unsigned char i;
	char buf[5];
	    for (i = 0; i < COL; i++) {
//           if(IMAGE[i] == 1) 
//              UART_SendData((UART0_Type *)UART0,' ');
//           else
//              UART_SendData((UART0_Type *)UART0,'*');

					if(IMAGE[i] > THRESHOLD)
					sprintf(buf, " ");
				else
					sprintf(buf, "%02X ", IMAGE[i]);
				//sprintf(buf, "%02X ", IMAGE[i]);
				UART_printf(buf);
			//UART_SendData((UART0_Type *)UART0,'a' + (IMAGE[i] >> 4));
       }
      UART_printf("\n");
}
Esempio n. 23
0
/*------------------------------------------------------------------------------


 ------------------------------------------------------------------------------*/
int Protocol_function(void)
{
  int s;
  if (UART_check_sym() == 1)
  {
    s = UART_wait_sym(1);

    switch (s)
    {
    case '1':
      Gen_default_func1();
      UART_printf("Selected func1.\r\n");
      return 1;
    case '2':
      Gen_default_func2();
      UART_printf("Selected func2.\r\n");
      return 1;
    }
  }
  return 0;
}
Esempio n. 24
0
void MAG3110_Test(void)
{
    uint8_t ret;
    MAG3110_XYZDataTypeDef MAG3110_XYZDataStruct1;
    ret = MAG3110_Init();
    if(ret == TRUE)
    {
        UART_printf("MAG3110 Succ\r\n");
    }
    else
    {
        UART_printf("MAG3110 Err\r\n");
    }
    ret = 0;
    while(ret < 30)
        if(MAG3110_GetXYZData(&MAG3110_XYZDataStruct1) == TRUE)
        {
            UART_printf("x:%d\r\n",abs(MAG3110_XYZDataStruct1.m_XData));
            ret++;
        }
}
Esempio n. 25
0
//信号量测试,显示函数
void AppSEMTask(void *pdata)
{
	uint8_t err;
	uint16_t TaskCtr=0;
  pdata=pdata; //防止编译器出错 无实际意义
	while(1)
	{
		OSSemPend(sem_test,0,&err); //等待信号量
		TaskCtr++;
		UART_printf("Received Sem:%d  \r\n", TaskCtr);
	}
}
Esempio n. 26
0
//SPIFLASH 质量测试函数
static void SPIFLASH_Test(void)
{
    uint32_t i;
    uint8_t test_buffer[SPIFLASH_TEST_SIZE];
    SPI_FLASH_Read(test_buffer, SPIFLASH_TEST_ADDR, sizeof(test_buffer));
    UART_printf("Read data form 0x%x:\r\n", SPIFLASH_TEST_ADDR);
    for(i = 0; i < SPIFLASH_TEST_SIZE; i++)
    {
        UART_printf("[%x]:0x%x ", i, test_buffer[i]);
    }
		//写入测试数据
		for(i = 0; i < SPIFLASH_TEST_SIZE; i++)
		{
        test_buffer[i] = i;
		}
		UART_printf("\r\n");
		//写入数据
		SPI_FLASH_Write(test_buffer, SPIFLASH_TEST_ADDR, sizeof(test_buffer));
		UART_printf("Write data completed\r\n");
		memset(test_buffer, 0, sizeof(test_buffer));
		SPI_FLASH_Read(test_buffer, SPIFLASH_TEST_ADDR, sizeof(test_buffer));
    UART_printf("Read data form 0x%x:\r\n", SPIFLASH_TEST_ADDR);
		//打印数据
    for(i = 0; i < SPIFLASH_TEST_SIZE; i++)
    {
        UART_printf("[%x]:0x%x ", i, test_buffer[i]);
    }
}
Esempio n. 27
0
//REVERSE - BUT1
void reverse_handler(void) {
	uint32_t i;
	if (reverse_state == REVERSE_OFF && sys_state == SYS_MANUAL) {
		reverse_state = REVERSE_ON;
		UART_printf("REVERSE_ON\n\r");
		/*for(i=0;i<8;i++) {
			steveLEDs.led[i]->flash = ON;
		}*/
		steveLEDs.K5V[1]->colour = ORANGE;
		steveLEDs.K5V[1]->flash = ON;
	} else {
		reverse_state = REVERSE_OFF;
		UART_printf("REVERSE_OFF\n\r");
		/*
		for(i=0;i<8;i++) {
			steveLEDs.led[i]->flash = OFF;
			steveLEDs.led[i]->state = OFF;
		}*/
		steveLEDs.K5V[1]->flash = OFF;
		steveLEDs.K5V[1]->state = OFF;
	}
}
Esempio n. 28
0
//邮箱接收函数任务
void AppMBOXTask(void *pdata)
{
	uint8_t key;
	uint8_t err;
	uint16_t TaskCtr=0;
  pdata=pdata; //防止编译器出错 无实际意义
	while(1)
	{
		key=(uint32_t)OSMboxPend(msg_test,0,&err);  //等待消息邮箱
		TaskCtr++;
      UART_printf("Received MBox:%d \r\n", key);
	}
}
Esempio n. 29
0
void SPIFLASH_Test(void)
{
    uint8_t ret;
    ret = SPIFLASH_Init();
    if(ret == TRUE)
    {
        UART_printf("spiflash init succ.\r\n");
        UART_printf("begin self test\r\n");
        ret = SPI_FLASH_SelfTest();
        if(ret == TRUE)
        {
            UART_printf("spiflash test succ\r\n");
        }
        else
        {
            UART_printf("spiflash test err\r\n");
        }
    }
    else
    {
        UART_printf("spiflash init err\r\n");
    }
}
Esempio n. 30
0
//邮箱投递,信号量投递任务
void AppPostTask(void *pdata)
{
	uint8_t key='A';
	uint16_t TaskCtr=0;
	while(1)
	{
		key++;
		TaskCtr++;
		if(key > 'Z') key='A';            //改变邮箱投递的数据
		OSMboxPost(msg_test,(void*)key);  //发送消息
		OSSemPost(sem_test);              //发送信号量

		UART_printf("App Post Message&Sem:%d times\r\n", TaskCtr);
		OSTimeDlyHMSM(0, 0, 0, 300);
	}
}