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仿真编程
实验记录视频
【花雕学编程】实验之二:控制步进电机正向与反向转动】
【花雕学编程】实验之二:控制步进电机正向与反向转动