void Mclib_API_init(void) { ENC_Init(); SVPWM_3ShuntInit(); TB_Init(); //#ifdef BRAKE_RESISTOR // MCL_Brake_Init(); //#endif /* TIM1 Counter Clock stopped when the core is halted */ DBGMCU_Config(DBGMCU_TIM1_STOP, ENABLE); // Init Bus voltage and Temperature average MCL_Init_Arrays(); Res_f=1; }
// Main void main (void) { // Init the system clock SystemInitClock(); // Enable the peripherals SystemEnablePeripheral(PERIPHERAL_AFIO); SystemEnablePeripheral(PERIPHERAL_IOPA); SystemEnablePeripheral(PERIPHERAL_IOPB); SystemEnablePeripheral(PERIPHERAL_IOPC); SystemEnablePeripheral(PERIPHERAL_IOPD); SystemEnablePeripheral(PERIPHERAL_IOPE); SystemEnablePeripheral(PERIPHERAL_DMA1); // Init the FLASH chip and SPI module // Init the ENC chip and SPI module FLASH_Init(); SPI1_Init(); SPI2_Init(); ENC_Init(); // Init kernel KERNEL_Init(); // Create tasks KERNEL_AddTask(&TaskDescriptor_TaskENC); // Start kernel (this function never returns) KERNEL_Start(); }
void setup() { // Serial.begin(9600); // init resetData(); // dec_init(); // pixel_segment = 0; // pixel_count = 0; // pixel_start = 0; // for (uint8_t i = 0; i < DEC_MAX_NUMBER_OF_PIXELS_PER_LIGHT_STRIP; ++i) // { // red_buffer[i] = (uint8_t)0; // green_buffer[i] = (uint8_t)0; // blue_buffer[i] = (uint8_t)0; // } CPU_PRESCALE(0); /* Run at 16 MHz */ DDRD = _BV(DDD6); /* Teensy onboard Led Enable */ /* ADC */ DDRF = ~_BV(DDF0); /* F0 as Input */ //PORTF = _BV(PORTF0); /* Enable Pullup */ DIDR0 = _BV(ADC0D); /* Disable Digital Pin */ // initialize the digital pin as an output to blink the LED. // pinMode(led_pin, OUTPUT); dbg_init ; /* If Debug State On, Init USB */ SPI_Init(SPI_DP2, SPI_PRESC_1); /* AVR SPI Init */ do { ENC_Init(MACAddr); /* ENC28J60 Init */ _delay_ms(500); aux_init = ENC_RevID; } while (!aux_init); ENC_LEDInit; /* ENC Leds Init */ is_setup = 0; }
/******************************************************************************* * Function Name : main * Description : Main program. * Input : None * Output : None * Return : None *******************************************************************************/ int main(void) { SystemInit(); /*速度反馈初始化*/ ENC_Init( ); /*电流反馈初始化*/ SVPWM_3ShuntInit(); /*时基初始化,并启动TIM6计算速度,初始化PID*/ TB_Init( ); Tim6_Init( ); PID_Init(&PID_Torque_InitStructure, &PID_Flux_InitStructure, &PID_Speed_InitStructure); /*温度,电压数组初始化*/ MCL_Init_Arrays(); /*交互界面初始化*/ KEYS_Init( ); LCD_Display_init(); /*-------------------*/ Res_f=1; //上电完成 //串口示波器初始化 usart_init(115200); while(1) { /*UI显示,以及电源报警,用户管理*/ Display_LCD( ); MCL_ChkPowerStage( ); KEYS_process( ); /*状态机开启运行*/ switch (State) { case IDLE: //通过sel按键进入INIT ,在WAIT和FAULT中进入IDEL break; case INIT: MCL_Init( );//初始化电机控制层 TB_Set_StartUp_Timeout(3000); State = START; break; case START: //passage to state RUN is performed by startup functions; break; case RUN: //电机运行过程中,检测速度反馈是否存在问题 if(ENC_ErrorOnFeedback() == TRUE) { MCL_SetFault(SPEED_FEEDBACK); } break; case STOP: //关闭TIM1的输出,状态转为等待,停止电流检测,设置Valpha和Vbeta为0,计算三相占空比 TIM_CtrlPWMOutputs(TIM1, DISABLE); State = WAIT; SVPWM_3ShuntAdvCurrentReading(DISABLE); Stat_Volt_alfa_beta.qV_Component1 = Stat_Volt_alfa_beta.qV_Component2 = 0; SVPWM_3ShuntCalcDutyCycles(Stat_Volt_alfa_beta); TB_Set_Delay_500us(2000); // 1 sec delay break; case WAIT: // 等待速度为零时,将状态转为IDEL if (TB_Delay_IsElapsed( ) == TRUE) { if(ENC_Get_Mechanical_Speed( ) ==0) { State = IDLE; } } break; case FAULT: //状态变为IDEL,全局变量设为第一次启动 if (MCL_ClearFault( ) == TRUE) { if(wGlobal_Flags & SPEED_CONTROL == SPEED_CONTROL) { //速度控制模式 bMenu_index = CONTROL_MODE_MENU_1; } else { //力矩控制模式 bMenu_index = CONTROL_MODE_MENU_6; } State = IDLE; wGlobal_Flags |= FIRST_START; Hall_Start_flag=0; } break; default: break; } usart_watcher(Speed_Iq_Id_watch); /********End of Usart_watch**************/ } }
int main(void) { utDisInt; utInitInt(); utInitSys(); utEnInt; /* Can bus init */ can_Init(); /* iobus init */ iobus_init(); /* 步进电机初始化 */ #if defined(motor_device) /* L6470端口及SPI初始化 */ dSPIN_Peripherals_Init(); /* L6470复位 */ dSPIN_Reset_And_Standby(dSPIN_Device_All); /* L6470中断初始化 */ dSPIN_Interrupt_Channel_Config(); /* 电机参数初始化 */ motor_init_set(); ENC_Init(); #endif utPrt("********************************\r\n"); utPrt("CPU: STM32F103RCT6 at 72 MHz \r\n"); utPrt("Board: TMCS Board (Version2) \r\n"); utPrt("Editor: Tsui \r\n"); utPrt("Compant: TMCS \r\n"); utPrt("Shell: Shell Version1 \r\n"); utPrt("Compile Date: %s \r\n",__DATE__); utPrt("Compile TIME: %s \r\n",__TIME__); utPrt("********************************\r\n"); /* set can baud rate at 250Kbit */ can_set_baudrate(can_parameter._t_bit_rate); #if 0 g_tCanTxMsg.DLC = 3; g_tCanTxMsg.Data[0] = 0x11; g_tCanTxMsg.Data[1] = 0x22; g_tCanTxMsg.Data[2] = 0x33; SendCanMsg(&g_tCanTxMsg); #endif DetectCal(); iobus_reload(); utDelay1s(1); ENC_Clean(); /* Start os */ utPrt("Start utOs......\n"); utStartOS(); }