【花雕学编程】Arduino动手做(223)---日本(Nidec)二相四线 KV4234 步进电机 步进角1.8 度 5MM圆轴2

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验二百二十三:日本(Nidec)二相四线 KV4234 步进电机 步进角1.8 度 5MM圆轴

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

电机规格 :42 步进电机
电机厚度 :33.3 MM
电机轴径 :5 MM圆轴(没有扁位)
输出轴长度 :22 MM
线长 :大约 140 MM(线是送的)
电机重量 :224 克
电机内阻 :1.5 欧
5V 短路电流 :2.7 A

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百二十三:日本(Nidec)二相四线 KV4234 步进电机 步进角1.8 度 5MM圆轴
项目实验之二:控制步进电机正向与反向转动

实验开源代码

/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百二十三:日本(Nidec)二相四线 KV4234 步进电机 步进角1.8 度 5MM圆轴
  项目实验之二:控制步进电机正向与反向转动
*/


//必须要安装 mstimer2的库, 否则编译报错!!!!!
//如果需要用其他定时器驱动, 这里可以换成对应定时器的头文件
#include<MsTimer2.h>

#define t_bit unsigned char
#define t_bool unsigned char
#define t_uint8 unsigned char
#define t_int8 signed char
#define t_uint16 unsigned short
#define t_int16 signed short
#define t_uint32 unsigned long
#define t_int32 signed long
#define t_fix signed long


void cx_NULL_E(void);
void cx_SYS_NullFunc(void);
t_int8 cx__patch_get_char_width_real( t_int32 tmp_ch );
t_uint8 cx___sysbox__0_sys_iointerface_get_uint8( t_uint32 tmp_addr );
void cx___sysbox__0_sys_iointerface_set_uint8( t_uint32 tmp_addr, t_uint8 tmp_d );
t_uint16 cx___sysbox__0_sys_iointerface_get_uint16( t_uint32 tmp_addr );
void cx___sysbox__0_sys_iointerface_set_uint16( t_uint32 tmp_addr, t_uint16 tmp_d );
t_uint32 cx___sysbox__0_sys_iointerface_get_uint32( t_uint32 tmp_addr );
void cx___sysbox__0_sys_iointerface_set_uint32( t_uint32 tmp_addr, t_uint32 tmp_d );
void cx_bujindianjiqudongqi_driver_OS_init(void);
void cx_bujindianjiqudongqi_driver_OS_thread(void);
void cx_bujindianjiqudongqi_driver_DeviceInit(void);
void cx_bujindianjiqudongqi_driver_OS_run100us(void);
void cx_bujindianjiqudongqi_driver_set_speed( t_int32 tmp_s );
void cx_bujindianjiqudongqi_driver_run_right(void);
void cx_bujindianjiqudongqi_driver_run_left(void);
void cx_bujindianjiqudongqi_driver_run_right_t( t_int32 tmp_t );
void cx_bujindianjiqudongqi_driver_run_left_t( t_int32 tmp_t );
void cx_bujindianjiqudongqi_driver_run_to( t_int32 tmp_t );
void cx_bujindianjiqudongqi_driver_stop(void);
void cx_bujindianjiqudongqi_driver_short_stop(void);
t_bool cx_bujindianjiqudongqi_driver_Running(void);
t_bool cx_bujindianjiqudongqi_driver_Stoped(void);
void cx_bujindianjiqudongqi_driver_power_on(void);
void cx_bujindianjiqudongqi_driver_power_off(void);
void cx_bujindianjiqudongqi_driver_accel_on(void);
void cx_bujindianjiqudongqi_driver_accel_off(void);
void cx_yanshiqi_driver_OS_init(void);
void cx_yanshiqi_driver_OS_thread(void);
void cx_yanshiqi_driver_DelayMillisecond( t_int32 tmp_t );
void cx_yanshiqi_driver_DelaySecond( t_fix tmp_t );
void cx_yanshiqi_driver_DelayMinute( t_int32 tmp_t );
void cx_yanshiqi_driver_DelayHour( t_int32 tmp_t );
void cx_yanshiqi_driver_DelayDay( t_int32 tmp_t );
void cx_yanshiqi_driver_Stop(void);
void cx_yanshiqi_driver_StopCurrent(void);
void cx_yanshiqi_driver_StopAll(void);
void cx_kongzhiqiUNO_driver_OS_init(void);
void cx_kongzhiqiUNO_driver_OS_thread(void);
void cx_kongzhiqiUNO_driver_OS_run(void);
void cx_kongzhiqiUNO_driver_LightOpen(void);
void cx_kongzhiqiUNO_driver_LightClose(void);
void cx_kongzhiqiUNO_driver_LightSwap(void);
void cx_kongzhiqiUNO_driver_LightFlashTimes( t_int32 tmp_n );
void cx_kongzhiqiUNO_driver_LightFlash(void);
void cx_kongzhiqiUNO_driver_delay(void);
void cx_kongzhiqiUNO_pinMode( t_int32 tmp_p, t_int32 tmp_m );
void cx_kongzhiqiUNO_digitalWrite( t_int32 tmp_p, t_int32 tmp_d );
t_int32 cx_kongzhiqiUNO_digitalRead( t_int32 tmp_p );
void cx_OS0_REMO_ModuleWrite( t_int32 tmp_d, t_int32 tmp_d1 );
t_int32 cx_OS0_REMO_ModuleRead( t_int32 tmp_d );
void cx_OS0_Delayer_Init(void);
void cx_OS0_Delayer_Run(void);
t_bool cx_OS0_Delayer_Running(void);
t_bool cx_OS0_Delayer_TarRunning( t_uint8 tmp_i );
void cx_OS0_Delayer_Stop( t_uint16 tmp_cid );
void cx_OS0_Delayer_StopAll(void);
void cx_OS0_Delayer_Wait( t_int32 tmp_t );
t_int32 cx_OS0_GetSysTick(void);
t_uint32 cx_OS0_GetSysTickU(void);
void cx_OS0_OS_init(void);
void cx_OS0_CloseWatchdog(void);
void cx_OS0_MACRO_TIMER_ON(void);
void cx_OS0_MACRO_TIMER_OFF(void);
void cx_OS0_TimerInit(void);
void cx_OS0_OS_run(void);
void cx_OS0_DriverInit(void);
void cx_OS0_CreateDriver( void (*tmp_Handle)(void), t_uint8 tmp_MaxTick );
void cx_OS0_CreateDriver100us( void (*tmp_Handle)(void) );
void cx_OS0_RunDriverList(void);
void cx_OS0_RunDriver100usList(void);
void cx_OS0_D_CALL( void (*tmp_Handle)(void) );
void cx_OS0_Start(void);
void cx_OS0_Schedule(void);
void cx_sys_delayer_delay_n_10us( t_uint8 tmp_t );
void cx_sys_delayer_delay_n_1us( t_uint8 tmp_t );
void cx_sys_delayer_delay_ms( t_int32 tmp_t );
void cx_Sim_onInitDefault(void);
void cx_Sim_onDrawDefault(void);
void cx_Sim_onKeyEventDefault( t_bool tmp_down, t_int32 tmp_key );
t_int32 cx_Sim_crux_AddVar( t_int32 tmp_v );
t_int32 cx_Sim_crux_Run( t_int32 tmp_v );
void cx_Sim_OS_init(void);
void cx_Sim_OS_thread(void);
void cx_Sim_Clear(void);
void cx_Sim_DrawCircle( t_int32 tmp_x, t_int32 tmp_y, t_int32 tmp_r );
void cx_Sim_FillCircle( t_int32 tmp_x, t_int32 tmp_y, t_int32 tmp_r );
void cx_main0(void);
void cx_Setup(void);
void cx_Loop(void);
void cx_kongzhiqiUNO_fanfuzhixing(void);
void cx_OS_VarInit(void);

t_int32 cx_SYS_Tick;
t_uint8 cx_SYS_Loop;
t_int32 cx_CInsIndex;
t_uint8 cx_bujindianjiqudongqi_driver_OS_time;
t_int32 cx_bujindianjiqudongqi_driver_angle;
t_int16 cx_bujindianjiqudongqi_driver_myspeed;
t_int16 cx_bujindianjiqudongqi_driver_realspeed;
t_int16 cx_bujindianjiqudongqi_driver_offset;
t_uint8 cx_bujindianjiqudongqi_driver_tDIR;
t_int32 cx_bujindianjiqudongqi_driver_time;
t_bool cx_bujindianjiqudongqi_driver_upspeed;
t_bool cx_bujindianjiqudongqi_driver_downspeed;
t_bool cx_bujindianjiqudongqi_driver_accel;
t_bool cx_bujindianjiqudongqi_driver_runforever;
#define cx_kongzhiqiUNO_driver_RES_SP_LOW SP_LOW
#define cx_kongzhiqiUNO_driver_RES_SP_HIGH SP_HIGH
#define cx_kongzhiqiUNO_driver_RES_SP SP
#define cx_kongzhiqiUNO_driver_RES_SREG SREG
#define cx_kongzhiqiUNO_driver_RES_PINB PINB
#define cx_kongzhiqiUNO_driver_RES_DDRB DDRB
#define cx_kongzhiqiUNO_driver_RES_PORTB PORTB
#define cx_kongzhiqiUNO_driver_RES_PINC PINC
#define cx_kongzhiqiUNO_driver_RES_DDRC DDRC
#define cx_kongzhiqiUNO_driver_RES_PORTC PORTC
#define cx_kongzhiqiUNO_driver_RES_PIND PIND
#define cx_kongzhiqiUNO_driver_RES_DDRD DDRD
#define cx_kongzhiqiUNO_driver_RES_PORTD PORTD
#define cx_kongzhiqiUNO_driver_RES_WDTCSR WDTCSR
#define cx_kongzhiqiUNO_driver_RES_MCUSR MCUSR
#define cx_kongzhiqiUNO_driver_RES_TCCR0A TCCR0A
#define cx_kongzhiqiUNO_driver_RES_TCCR0B TCCR0B
#define cx_kongzhiqiUNO_driver_RES_TCNT0 TCNT0
#define cx_kongzhiqiUNO_driver_RES_OCR0A OCR0A
#define cx_kongzhiqiUNO_driver_RES_OCR0B OCR0B
#define cx_kongzhiqiUNO_driver_RES_TIMSK0 TIMSK0
#define cx_kongzhiqiUNO_driver_RES_TIFR0 TIFR0
#define cx_kongzhiqiUNO_driver_RES_ADCL ADCL
#define cx_kongzhiqiUNO_driver_RES_ADCH ADCH
#define cx_kongzhiqiUNO_driver_RES_ADCSRA ADCSRA
#define cx_kongzhiqiUNO_driver_RES_ADCSRB ADCSRB
#define cx_kongzhiqiUNO_driver_RES_ADMUX ADMUX
#define cx_kongzhiqiUNO_driver_RES_DIDR0 DIDR0
#define cx_kongzhiqiUNO_driver_RES_EICRA EICRA
#define cx_kongzhiqiUNO_driver_RES_EIMSK EIMSK
#define cx_kongzhiqiUNO_driver_RES_EIFR EIFR
#define cx_kongzhiqiUNO_driver_RES_OCR1BH OCR1BH
#define cx_kongzhiqiUNO_driver_RES_OCR1BL OCR1BL
#define cx_kongzhiqiUNO_driver_RES_OCR1AH OCR1AH
#define cx_kongzhiqiUNO_driver_RES_OCR1AL OCR1AL
#define cx_kongzhiqiUNO_driver_RES_TCNT1H TCNT1H
#define cx_kongzhiqiUNO_driver_RES_TCNT1L TCNT1L
#define cx_kongzhiqiUNO_driver_RES_TCCR1C TCCR1C
#define cx_kongzhiqiUNO_driver_RES_TCCR1B TCCR1B
#define cx_kongzhiqiUNO_driver_RES_TCCR1A TCCR1A
#define cx_kongzhiqiUNO_driver_RES_TIMSK1 TIMSK1
#define cx_kongzhiqiUNO_driver_RES_TIFR1 TIFR1
#define cx_kongzhiqiUNO_driver_RES_OCR2B OCR2B
#define cx_kongzhiqiUNO_driver_RES_OCR2A OCR2A
#define cx_kongzhiqiUNO_driver_RES_TCNT2 TCNT2
#define cx_kongzhiqiUNO_driver_RES_TCCR2B TCCR2B
#define cx_kongzhiqiUNO_driver_RES_TCCR2A TCCR2A
#define cx_kongzhiqiUNO_driver_RES_TIMSK2 TIMSK2
#define cx_kongzhiqiUNO_driver_RES_TIFR2 TIFR2
#define cx_kongzhiqiUNO_driver_RES_UCSR0A UCSR0A
#define cx_kongzhiqiUNO_driver_RES_UCSR0B UCSR0B
#define cx_kongzhiqiUNO_driver_RES_UCSR0C UCSR0C
#define cx_kongzhiqiUNO_driver_RES_UBRR0L UBRR0L
#define cx_kongzhiqiUNO_driver_RES_UBRR0H UBRR0H
#define cx_kongzhiqiUNO_driver_RES_UDR0 UDR0
#define cx_kongzhiqiUNO_driver_RES_EECR EECR
#define cx_kongzhiqiUNO_driver_RES_EEDR EEDR
#define cx_kongzhiqiUNO_driver_RES_EEARL EEARL
#define cx_kongzhiqiUNO_driver_RES_EEARH EEARH
#define cx_kongzhiqiUNO_driver_RES_SPCR SPCR
#define cx_kongzhiqiUNO_driver_RES_SPSR SPSR
#define cx_kongzhiqiUNO_driver_RES_SPDR SPDR
#define cx_kongzhiqiUNO_driver_RES_SMCR SMCR
#define cx_kongzhiqiUNO_driver_RES_MCUCSR MCUCSR
#define cx_kongzhiqiUNO_driver_RES_MCUCR MCUCR
t_uint8 cx_kongzhiqiUNO_driver_OS_time;
t_uint8 cx_kongzhiqiUNO_driver_OS_EventFlag;
t_uint8 cx_kongzhiqiUNO_driver_swap;
t_int32 cx_kongzhiqiUNO_driver_FlashNumber;
t_bool cx_kongzhiqiUNO_driver_FlashOpen;
t_bool cx_kongzhiqiUNO_driver_FlashForever;
t_bit cx_kongzhiqiUNO_GND_D0_DIR;
t_bit cx_kongzhiqiUNO_GND_D0_IN;
t_bit cx_kongzhiqiUNO_GND_D0_OUT;
t_bit cx_kongzhiqiUNO_GND_D0_PUL;
t_bit cx_kongzhiqiUNO_GND1_D0_DIR;
t_bit cx_kongzhiqiUNO_GND1_D0_IN;
t_bit cx_kongzhiqiUNO_GND1_D0_OUT;
t_bit cx_kongzhiqiUNO_GND1_D0_PUL;
t_bit cx_kongzhiqiUNO_GND2_D0_DIR;
t_bit cx_kongzhiqiUNO_GND2_D0_IN;
t_bit cx_kongzhiqiUNO_GND2_D0_OUT;
t_bit cx_kongzhiqiUNO_GND2_D0_PUL;
t_bit cx_kongzhiqiUNO_VCC1_D0_DIR;
t_bit cx_kongzhiqiUNO_VCC1_D0_IN;
t_bit cx_kongzhiqiUNO_VCC1_D0_OUT;
t_bit cx_kongzhiqiUNO_VCC1_D0_PUL;
t_bit cx_kongzhiqiUNO_VCC2_D0_DIR;
t_bit cx_kongzhiqiUNO_VCC2_D0_IN;
t_bit cx_kongzhiqiUNO_VCC2_D0_OUT;
t_bit cx_kongzhiqiUNO_VCC2_D0_PUL;
t_uint16 cx_OS0_ID_list[1];
t_int32 cx_OS0_time_list[1];
t_bool cx_OS0_enable_list[1];
t_uint16 cx_OS0_Delayer_tempID;
t_bool cx_OS0_EnableSchedule;
t_uint16 cx_OS0_Delayer_ActiveTaskIndex;
t_bool cx_OS0_Delayer_Pause;
t_uint32 cx_OS0_SysTick;
t_uint16 cx_OS0_CurrentTaskIndex;
t_uint8 cx_OS0_TickList[1];
t_uint8 cx_OS0_MaxTickList[1];
void (*cx_OS0_DriverHandleList[1])(void);
t_uint8 cx_OS0_DriverNumber;
void (*cx_OS0_Driver100usHandleList[1])(void);
t_uint8 cx_OS0_Driver100usNumber;
t_uint8 cx_OS0_tick;
t_uint8 cx_OS0_DebugTick;
void (*cx_OS0_s_Handle)(void);
t_bool cx_kongzhiqiUNO_fanfuzhixing_en_;
t_uint8 cx_kongzhiqiUNO_fanfuzhixing_flg_;

void cx_NULL_E(void)
{
}
void cx_SYS_NullFunc(void)
{
}
t_int8 cx__patch_get_char_width_real( t_int32 tmp_ch )
{
  return 1;
}
t_uint8 cx___sysbox__0_sys_iointerface_get_uint8( t_uint32 tmp_addr )
{
  return 0;
}
void cx___sysbox__0_sys_iointerface_set_uint8( t_uint32 tmp_addr, t_uint8 tmp_d )
{
}
t_uint16 cx___sysbox__0_sys_iointerface_get_uint16( t_uint32 tmp_addr )
{
  return 0;
}
void cx___sysbox__0_sys_iointerface_set_uint16( t_uint32 tmp_addr, t_uint16 tmp_d )
{
}
t_uint32 cx___sysbox__0_sys_iointerface_get_uint32( t_uint32 tmp_addr )
{
  return 0;
}
void cx___sysbox__0_sys_iointerface_set_uint32( t_uint32 tmp_addr, t_uint32 tmp_d )
{
}
void cx_bujindianjiqudongqi_driver_OS_init(void)
{
  cx_kongzhiqiUNO_driver_RES_DDRD |= 4;
  cx_kongzhiqiUNO_driver_RES_PORTD &= 251;
  cx_kongzhiqiUNO_driver_RES_DDRD |= 16;
  cx_kongzhiqiUNO_driver_RES_PORTD &= 239;
  cx_kongzhiqiUNO_driver_RES_DDRB |= 1;
  cx_kongzhiqiUNO_driver_RES_PORTB &= 254;
  cx_bujindianjiqudongqi_driver_tDIR = 0;
  cx_bujindianjiqudongqi_driver_offset = 0;
  cx_bujindianjiqudongqi_driver_realspeed = 0;
  cx_bujindianjiqudongqi_driver_time = 0;
  cx_bujindianjiqudongqi_driver_runforever = 0;
  cx_bujindianjiqudongqi_driver_upspeed = 0;
  cx_bujindianjiqudongqi_driver_downspeed = 0;
  cx_bujindianjiqudongqi_driver_myspeed = (t_int16)500;
  cx_bujindianjiqudongqi_driver_accel = 1;
  cx_bujindianjiqudongqi_driver_DeviceInit();
}
void cx_bujindianjiqudongqi_driver_OS_thread(void)
{
}
void cx_bujindianjiqudongqi_driver_DeviceInit(void)
{
}
void cx_bujindianjiqudongqi_driver_OS_run100us(void)
{
  if( cx_bujindianjiqudongqi_driver_tDIR == 0 ) {
    return;
  }
  if( cx_bujindianjiqudongqi_driver_accel ) {
    if( cx_bujindianjiqudongqi_driver_upspeed ) {
      if( cx_bujindianjiqudongqi_driver_realspeed < cx_bujindianjiqudongqi_driver_myspeed ) {
        cx_bujindianjiqudongqi_driver_realspeed = cx_bujindianjiqudongqi_driver_realspeed + (1);
      }
      else {
        cx_bujindianjiqudongqi_driver_upspeed = 0;
      }
    }
    if( !cx_bujindianjiqudongqi_driver_runforever ) {
      if( cx_bujindianjiqudongqi_driver_downspeed ) {
        if( cx_bujindianjiqudongqi_driver_realspeed > 1 ) {
          cx_bujindianjiqudongqi_driver_realspeed = cx_bujindianjiqudongqi_driver_realspeed - (1);
        }
      }
    }
    cx_bujindianjiqudongqi_driver_offset = cx_bujindianjiqudongqi_driver_offset + (cx_bujindianjiqudongqi_driver_realspeed);
  }
  else {
    cx_bujindianjiqudongqi_driver_offset = cx_bujindianjiqudongqi_driver_offset + (cx_bujindianjiqudongqi_driver_myspeed);
  }
  if( cx_bujindianjiqudongqi_driver_offset < 10000 ) {
    return;
  }
  cx_bujindianjiqudongqi_driver_offset = cx_bujindianjiqudongqi_driver_offset - (10000);
  if( !cx_bujindianjiqudongqi_driver_runforever ) {
    if( cx_bujindianjiqudongqi_driver_time > 0 ) {
      cx_bujindianjiqudongqi_driver_time = cx_bujindianjiqudongqi_driver_time - (1);
      if( !cx_bujindianjiqudongqi_driver_downspeed ) {
        t_int32 tmp_dline = cx_bujindianjiqudongqi_driver_realspeed;
        tmp_dline = tmp_dline * cx_bujindianjiqudongqi_driver_realspeed / 20000;
        if( cx_bujindianjiqudongqi_driver_time < tmp_dline ) {
          cx_bujindianjiqudongqi_driver_downspeed = 1;
          cx_bujindianjiqudongqi_driver_upspeed = 0;
        }
      }
    }
    else {
      cx_bujindianjiqudongqi_driver_tDIR = 0;
      return;
    }
  }
  if( cx_bujindianjiqudongqi_driver_tDIR == 1 ) {
    cx_kongzhiqiUNO_driver_RES_PORTD &= 239;
    cx_bujindianjiqudongqi_driver_angle = cx_bujindianjiqudongqi_driver_angle + (1);
  }
  else {
    cx_kongzhiqiUNO_driver_RES_PORTD |= 16;
    cx_bujindianjiqudongqi_driver_angle = cx_bujindianjiqudongqi_driver_angle - (1);
  }
  cx_kongzhiqiUNO_driver_RES_PORTD |= 4;
  cx_kongzhiqiUNO_driver_RES_PORTD &= 251;
}
void cx_bujindianjiqudongqi_driver_set_speed( t_int32 tmp_s )
{
  cx_bujindianjiqudongqi_driver_myspeed = (t_int16)tmp_s;
}
void cx_bujindianjiqudongqi_driver_run_right(void)
{
  if( cx_bujindianjiqudongqi_driver_realspeed != 0 && cx_bujindianjiqudongqi_driver_tDIR == 2 ) {
    cx_bujindianjiqudongqi_driver_realspeed = 0;
  }
  cx_bujindianjiqudongqi_driver_tDIR = 1;
  cx_bujindianjiqudongqi_driver_time = 0;
  cx_bujindianjiqudongqi_driver_runforever = 1;
  cx_bujindianjiqudongqi_driver_upspeed = 1;
  cx_bujindianjiqudongqi_driver_downspeed = 0;
}
void cx_bujindianjiqudongqi_driver_run_left(void)
{
  if( cx_bujindianjiqudongqi_driver_realspeed != 0 && cx_bujindianjiqudongqi_driver_tDIR == 1 ) {
    cx_bujindianjiqudongqi_driver_realspeed = 0;
  }
  cx_bujindianjiqudongqi_driver_tDIR = 2;
  cx_bujindianjiqudongqi_driver_time = 0;
  cx_bujindianjiqudongqi_driver_runforever = 1;
  cx_bujindianjiqudongqi_driver_upspeed = 1;
  cx_bujindianjiqudongqi_driver_downspeed = 0;
}
void cx_bujindianjiqudongqi_driver_run_right_t( t_int32 tmp_t )
{
  if( cx_bujindianjiqudongqi_driver_realspeed != 0 && cx_bujindianjiqudongqi_driver_tDIR == 2 ) {
    cx_bujindianjiqudongqi_driver_realspeed = 0;
  }
  cx_bujindianjiqudongqi_driver_time = tmp_t;
  cx_bujindianjiqudongqi_driver_tDIR = 1;
  cx_bujindianjiqudongqi_driver_runforever = 0;
  cx_bujindianjiqudongqi_driver_upspeed = 1;
  cx_bujindianjiqudongqi_driver_downspeed = 0;
}
void cx_bujindianjiqudongqi_driver_run_left_t( t_int32 tmp_t )
{
  if( cx_bujindianjiqudongqi_driver_realspeed != 0 && cx_bujindianjiqudongqi_driver_tDIR == 1 ) {
    cx_bujindianjiqudongqi_driver_realspeed = 0;
  }
  cx_bujindianjiqudongqi_driver_time = tmp_t;
  cx_bujindianjiqudongqi_driver_tDIR = 2;
  cx_bujindianjiqudongqi_driver_runforever = 0;
  cx_bujindianjiqudongqi_driver_upspeed = 1;
  cx_bujindianjiqudongqi_driver_downspeed = 0;
}
void cx_bujindianjiqudongqi_driver_run_to( t_int32 tmp_t )
{
  t_int32 tmp_t_angle = cx_bujindianjiqudongqi_driver_angle;
  if( tmp_t == tmp_t_angle ) {
    return;
  }
  if( tmp_t > tmp_t_angle ) {
    cx_bujindianjiqudongqi_driver_run_right_t( tmp_t - cx_bujindianjiqudongqi_driver_angle );
  }
  else {
    cx_bujindianjiqudongqi_driver_run_left_t( cx_bujindianjiqudongqi_driver_angle - tmp_t );
  }
}
void cx_bujindianjiqudongqi_driver_stop(void)
{
  if( !cx_bujindianjiqudongqi_driver_accel ) {
    cx_bujindianjiqudongqi_driver_tDIR = 0;
    cx_bujindianjiqudongqi_driver_runforever = 0;
    cx_bujindianjiqudongqi_driver_downspeed = 0;
    cx_bujindianjiqudongqi_driver_upspeed = 0;
    cx_bujindianjiqudongqi_driver_time = 0;
    cx_bujindianjiqudongqi_driver_realspeed = 0;
  }
  else {
    cx_bujindianjiqudongqi_driver_runforever = 0;
    cx_bujindianjiqudongqi_driver_downspeed = 1;
    cx_bujindianjiqudongqi_driver_upspeed = 0;
    cx_bujindianjiqudongqi_driver_time = cx_bujindianjiqudongqi_driver_realspeed;
    cx_bujindianjiqudongqi_driver_time = cx_bujindianjiqudongqi_driver_time * cx_bujindianjiqudongqi_driver_realspeed / 20000;
  }
}
void cx_bujindianjiqudongqi_driver_short_stop(void)
{
  cx_bujindianjiqudongqi_driver_tDIR = 0;
  cx_bujindianjiqudongqi_driver_runforever = 0;
  cx_bujindianjiqudongqi_driver_downspeed = 0;
  cx_bujindianjiqudongqi_driver_upspeed = 0;
  cx_bujindianjiqudongqi_driver_time = 0;
  cx_bujindianjiqudongqi_driver_realspeed = 0;
}
t_bool cx_bujindianjiqudongqi_driver_Running(void)
{
  return cx_bujindianjiqudongqi_driver_tDIR != 0;
}
t_bool cx_bujindianjiqudongqi_driver_Stoped(void)
{
  return cx_bujindianjiqudongqi_driver_tDIR == 0;
}
void cx_bujindianjiqudongqi_driver_power_on(void)
{
  cx_kongzhiqiUNO_driver_RES_PORTB &= 254;
}
void cx_bujindianjiqudongqi_driver_power_off(void)
{
  cx_kongzhiqiUNO_driver_RES_PORTB |= 1;
}
void cx_bujindianjiqudongqi_driver_accel_on(void)
{
  cx_bujindianjiqudongqi_driver_accel = 1;
}
void cx_bujindianjiqudongqi_driver_accel_off(void)
{
  cx_bujindianjiqudongqi_driver_accel = 0;
}
void cx_yanshiqi_driver_OS_init(void)
{
}
void cx_yanshiqi_driver_OS_thread(void)
{
}
void cx_yanshiqi_driver_DelayMillisecond( t_int32 tmp_t )
{
  t_int32 tmp_tt = tmp_t;
  if( tmp_tt != 0 ) {
    cx_OS0_Delayer_tempID = 2;
    cx_OS0_Delayer_Wait( tmp_tt );
  }
}
void cx_yanshiqi_driver_DelaySecond( t_fix tmp_t )
{
  t_uint32 tmp_d = (t_uint32)tmp_t;
  tmp_d = tmp_d * 1000 / 1024;
  cx_yanshiqi_driver_DelayMillisecond( (t_int32)tmp_d );
}
void cx_yanshiqi_driver_DelayMinute( t_int32 tmp_t )
{
  cx_yanshiqi_driver_DelayMillisecond( tmp_t * 60000 );
}
void cx_yanshiqi_driver_DelayHour( t_int32 tmp_t )
{
  cx_yanshiqi_driver_DelayMillisecond( tmp_t * 3600000 );
}
void cx_yanshiqi_driver_DelayDay( t_int32 tmp_t )
{
  cx_yanshiqi_driver_DelayMillisecond( tmp_t * 86400000 );
}
void cx_yanshiqi_driver_Stop(void)
{
  cx_OS0_Delayer_Stop( 2 );
}
void cx_yanshiqi_driver_StopCurrent(void)
{
  cx_OS0_Delayer_Stop( 2 );
}
void cx_yanshiqi_driver_StopAll(void)
{
  cx_OS0_Delayer_StopAll();
}
void cx_kongzhiqiUNO_driver_OS_init(void)
{
  cx_kongzhiqiUNO_driver_FlashOpen = 0;
  cx_kongzhiqiUNO_driver_FlashForever = 0;
  cx_kongzhiqiUNO_driver_FlashNumber = 0;
  cx_kongzhiqiUNO_driver_swap = 0;
  cx_kongzhiqiUNO_driver_OS_time = 50;
  cx_kongzhiqiUNO_driver_OS_EventFlag = 0;
  cx_kongzhiqiUNO_driver_OS_EventFlag |= 1;
  t_uint16 _cx_lc_1 = 10;
  for( t_uint16 _cx_lc_0 = 0; _cx_lc_0 < _cx_lc_1; _cx_lc_0++ ) {
    cx_kongzhiqiUNO_driver_delay();
  }
  cx_kongzhiqiUNO_driver_RES_DDRB |= 32;
  cx_kongzhiqiUNO_driver_RES_PORTB &= 223;
}
void cx_kongzhiqiUNO_driver_OS_thread(void)
{
  cx_kongzhiqiUNO_driver_OS_EventFlag |= 2;
}
void cx_kongzhiqiUNO_driver_OS_run(void)
{
  if( !cx_kongzhiqiUNO_driver_FlashOpen ) {
    return;
  }
  cx_kongzhiqiUNO_driver_swap = cx_kongzhiqiUNO_driver_swap % (10);
  t_bit tmp_OUT;
  if( cx_kongzhiqiUNO_driver_swap < 1 ) {
    tmp_OUT = 1;
  }
  else {
    tmp_OUT = 0;
  }
  cx_kongzhiqiUNO_driver_swap = cx_kongzhiqiUNO_driver_swap + (1);
  if( cx_kongzhiqiUNO_driver_FlashForever ) {
    (tmp_OUT) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTB |= 32): (cx_kongzhiqiUNO_driver_RES_PORTB &= 223);
    return;
  }
  if( cx_kongzhiqiUNO_driver_FlashNumber == 0 ) {
    cx_kongzhiqiUNO_driver_FlashOpen = 0;
    return;
  }
  if( ((cx_kongzhiqiUNO_driver_RES_PORTB >> 5) & 1) == 1 && tmp_OUT == 0 ) {
    cx_kongzhiqiUNO_driver_FlashNumber = cx_kongzhiqiUNO_driver_FlashNumber - (1);
  }
  (tmp_OUT) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTB |= 32): (cx_kongzhiqiUNO_driver_RES_PORTB &= 223);
}
void cx_kongzhiqiUNO_driver_LightOpen(void)
{
  cx_kongzhiqiUNO_driver_FlashOpen = 0;
  cx_kongzhiqiUNO_driver_RES_PORTB |= 32;
}
void cx_kongzhiqiUNO_driver_LightClose(void)
{
  cx_kongzhiqiUNO_driver_FlashOpen = 0;
  cx_kongzhiqiUNO_driver_RES_PORTB &= 223;
}
void cx_kongzhiqiUNO_driver_LightSwap(void)
{
  cx_kongzhiqiUNO_driver_FlashOpen = 0;
  ((((cx_kongzhiqiUNO_driver_RES_PORTB >> 5) & 1)^1)) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTB |= 32): (cx_kongzhiqiUNO_driver_RES_PORTB &= 223);
}
void cx_kongzhiqiUNO_driver_LightFlashTimes( t_int32 tmp_n )
{
  cx_kongzhiqiUNO_driver_FlashNumber = tmp_n;
  cx_kongzhiqiUNO_driver_swap = 0;
  cx_kongzhiqiUNO_driver_FlashForever = 0;
  cx_kongzhiqiUNO_driver_FlashOpen = 1;
}
void cx_kongzhiqiUNO_driver_LightFlash(void)
{
  cx_kongzhiqiUNO_driver_FlashNumber = 0;
  cx_kongzhiqiUNO_driver_FlashForever = 1;
  cx_kongzhiqiUNO_driver_FlashOpen = 1;
}
void cx_kongzhiqiUNO_driver_delay(void)
{
  t_uint16 _cx_lc_1 = 250;
  for( t_uint16 _cx_lc_0 = 0; _cx_lc_0 < _cx_lc_1; _cx_lc_0++ ) {
    t_uint16 _cx_lc_3 = 250;
    for( t_uint16 _cx_lc_2 = 0; _cx_lc_2 < _cx_lc_3; _cx_lc_2++ ) {
    }
  }
}
void cx_kongzhiqiUNO_pinMode( t_int32 tmp_p, t_int32 tmp_m )
{
  if( tmp_p > 19 || tmp_p < 0 ) {
    return;
  }
  t_bit tmp_b;
  if( tmp_m != 0 ) {
    tmp_b = 1;
  }
  else {
    tmp_b = 0;
  }
  switch( (t_uint8)(t_uint16)(t_uint32)tmp_p ) {
    case 0:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRD |= 1): (cx_kongzhiqiUNO_driver_RES_DDRD &= 254);
    break;
    case 1:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRD |= 2): (cx_kongzhiqiUNO_driver_RES_DDRD &= 253);
    break;
    case 2:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRD |= 4): (cx_kongzhiqiUNO_driver_RES_DDRD &= 251);
    break;
    case 3:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRD |= 8): (cx_kongzhiqiUNO_driver_RES_DDRD &= 247);
    break;
    case 4:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRD |= 16): (cx_kongzhiqiUNO_driver_RES_DDRD &= 239);
    break;
    case 5:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRD |= 32): (cx_kongzhiqiUNO_driver_RES_DDRD &= 223);
    break;
    case 6:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRD |= 64): (cx_kongzhiqiUNO_driver_RES_DDRD &= 191);
    break;
    case 7:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRD |= 128): (cx_kongzhiqiUNO_driver_RES_DDRD &= 127);
    break;
    case 8:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRB |= 1): (cx_kongzhiqiUNO_driver_RES_DDRB &= 254);
    break;
    case 9:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRB |= 2): (cx_kongzhiqiUNO_driver_RES_DDRB &= 253);
    break;
    case 10:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRB |= 4): (cx_kongzhiqiUNO_driver_RES_DDRB &= 251);
    break;
    case 11:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRB |= 8): (cx_kongzhiqiUNO_driver_RES_DDRB &= 247);
    break;
    case 12:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRB |= 16): (cx_kongzhiqiUNO_driver_RES_DDRB &= 239);
    break;
    case 13:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRB |= 32): (cx_kongzhiqiUNO_driver_RES_DDRB &= 223);
    break;
    case 14:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRC |= 1): (cx_kongzhiqiUNO_driver_RES_DDRC &= 254);
    break;
    case 15:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRC |= 2): (cx_kongzhiqiUNO_driver_RES_DDRC &= 253);
    break;
    case 16:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRC |= 4): (cx_kongzhiqiUNO_driver_RES_DDRC &= 251);
    break;
    case 17:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRC |= 8): (cx_kongzhiqiUNO_driver_RES_DDRC &= 247);
    break;
    case 18:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRC |= 16): (cx_kongzhiqiUNO_driver_RES_DDRC &= 239);
    break;
    case 19:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_DDRC |= 32): (cx_kongzhiqiUNO_driver_RES_DDRC &= 223);
    break;
    default:
    break;
  }
}
void cx_kongzhiqiUNO_digitalWrite( t_int32 tmp_p, t_int32 tmp_d )
{
  if( tmp_p > 19 || tmp_p < 0 ) {
    return;
  }
  t_bit tmp_b;
  if( tmp_d != 0 ) {
    tmp_b = 1;
  }
  else {
    tmp_b = 0;
  }
  switch( (t_uint8)(t_uint16)(t_uint32)tmp_p ) {
    case 0:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTD |= 1): (cx_kongzhiqiUNO_driver_RES_PORTD &= 254);
    break;
    case 1:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTD |= 2): (cx_kongzhiqiUNO_driver_RES_PORTD &= 253);
    break;
    case 2:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTD |= 4): (cx_kongzhiqiUNO_driver_RES_PORTD &= 251);
    break;
    case 3:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTD |= 8): (cx_kongzhiqiUNO_driver_RES_PORTD &= 247);
    break;
    case 4:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTD |= 16): (cx_kongzhiqiUNO_driver_RES_PORTD &= 239);
    break;
    case 5:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTD |= 32): (cx_kongzhiqiUNO_driver_RES_PORTD &= 223);
    break;
    case 6:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTD |= 64): (cx_kongzhiqiUNO_driver_RES_PORTD &= 191);
    break;
    case 7:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTD |= 128): (cx_kongzhiqiUNO_driver_RES_PORTD &= 127);
    break;
    case 8:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTB |= 1): (cx_kongzhiqiUNO_driver_RES_PORTB &= 254);
    break;
    case 9:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTB |= 2): (cx_kongzhiqiUNO_driver_RES_PORTB &= 253);
    break;
    case 10:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTB |= 4): (cx_kongzhiqiUNO_driver_RES_PORTB &= 251);
    break;
    case 11:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTB |= 8): (cx_kongzhiqiUNO_driver_RES_PORTB &= 247);
    break;
    case 12:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTB |= 16): (cx_kongzhiqiUNO_driver_RES_PORTB &= 239);
    break;
    case 13:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTB |= 32): (cx_kongzhiqiUNO_driver_RES_PORTB &= 223);
    break;
    case 14:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTC |= 1): (cx_kongzhiqiUNO_driver_RES_PORTC &= 254);
    break;
    case 15:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTC |= 2): (cx_kongzhiqiUNO_driver_RES_PORTC &= 253);
    break;
    case 16:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTC |= 4): (cx_kongzhiqiUNO_driver_RES_PORTC &= 251);
    break;
    case 17:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTC |= 8): (cx_kongzhiqiUNO_driver_RES_PORTC &= 247);
    break;
    case 18:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTC |= 16): (cx_kongzhiqiUNO_driver_RES_PORTC &= 239);
    break;
    case 19:
    (tmp_b) != 0 ? (cx_kongzhiqiUNO_driver_RES_PORTC |= 32): (cx_kongzhiqiUNO_driver_RES_PORTC &= 223);
    break;
    default:
    break;
  }
}
t_int32 cx_kongzhiqiUNO_digitalRead( t_int32 tmp_p )
{
  if( tmp_p > 19 || tmp_p < 0 ) {
    return 0;
  }
  t_bit tmp_b;
  switch( (t_uint8)(t_uint16)(t_uint32)tmp_p ) {
    case 0:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PIND >> 0) & 1);
    break;
    case 1:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PIND >> 1) & 1);
    break;
    case 2:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PIND >> 2) & 1);
    break;
    case 3:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PIND >> 3) & 1);
    break;
    case 4:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PIND >> 4) & 1);
    break;
    case 5:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PIND >> 5) & 1);
    break;
    case 6:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PIND >> 6) & 1);
    break;
    case 7:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PIND >> 7) & 1);
    break;
    case 8:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PINB >> 0) & 1);
    break;
    case 9:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PINB >> 1) & 1);
    break;
    case 10:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PINB >> 2) & 1);
    break;
    case 11:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PINB >> 3) & 1);
    break;
    case 12:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PINB >> 4) & 1);
    break;
    case 13:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PINB >> 5) & 1);
    break;
    case 14:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PINC >> 0) & 1);
    break;
    case 15:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PINC >> 1) & 1);
    break;
    case 16:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PINC >> 2) & 1);
    break;
    case 17:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PINC >> 3) & 1);
    break;
    case 18:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PINC >> 4) & 1);
    break;
    case 19:
    tmp_b = ((cx_kongzhiqiUNO_driver_RES_PINC >> 5) & 1);
    break;
    default:
    break;
  }
  if( tmp_b == 0 ) {
    return 0;
  }
  else {
    return 1;
  }
  return 0;
}
void cx_OS0_REMO_ModuleWrite( t_int32 tmp_d, t_int32 tmp_d1 )
{
}
t_int32 cx_OS0_REMO_ModuleRead( t_int32 tmp_d )
{
  return 0;
}
void cx_OS0_Delayer_Init(void)
{
  cx_OS0_EnableSchedule = 1;
  cx_OS0_Delayer_Pause = 0;
}
void cx_OS0_Delayer_Run(void)
{
  if( cx_OS0_Delayer_Pause ) {
    return;
  }
  for( t_uint8 tmp_i = 0; tmp_i < 1; ) {
    if( cx_OS0_enable_list[tmp_i] ) {
      cx_OS0_time_list[tmp_i] = cx_OS0_time_list[tmp_i] - (cx_SYS_Tick);
      if( cx_OS0_time_list[tmp_i] <= 0 ) {
        cx_OS0_enable_list[tmp_i] = 0;
      }
    }
    tmp_i = tmp_i + (1);
  }
}
t_bool cx_OS0_Delayer_Running(void)
{
  return cx_OS0_enable_list[cx_OS0_CurrentTaskIndex];
}
t_bool cx_OS0_Delayer_TarRunning( t_uint8 tmp_i )
{
  if( !cx_OS0_EnableSchedule && cx_OS0_Delayer_ActiveTaskIndex != tmp_i ) {
    return 1;
  }
  return cx_OS0_enable_list[tmp_i];
}
void cx_OS0_Delayer_Stop( t_uint16 tmp_cid )
{
  for( t_uint8 tmp_i = 0; tmp_i < 1; ) {
    if( cx_OS0_ID_list[tmp_i] == tmp_cid ) {
      cx_OS0_time_list[tmp_i] = 0;
      cx_OS0_enable_list[tmp_i] = 0;
    }
    tmp_i = tmp_i + (1);
  }
}
void cx_OS0_Delayer_StopAll(void)
{
  for( t_uint8 tmp_i = 0; tmp_i < 1; ) {
    cx_OS0_time_list[tmp_i] = 0;
    cx_OS0_enable_list[tmp_i] = 0;
    tmp_i = tmp_i + (1);
  }
}
void cx_OS0_Delayer_Wait( t_int32 tmp_t )
{
  cx_OS0_ID_list[cx_OS0_CurrentTaskIndex] = cx_OS0_Delayer_tempID;
  cx_OS0_time_list[cx_OS0_CurrentTaskIndex] = tmp_t;
  cx_OS0_enable_list[cx_OS0_CurrentTaskIndex] = 1;
  cx_OS0_Delayer_ActiveTaskIndex = cx_OS0_CurrentTaskIndex;
}
t_int32 cx_OS0_GetSysTick(void)
{
  return (t_int32)(cx_OS0_SysTick & 2147483647);
}
t_uint32 cx_OS0_GetSysTickU(void)
{
  return cx_OS0_SysTick;
}
void cx_OS0_OS_init(void)
{
  cx_OS0_CloseWatchdog();
  cx_OS0_TimerInit();
  cx_OS0_DriverInit();
  cx_OS0_Delayer_Init();
  cx_OS0_tick = 0;
  cx_OS0_CurrentTaskIndex = 0;
}
void cx_OS0_CloseWatchdog(void)
{
}
void cx_OS0_MACRO_TIMER_ON(void)
{
}
void cx_OS0_MACRO_TIMER_OFF(void)
{
}
void cx_OS0_TimerInit(void)
{
}
void cx_OS0_OS_run(void)
{
  cx_OS0_MACRO_TIMER_OFF();
  cx_OS0_RunDriver100usList();
  cx_OS0_tick = cx_OS0_tick + (1);
  if( cx_OS0_tick >= 10 ) {
    cx_OS0_RunDriverList();
    cx_OS0_tick = 0;
    cx_OS0_DebugTick = cx_OS0_DebugTick + (1);
    cx_OS0_SysTick = cx_OS0_SysTick + (1);
  }
  cx_OS0_MACRO_TIMER_ON();
}
void cx_OS0_DriverInit(void)
{
  cx_OS0_DriverNumber = 0;
  for( t_uint8 tmp_i = 0; tmp_i < 1; ) {
    cx_OS0_TickList[tmp_i] = 0;
    cx_OS0_MaxTickList[tmp_i] = 0;
    cx_OS0_DriverHandleList[tmp_i] = 0;
    tmp_i = tmp_i + (1);
  }
  cx_OS0_Driver100usNumber = 0;
}
void cx_OS0_CreateDriver( void (*tmp_Handle)(void), t_uint8 tmp_MaxTick )
{
  cx_OS0_DriverHandleList[cx_OS0_DriverNumber] = tmp_Handle;
  cx_OS0_MaxTickList[cx_OS0_DriverNumber] = tmp_MaxTick;
  cx_OS0_DriverNumber = cx_OS0_DriverNumber + (1);
}
void cx_OS0_CreateDriver100us( void (*tmp_Handle)(void) )
{
  cx_OS0_Driver100usHandleList[cx_OS0_Driver100usNumber] = tmp_Handle;
  cx_OS0_Driver100usNumber = cx_OS0_Driver100usNumber + (1);
}
void cx_OS0_RunDriverList(void)
{
  for( t_uint8 tmp_i = 0; tmp_i < cx_OS0_DriverNumber; ) {
    cx_OS0_TickList[tmp_i] = cx_OS0_TickList[tmp_i] + (1);
    if( cx_OS0_TickList[tmp_i] == cx_OS0_MaxTickList[tmp_i] ) {
      cx_OS0_TickList[tmp_i] = 0;
      cx_OS0_D_CALL( cx_OS0_DriverHandleList[tmp_i] );
    }
    tmp_i = tmp_i + (1);
  }
  cx_OS0_Delayer_Run();
}
void cx_OS0_RunDriver100usList(void)
{
  for( t_uint8 tmp_i = 0; tmp_i < cx_OS0_Driver100usNumber; ) {
    cx_OS0_D_CALL( cx_OS0_Driver100usHandleList[tmp_i] );
    tmp_i = tmp_i + (1);
  }
}
void cx_OS0_D_CALL( void (*tmp_Handle)(void) )
{
  cx_OS0_s_Handle = tmp_Handle;
  (*cx_OS0_s_Handle)();
}
void cx_OS0_Start(void)
{
  cx_OS0_MACRO_TIMER_ON();
}
void cx_OS0_Schedule(void)
{
}
void cx_sys_delayer_delay_n_10us( t_uint8 tmp_t )
{
  t_uint16 _cx_lc_1 = tmp_t;
  for( t_uint16 _cx_lc_0 = 0; _cx_lc_0 < _cx_lc_1; _cx_lc_0++ ) {
    cx_sys_delayer_delay_n_1us( 10 );
  }
}
void cx_sys_delayer_delay_n_1us( t_uint8 tmp_t )
{
  delayMicroseconds( tmp_t );
}
void cx_sys_delayer_delay_ms( t_int32 tmp_t )
{
  t_uint16 _cx_lc_1 = tmp_t;
  for( t_uint16 _cx_lc_0 = 0; _cx_lc_0 < _cx_lc_1; _cx_lc_0++ ) {
    cx_sys_delayer_delay_n_10us( 100 );
  }
}
void cx_Sim_onInitDefault(void)
{
}
void cx_Sim_onDrawDefault(void)
{
}
void cx_Sim_onKeyEventDefault( t_bool tmp_down, t_int32 tmp_key )
{
}
t_int32 cx_Sim_crux_AddVar( t_int32 tmp_v )
{
  return 0;
}
t_int32 cx_Sim_crux_Run( t_int32 tmp_v )
{
  return 0;
}
void cx_Sim_OS_init(void)
{
  cx_Sim_onInitDefault();
}
void cx_Sim_OS_thread(void)
{
  t_int32 tmp_d = cx_Sim_crux_Run( 0 );
  if( tmp_d != 0 ) {
    t_int32 tmp_type = tmp_d / 1000;
    tmp_d = tmp_d % 1000;
    if( tmp_type == 1 ) {
      cx_Sim_onKeyEventDefault( 1, tmp_d );
    }
    if( tmp_type == 2 ) {
      cx_Sim_onKeyEventDefault( 0, tmp_d );
    }
  }
  cx_Sim_Clear();
  cx_Sim_onDrawDefault();
}
void cx_Sim_Clear(void)
{
  t_int32 tmp_d = cx_Sim_crux_Run( 10 );
}
void cx_Sim_DrawCircle( t_int32 tmp_x, t_int32 tmp_y, t_int32 tmp_r )
{
  t_int32 tmp_d;
  tmp_d = cx_Sim_crux_AddVar( tmp_x );
  tmp_d = cx_Sim_crux_AddVar( tmp_y );
  tmp_d = cx_Sim_crux_AddVar( tmp_r );
  tmp_d = cx_Sim_crux_Run( 11 );
}
void cx_Sim_FillCircle( t_int32 tmp_x, t_int32 tmp_y, t_int32 tmp_r )
{
  t_int32 tmp_d;
  tmp_d = cx_Sim_crux_AddVar( tmp_x );
  tmp_d = cx_Sim_crux_AddVar( tmp_y );
  tmp_d = cx_Sim_crux_AddVar( tmp_r );
  tmp_d = cx_Sim_crux_Run( 12 );
}
void cx_main0(void)
{
  cx_Setup();
  while( true ) {
    cx_Loop();
  }
}
void cx_Setup(void)
{
  cx_OS_VarInit();
  cx_OS0_OS_init();
  cx_kongzhiqiUNO_driver_OS_init();
  cx_bujindianjiqudongqi_driver_OS_init();
  cx_yanshiqi_driver_OS_init();
  cx_OS0_CreateDriver100us( &cx_bujindianjiqudongqi_driver_OS_run100us );
  cx_OS0_CreateDriver( &cx_kongzhiqiUNO_driver_OS_run, cx_kongzhiqiUNO_driver_OS_time );
  cx_OS0_Start();
}
void cx_Loop(void)
{
  if( cx_OS0_EnableSchedule ) {
    if( ((cx_kongzhiqiUNO_driver_OS_EventFlag >> 1) & 1) == 1 ) {
      cx_kongzhiqiUNO_driver_OS_EventFlag &= 253;
      if( cx_kongzhiqiUNO_fanfuzhixing_en_ && cx_kongzhiqiUNO_fanfuzhixing_flg_ == 0 ) {
        cx_kongzhiqiUNO_fanfuzhixing_flg_ = 1;
        cx_kongzhiqiUNO_fanfuzhixing();
      }
    }
  }
  cx_bujindianjiqudongqi_driver_OS_thread();
  cx_yanshiqi_driver_OS_thread();
  cx_kongzhiqiUNO_driver_OS_thread();
  if( cx_kongzhiqiUNO_fanfuzhixing_flg_ != 0 ) {
    cx_kongzhiqiUNO_fanfuzhixing();
  }
  cx_SYS_Loop = 1;
}
void cx_kongzhiqiUNO_fanfuzhixing(void)
{
  goto cx_kongzhiqiUNO_fanfuzhixing_end;
  cx_kongzhiqiUNO_fanfuzhixing_1:;
  cx_bujindianjiqudongqi_driver_power_on();
  cx_kongzhiqiUNO_driver_LightFlash();
  cx_bujindianjiqudongqi_driver_run_right_t( ((96) * (4)) );
  cx_OS0_CurrentTaskIndex = 0;
  cx_yanshiqi_driver_DelaySecond( ((t_int32)((1)) << 10) );
  cx_kongzhiqiUNO_fanfuzhixing_flg_ = 2;
  cx_kongzhiqiUNO_fanfuzhixing_2:;
  if( cx_OS0_Delayer_TarRunning( 0 ) ) {
    return;
  }
  cx_bujindianjiqudongqi_driver_run_left_t( ((96) * (4)) );
  cx_OS0_CurrentTaskIndex = 0;
  cx_yanshiqi_driver_DelaySecond( ((t_int32)((1)) << 10) );
  cx_kongzhiqiUNO_fanfuzhixing_flg_ = 3;
  cx_kongzhiqiUNO_fanfuzhixing_3:;
  if( cx_OS0_Delayer_TarRunning( 0 ) ) {
    return;
  }
  cx_bujindianjiqudongqi_driver_power_off();
  cx_kongzhiqiUNO_driver_LightClose();
  cx_OS0_CurrentTaskIndex = 0;
  cx_yanshiqi_driver_DelaySecond( ((t_int32)((1)) << 10) );
  cx_kongzhiqiUNO_fanfuzhixing_flg_ = 4;
  cx_kongzhiqiUNO_fanfuzhixing_4:;
  if( cx_OS0_Delayer_TarRunning( 0 ) ) {
    return;
  }
  cx_kongzhiqiUNO_fanfuzhixing_flg_ = 0;
  return;
  cx_kongzhiqiUNO_fanfuzhixing_end:;
  if( cx_kongzhiqiUNO_fanfuzhixing_flg_ == 1 ) {
    goto cx_kongzhiqiUNO_fanfuzhixing_1;
  }
  if( cx_kongzhiqiUNO_fanfuzhixing_flg_ == 2 ) {
    goto cx_kongzhiqiUNO_fanfuzhixing_2;
  }
  if( cx_kongzhiqiUNO_fanfuzhixing_flg_ == 3 ) {
    goto cx_kongzhiqiUNO_fanfuzhixing_3;
  }
  if( cx_kongzhiqiUNO_fanfuzhixing_flg_ == 4 ) {
    goto cx_kongzhiqiUNO_fanfuzhixing_4;
  }
}
void cx_OS_VarInit(void)
{
  cx_kongzhiqiUNO_fanfuzhixing_flg_ = 0;
  cx_kongzhiqiUNO_fanfuzhixing_en_ = 1;
  cx_SYS_Tick = 1;
  cx_CInsIndex = 8192;
}


//=====================================================================


void setup(void) {
  
  //这里添加用户的初始化, 如各个外设
  //...
  
  //初始化linkboy里的所有模块
  cx_Setup();
  
  //每经过1毫秒调用一次 lb_OS0_RunDriverList()
  //必须要安装 mstimer2的库, 否则编译报错!!!!!
  //如果需要用其他定时器驱动, 这里可以换成对应定时器的设置函数
  MsTimer2::set( 1, cx_OS0_RunDriverList );
  MsTimer2::start();
}

void loop(void) {

  //这里应尽可能快的反复调用lb_loop
  cx_Loop();

  //这里添加用户自己的程序, linkboy里的程序和用户程序同时执行, 互不影响
  //...
}

Linkboy仿真编程

在这里插入图片描述

实验记录视频

【花雕学编程】实验之二:控制步进电机正向与反向转动】

https://www.bilibili.com/video/BV1yo8gezEjg/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987

【花雕学编程】实验之二:控制步进电机正向与反向转动

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
在「雕爷编程Arduino动手做的实验中,四位遥控是指使用了2262/2272四路无线遥控套件M4非锁接收板配合四键无线遥控器模组的实验。根据提供的引用内容,有两个示例程序可以用来接收遥控信号。 第一个示例程序是实验程序二,在Arduino参考开源代码中给出了实现接收的简单示例。程序通过RCSwitch库实现了接收器的初始化,然后进入循环,在循环中判断是否有可用的遥控信号,如果有,则获取接收到的值,并显示在串口上。 第二个示例程序是实验程序一,也是通过RCSwitch库实现的。和实验程序二类似,程序初始化了接收器,并进入循环。在循环中,如果有可用的遥控信号,则调用output函数,将接收到的值、位长、延迟和原始数据显示在串口上。 根据这两个示例程序,你可以根据实际情况选择使用其中的一个或两个来进行四位遥控实验。你需要根据引脚连接和遥控器的编码方式进行相应的配置和调试。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【雕爷编程Arduino动手做(103)---四路无线遥控套件](https://blog.csdn.net/weixin_41659040/article/details/125220869)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值