grbl stm32f4 移植工程包:
0.png (37.27 KB, 下載次數(shù): 42)
下載附件
2018-9-14 02:44 上傳
單片機源程序如下:
- /*
- main.c - An embedded CNC Controller with rs274/ngc (g-code) support
- Part of Grbl
- Copyright (c) 2011-2016 Sungeun K. Jeon for Gnea Research LLC
- Copyright (c) 2009-2011 Simen Svale Skogsrud
- Grbl is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
- Grbl is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with Grbl. If not, see <http://www.gnu.org/licenses/>.
- */
- /*
- 之前在github上看到了grbl-0.9j在stm32上的移植,于是照貓畫老虎,移植了grbl1.1f-20170131,
- 增加了USB虛擬串口,不再需要外接轉(zhuǎn)換芯片,但其他功能都沒有調(diào)試,存在嚴(yán)重問題。此次移植了
- grbl1.1f-20170801,同時進(jìn)行了少許調(diào)試,目前通訊正常,步進(jìn)電機接口、冷卻和主軸正常,同時
- 加入了四相五線步進(jìn)接口(x和y),這些在cpu_map.h中有相應(yīng)定義。但手頭沒有機器,尚未實機測
- 試,慎用!
- 如有重大問題,請聯(lián)系 tuoqiang@outlook.com
- */
- #include "grbl.h"
- // Declare system global variable structure
- system_t sys;
- int32_t sys_position[N_AXIS]; // Real-time machine (aka home) position vector in steps.
- int32_t sys_probe_position[N_AXIS]; // Last probe position in machine coordinates and steps.
- volatile uint8_t sys_probe_state; // Probing state value. Used to coordinate the probing cycle with stepper ISR.
- volatile uint8_t sys_rt_exec_state; // Global realtime executor bitflag variable for state management. See EXEC bitmasks.
- volatile uint8_t sys_rt_exec_alarm; // Global realtime executor bitflag variable for setting various alarms.
- volatile uint8_t sys_rt_exec_motion_override; // Global realtime executor bitflag variable for motion-based overrides.
- volatile uint8_t sys_rt_exec_accessory_override; // Global realtime executor bitflag variable for spindle/coolant overrides.
- #ifdef DEBUG
- volatile uint8_t sys_rt_exec_debug;
- #endif
- int main(void)
- {
- //USB init
- //Delay Init
- //GPIO CLK init
- Hardware_Init();
-
- // Initialize system upon power-up.
- serial_init(); // Setup serial baud rate and interrupts
- settings_init(); // Load Grbl settings from EEPROM
- stepper_init(); // Configure stepper pins and interrupt timers
- system_init(); // Configure pinout pins and pin-change interrupt
- memset(sys_position,0,sizeof(sys_position)); // Clear machine position.
- asm("cpsie i"); // Enable interrupts
- // Initialize system state.
- #ifdef FORCE_INITIALIZATION_ALARM
- // Force Grbl into an ALARM state upon a power-cycle or hard reset.
- sys.state = STATE_ALARM;
- #endif
-
- // Check for power-up and set system alarm if homing is enabled to force homing cycle
- // by setting Grbl's alarm state. Alarm locks out all g-code commands, including the
- // startup scripts, but allows access to settings and internal commands. Only a homing
- // cycle '$H' or kill alarm locks '$X' will disable the alarm.
- // NOTE: The startup script will run after successful completion of the homing cycle, but
- // not after disabling the alarm locks. Prevents motion startup blocks from crashing into
- // things uncontrollably. Very bad.
- #ifdef HOMING_INIT_LOCK
- if (bit_istrue(settings.flags,BITFLAG_HOMING_ENABLE)) { sys.state = STATE_ALARM; }
- #endif
- // Grbl initialization loop upon power-up or a system abort. For the latter, all processes
- // will return to this loop to be cleanly re-initialized.
- for(;;) {
- // Reset system variables.
- uint8_t prior_state = sys.state;
- memset(&sys, 0, sizeof(system_t)); // Clear system struct variable.
- sys.state = prior_state;
- sys.f_override = DEFAULT_FEED_OVERRIDE; // Set to 100%
- sys.r_override = DEFAULT_RAPID_OVERRIDE; // Set to 100%
- sys.spindle_speed_ovr = DEFAULT_SPINDLE_SPEED_OVERRIDE; // Set to 100%
- memset(sys_probe_position,0,sizeof(sys_probe_position)); // Clear probe position.
- sys_probe_state = 0;
- sys_rt_exec_state = 0;
- sys_rt_exec_alarm = 0;
- sys_rt_exec_motion_override = 0;
- sys_rt_exec_accessory_override = 0;
- // Reset Grbl primary systems.
- 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.
- plan_sync_position();
- gc_sync_position();
- // Print welcome message. Indicates an initialization has occured at power-up or with a reset.
- report_init_message();
- // Start Grbl main loop. Processes program inputs and executes them.
- protocol_main_loop();
- }
- //return 0; /* Never reached */
- }
復(fù)制代碼
所有資料51hei提供下載:
grbl1.1f-stm32f103c8-master.zip
(471.01 KB, 下載次數(shù): 74)
2018-9-7 07:28 上傳
點擊文件名下載附件
grbl 下載積分: 黑幣 -5
|