ain()主函数首先执行下面初始化函数
serial_init(); // Setup serial baud rate and interrupts
settings_init(); // Load Grbl settings from EEPROM
stepper_init(); // 配置步进方向和中断定时器
system_init(); // 配置引脚分配别针和pin-change中断
memset(&sys, 0, sizeof(system_t)); // Clear all system variables
sys.abort = true; // Set abort to complete initialization 完成初始化设置中止
sei(); // Enable interrupts
#ifdef HOMING_INIT_LOCK //宏运算(settings.flags & (1 << 4)) != 0结果flags等于执行sys.state = STATE_ALARM
//系统状态赋值为报警状态
if (bit_istrue(settings.flags,BITFLAG_HOMING_ENABLE)) { sys.state = STATE_ALARM; }
#endif
_____________________________________________________________________________________________________________________________________
接下来是一些主要初始化循环
for(;;) {
serial_reset_read_buffer(); // Clear serial read buffer
gc_init(); // Set g-code parser to default state
spindle_init(); //主轴
coolant_init(); //冷却液
limits_init(); //极限开关
probe_init(); //探测
plan_reset(); // Clear block buffer and planner variables 清晰块缓冲区和规划师变量
st_reset(); // Clear stepper subsystem variables. 清晰的步进系统变量。
// Sync cleared gcode and planner positions to current system position. 同步清除gcode和策划师职位当前系统位置。
plan_sync_position();
gc_sync_position();
// Reset system variables.
sys.abort = false; //系统中止标志
sys_rt_exec_state = 0; //系统执行标志状态变量状态位清零。
sys_rt_exec_alarm = 0; //系统执行警报标志变量清零。
sys.suspend = false; //系统暂停标志位,取消,和安全的门。
sys.soft_limit = false; //系统限制标志状态机复位。(布尔)
protocol_main_loop(); //主协议循环
} //
___________________________________________________________________________
2022-03-25 18:48:03
14KB
grbl
1