static void led_thread_entry(void* parameter) { unsigned int count=0; rt_device_t led_dev=rt_device_find("led"); rt_uint8_t led_value=0; while (1) { /* led1 on */ #ifndef RT_USING_FINSH rt_kprintf("led on, count : %d\r\n",count); #endif count++; led_value=1; led_dev->write(led_dev,count%4,&led_value,1); rt_thread_delay( RT_TICK_PER_SECOND/2 ); /* sleep 0.5 second and switch to other thread */ /* led1 off */ #ifndef RT_USING_FINSH rt_kprintf("led off\r\n"); #endif led_value=0; led_dev->write(led_dev,count%4,&led_value,1); rt_thread_delay( RT_TICK_PER_SECOND/2 ); } }
static void rt_thread_entry_led1(void* parameter) { // GPIO_InitTypeDef GPIO_InitStructure; /* GPIOD Periph clock enable */ // RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); /* Configure PD12, PD13, PD14 and PD15 in output pushpull mode */ // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; // GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; // GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; // GPIO_Init(GPIOF, &GPIO_InitStructure); while(1) { // GPIO_SetBits(GPIOF, GPIO_Pin_6); // print_temp(); rt_thread_delay(20); // GPIO_ResetBits(GPIOF, GPIO_Pin_6); rt_thread_delay(20); } }
static void led_thread_entry(void* parameter) { /* LED : PB2 BOOT1 config. */ { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; /* output setting */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOB, &GPIO_InitStructure); } /* sys led blink. */ while(1) { /* turn on led 20ms. */ LED_SYS_ON(); rt_thread_delay(RT_TICK_PER_SECOND/50); /* turn off led 1s. */ LED_SYS_OFF(); rt_thread_delay(RT_TICK_PER_SECOND); } }
static void thread_entry(void* parameter) { rt_tick_t tick; rt_kprintf("thread inited ok\n"); tick = rt_tick_get(); rt_kprintf("thread delay 10 tick\n"); rt_thread_delay(10); if (rt_tick_get() - tick > 10) { tc_done(TC_STAT_FAILED); return; } tick = rt_tick_get(); rt_kprintf("thread delay 15 tick\n"); rt_thread_delay(15); if (rt_tick_get() - tick > 15) { tc_done(TC_STAT_FAILED); return; } rt_kprintf("thread exit\n"); tc_done(TC_STAT_PASSED); }
void reset_cs() { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin_4); //SPI_SSOutputCmd(SPI1, ENABLE); //while(1); //SPI_NSSInternalSoftwareConfig(SPI1,SPI_NSSInternalSoft_Set); rt_thread_delay(1); GPIO_ResetBits(GPIOA,GPIO_Pin_4); //SPI_SSOutputCmd(SPI1, DISABLE); //SPI_NSSInternalSoftwareConfig(SPI1,SPI_NSSInternalSoft_Reset); rt_thread_delay(1); GPIO_SetBits(GPIOA,GPIO_Pin_4); //SPI_SSOutputCmd(SPI1, ENABLE); // SPI_NSSInternalSoftwareConfig(SPI1,SPI_NSSInternalSoft_Reset); rt_thread_delay(2); GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_0); GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOA, &GPIO_InitStructure); return; }
void sonar_thread_entry(void* parameter) { rt_kprintf("start sonar\n"); while(1) { GPIO_SetBits(GPIOE,GPIO_Pin_7); rt_thread_delay(RT_TICK_PER_SECOND*10/1000); GPIO_ResetBits(GPIOE,GPIO_Pin_7); rt_thread_delay(RT_TICK_PER_SECOND*50/1000); sonar_h=Moving_Median(PWM8_Time/58.0f*ahrs.g_z,sonar_avr,SAMPLE_COUNT); ahrs.height_v=HV_A*(ahrs.height_v+ahrs.height_acc*0.06f)+(1.0f-HV_A)*((sonar_h-ahrs.height)/0.06f); ahrs.height=sonar_h; h=(u16)sonar_h; sonar_state=sonar_h>3.0f&&sonar_h<150.0f; ahrs_state.sonar=!sonar_state; rt_event_send(&ahrs_event,AHRS_EVENT_SONAR); } }
//GPIO_E1 void A10_PWR_CTL(int op) { int i; if(op==0) //Short PWREN to power up system. { PWRKEY_OFF(); PWRKEY_ON(); rt_thread_delay(RT_TICK_PER_SECOND*2); PWRKEY_OFF(); } else if(op==1) // Long long PWREN to shutdown system { PWRKEY_OFF(); PWRKEY_ON(); rt_thread_delay(RT_TICK_PER_SECOND*10); PWRKEY_OFF(); } else if(op==2) // short to suspen/resume system { PWRKEY_OFF(); PWRKEY_ON(); rt_thread_delay(RT_TICK_PER_SECOND/2); PWRKEY_OFF(); } return ; }
/* 线程2的入口函数 */ static void thread2_entry(void* parameter) { /* 线程2拥有较高的优先级,以抢占线程1而获得执行 */ /* 线程2启动后先睡眠10个OS Tick */ rt_thread_delay(10); /* * 线程2唤醒后直接删除线程1,删除线程1后,线程1自动脱离就绪线程 * 队列 */ rt_thread_delete(tid1); tid1 = RT_NULL; /* * 线程2继续休眠10个OS Tick然后退出,线程2休眠后应切换到idle线程 * idle线程将执行真正的线程1控制块和线程栈的删除 */ rt_thread_delay(10); /* * 线程2运行结束后也将自动被删除(线程控制块和线程栈依然在idle线 * 程中释放) */ tid2 = RT_NULL; }
void msc_thread_entry(void *parameter) { extern void player_ui_freeze(void); unsigned long test_unit_ready_start = rt_tick_get(); test_unit_ready_last = test_unit_ready_start; /* wait connection */ while( test_unit_ready_last == test_unit_ready_start ) { rt_thread_delay( RT_TICK_PER_SECOND ); } /* freeze player UI */ player_ui_freeze(); /* wait remove */ while(1) { rt_thread_delay( RT_TICK_PER_SECOND/2 ); if( rt_tick_get() - test_unit_ready_last > RT_TICK_PER_SECOND*2 ) { // rt_kprintf("\r\nCable removed!\r\nSystemReset\r\n\r\n"); // NVIC_SystemReset(); } } }
static void led1_thread_entry(void* parameter) { /*在LED1线程中初始化LED的GPIO配置*/ LED_GPIO_Config(); while(1) { //rt_kprintf ( "\r\n LED1 is going!!!\r\n"); LED1(ON);//点亮LED1 rt_thread_delay(100);//调用RTT的API将当前线程挂起200ticks,也就是1sec LED1(OFF);//关闭LED1 rt_thread_delay(100); if(bMp3Play == 0) sys_wake_count++; if(sys_wake_count==sys_default_count) { sys_wake_count=0; if(sys_wake) { sys_wake=0; rt_kprintf("系统进入休眠状态,如需使用请唤醒!\r\n"); rt_mb_send(&mb,(rt_uint32_t)sys_down_mp3);//发送邮件 } } } }
/** * This function will rest hub port, it is invoked when sub device attached to the hub port. * * @param intf the interface instance. * @param port the hub port. * * @return the error code, RT_EOK on successfully. */ rt_err_t rt_usbh_hub_reset_port(uhub_t hub, rt_uint16_t port) { rt_err_t ret; rt_uint32_t pstatus; /* parameter check */ RT_ASSERT(hub != RT_NULL); rt_thread_delay(50); /* reset hub port */ ret = rt_usbh_hub_set_port_feature(hub, port, PORT_FEAT_RESET); if(ret != RT_EOK) return ret; while(1) { ret = rt_usbh_hub_get_port_status(hub, port, (rt_uint8_t*)&pstatus); if(!(pstatus & PORT_PRS)) break; } /* clear port reset feature */ ret = rt_usbh_hub_clear_port_feature(hub, port, PORT_FEAT_C_RESET); if(ret != RT_EOK) return ret; rt_thread_delay(50); return RT_EOK; }
/** * @brief USB_OTG_BSP_mDelay * This function provides delay time in milli sec * @param msec : Value of delay required in milli sec * @retval None */ void USB_OTG_BSP_mDelay (const uint32_t msec) { if(msec >= 10) rt_thread_delay(msec / 10); else rt_thread_delay(msec / 1); }
void rt_transfer_thread_entry(void *parameter) { // rt_uint16_t ms_20=0,ms_100=0,ms_1000=0; // char buff[33]; T_RC_Status data; // T_RC_Voltage voltage; T_RC_Sensor Sensor; // rt_uint32_t _temp[3]; // rt_uint8_t i; rt_thread_delay(1000); for(;;) { //NRF24_Check_Event(); /*Pms_20++; if(ms_20==100) { ms_20=0; for(i=0;i<3;i++) { _temp[i]=read_battert_adc_value(); } voltage.Voltage1=(float)_temp[0]/4095.0f*3.3f*2; voltage.Voltage2=(float)_temp[1]/4095.0f*3.3f*2; voltage.Voltage3=(float)_temp[2]/4095.0f*3.3f*2; Data_Send_Voltage(&voltage); }*/ #if 1 data.ANGLE.rol=angleActual.rol; data.ANGLE.pit=angleActual.pit; data.ANGLE.yaw=angleActual.yaw; data.ALT_CSB=1234; data.ALT_PRS=1234; data.ARMED=0; Data_Send_Status(&data); Sensor.ACC.X=accelMpu.x; Sensor.ACC.Y=accelMpu.y; Sensor.ACC.Z=accelMpu.z; Sensor.GYR.X=gyroMpu.x; Sensor.GYR.Y=gyroMpu.y; Sensor.GYR.Z=gyroMpu.z; Sensor.MAG.X=magMpu.x; Sensor.MAG.Y=magMpu.y; Sensor.MAG.Z=magMpu.z; Sensor.MAG.X=magCorrect.x; Sensor.MAG.Y=magCorrect.y; Sensor.MAG.Z=magCorrect.z; Data_Send_Senser(&Sensor); #endif rt_thread_delay(20); } }
void lcd_test(void) { lcd_clear(0xf800); rt_thread_delay(200); lcd_clear(0x07e0); rt_thread_delay(200); lcd_clear(0x001f); rt_thread_delay(200); }
static void worker_thread_entry(void* parameter) { rt_thread_delay(5); for(worker_count = 0; worker_count < 5; worker_count++) { rt_kprintf("worker:count: %d\n", worker_count); rt_thread_delay(5); } }
static void worker_thread_entry(void* parameter) { rt_thread_delay(5); for(worker_count = 0; worker_count < 10; worker_count++) { rt_kprintf("worker: count: %d\n", worker_count); } rt_thread_delay(RT_TICK_PER_SECOND); }
static void worker_thread_entry(void* parameter) { rt_thread_delay(10); while (1) { rt_sem_release(sem); rt_thread_delay(5); } }
static void rt_init_thread_entry(void* parameter) { rt_thread_t system_thread; rt_uint8_t buf[256]; /* Initialization RT-Thread Components */ #ifdef RT_USING_COMPONENTS_INIT rt_components_init(); #endif /* Set finsh device */ #ifdef RT_USING_FINSH finsh_set_device(RT_CONSOLE_DEVICE_NAME); #endif /* RT_USING_FINSH */ rt_hw_led1_off(); //cmx865a_init(); unsigned int count=1000; rt_memset(buf,'\0',256); rt_hw_led_init(); // rt_kprintf("led on, count : %d\r\n",count); //rt_sprintf(buf,"%s","- RT - Thread Operating System"); // ST7585_Write_String(0,5,"- RT - "); //ST7585_Write_String(0,4,"Thread Operating System"); // Draw_bat(3); //b(0,1); r(0); while (1) { /* led1 on */ #ifdef RT_USING_FINSH rt_kprintf("led on , count : %d\r\n",count); #endif // rt_sprintf(buf,"led on , count : %d",count); // ST7585_Write_String(0,5,buf); //test_cmx865a(); count++; rt_hw_led1_off(); rt_thread_delay( RT_TICK_PER_SECOND/2 ); /* sleep 0.5 second and switch to other thread */ /* led1 off */ #ifdef RT_USING_FINSH rt_kprintf("led off\r\n"); #endif // rt_sprintf(buf,"led off, count : %d",count); // ST7585_Write_String(0,5,buf); rt_hw_led1_on(); rt_thread_delay( RT_TICK_PER_SECOND/2 ); } }
static void thread1_entry(void* parameter) { while(1) { Led_Control(0,1); rt_thread_delay(RT_TICK_PER_SECOND); Led_Control(0,0); rt_thread_delay(RT_TICK_PER_SECOND); } }
void rt_vam_thread_entry(void *parameter) { vam_stastatus_t location ; rt_thread_delay(500); timer_start(); while(1){ _vsm_get_local_status(&location) ; rt_thread_delay(10); } }
static void led_thread_entry(void *parameter) { while (1) { led_on(); rt_thread_delay(RT_TICK_PER_SECOND); led_off(); rt_thread_delay(RT_TICK_PER_SECOND); } }
void osd_test(void) { u8 t; OLED_Init(); //3?¨º??¡¥OLED OLED_Clear() ; t=' '; OLED_ShowCHinese(0,0,0);//?D OLED_ShowCHinese(18,0,1);//?¡ã OLED_ShowCHinese(36,0,2);//?¡ã OLED_ShowCHinese(54,0,3);//¦Ì? OLED_ShowCHinese(72,0,4);//¡Á¨® OLED_ShowCHinese(90,0,5);//?? OLED_ShowCHinese(108,0,6);//?? while(1) { OLED_Clear(); OLED_ShowCHinese(0,0,0);//?D OLED_ShowCHinese(18,0,1);//?¡ã OLED_ShowCHinese(36,0,2);//?¡ã OLED_ShowCHinese(54,0,3);//¦Ì? OLED_ShowCHinese(72,0,4);//¡Á¨® OLED_ShowCHinese(90,0,5);//?? OLED_ShowCHinese(108,0,6);//?? OLED_ShowString(6,3,"0.96' OLED TEST",16); OLED_ShowString(6,4,"0.96' OLED TEST",16); OLED_ShowString(0,5,"0.96' OLED TEST",16); OLED_ShowString(0,6,"0.96' OLED TEST",16); OLED_ShowString(1,7,"0.96' OLED TEST",16); OLED_ShowString(6,3,"0.96' OLED TEST",16); //OLED_ShowString(8,2,"ZHONGJINGYUAN"); // OLED_ShowString(20,4,"2014/05/01"); OLED_ShowString(0,6,"ASCII:",16); OLED_ShowString(63,6,"CODE:",16); OLED_ShowChar(48,6,t,16);//??¨º?ASCII¡Á?¡¤? t++; if(t>'~')t=' '; OLED_ShowNum(103,6,t,3,16);//??¨º?ASCII¡Á?¡¤?¦Ì????¦Ì rt_thread_delay(1000*3); OLED_DrawBMP(0,0,128,8,BMP1); //¨ª?????¨º?(¨ª?????¨º?¨¦¡Â¨®?¡ê?¨¦¨²3¨¦¦Ì?¡Á?¡À¨ª??¡ä¨®¡ê??¨¢??¨®????¨¤????¡ê?FLASH????8K¨°???¨¦¡Â¨®?) rt_thread_delay(1000*3); OLED_DrawBMP(0,0,128,8,BMP1); rt_thread_delay(1000*3); } }
void rt_led_thread_entry(void* parameter) { while(1) { /* light on leds for one second */ rt_thread_delay(100); /* light off leds for one second */ rt_thread_delay(100); } }
void thread_led2_entry(void* parameter) { volatile unsigned int i; IO1DIR |= LED2; while(1) { IO1CLR = LED2; rt_thread_delay( RT_TICK_PER_SECOND/2 ); /* delay 0.5s */ IO1SET = LED2; rt_thread_delay( RT_TICK_PER_SECOND/2 ); } }
static void rt_thread_entry_led(void* parameter) { while (1) { /* led off */ led_off(); rt_thread_delay(20); /* sleep 1 second and switch to other thread */ /* led on */ led_on(); rt_thread_delay(40); } }
void rt_task4_thread_entry(void* parameter) { extern void start_transmit(void); extern void stop_transmit(void); extern uint8_t check_parameter(void); // extern uint8_t self_check(void); // extern void cpu_usage_init(); rt_uint32_t ev; if((GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_3) == 0)) { coil.usRegCoilBuf |= M(0); } else { coil.usRegCoilBuf &= ~M(0); } rt_event_init(&key_event, "key_event", RT_IPC_FLAG_FIFO ); while(1) { if( rt_event_recv( &key_event, FOOT_PUPD | KEY_PUPD, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, RT_WAITING_FOREVER, &ev ) == RT_EOK ) { rt_thread_delay(6); if( (ev & FOOT_PUPD) && (coil.usRegCoilBuf & M(0)) &&(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0)&& \ (check_parameter()) && (coil.usRegCoilBuf & M(7))) { start_transmit(); } else { stop_transmit(); } if(ev & KEY_PUPD) { if((GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_3) == 0)) { coil.usRegCoilBuf |= M(0); } else { coil.usRegCoilBuf &= ~M(0); } } } rt_event_recv( &key_event, FOOT_PUPD | KEY_PUPD, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR, 2, &ev ); rt_thread_delay(20); } }
//log 主程序 void thread_log(void) { //wating for the first update of the system times rt_thread_delay(1000); log_init(); while(1) { rt_thread_delay(5); } }
void reset_cs() { cs(0); clk(0); cs(1); rt_thread_delay(10); cs(1); rt_thread_delay(1); cs(0); rt_thread_delay(1); cs(1); rt_thread_delay(10); }
static void rt_thread_entry_led1(void* parameter) { int n = 0; // int stage=0; rt_uint32_t offset=0; // int i=2000; // int delta = 50; rt_hw_led_init(); dac_dma(); /*SIM->SCGC2 |= SIM_SCGC2_DAC0_MASK; DAC0->C0 |= DAC_C0_DACEN_MASK |DAC_C0_DACRFS_MASK |DAC_C0_DACTRGSEL_MASK; DAC0->DAT[0].DATL = stage & 0xFF; DAC0->DAT[0].DATH = stage >> 8; DAC0->C0 |= DAC_C0_DACSWTRG_MASK; */ while (1) { //rt_kprintf("LED\t%d\tis shining\r\n",n); /*if(i==2000) delta = 50; else if(i==4000) delta = -50; i += delta; */ rt_hw_led_on(n); rt_thread_delay(RT_TICK_PER_SECOND/2); /*rt_kprintf("i is %d\r\n",i); DAC0->DAT[0].DATL = i & 0xFF; DAC0->DAT[0].DATH = i >> 8; DAC0->C0 |= DAC_C0_DACSWTRG_MASK;*/ if(!Mem_Check(offset)) //rt_kprintf("offset %x test ok\r\n",offset); //else rt_kprintf("offset %x test failed\r\n",offset); offset++; if(offset==0x10000) offset=0; rt_hw_led_off(n); rt_thread_delay(RT_TICK_PER_SECOND/2); n++; //stage=stage+100000; if (n == (LED_MAX+1)) n = 0; } }
/* 线程2入口 */ static void thread2_entry(void* parameter) { /* 延时10个OS Tick */ rt_thread_delay(10); /* 挂起线程1 */ rt_thread_suspend(tid1); /* 延时10个OS Tick */ rt_thread_delay(10); /* 线程2自动退出 */ tid2 = RT_NULL; }