标题:
基于STM32平台GRBL V1.1F源代码IAR工程文件
[打印本页]
作者:
hilam
时间:
2018-7-26 20:02
标题:
基于STM32平台GRBL V1.1F源代码IAR工程文件
基于STM32平台GRBL V1.1F源代码IAR工程文件,效果非常棒,比AVR328和2560效果好多了,用机器实际测试过,可以直接使用。
0.png
(5.69 KB, 下载次数: 90)
下载附件
2018-7-27 00:21 上传
单片机源程序如下:
/*
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虚拟串口,不再需要外接转换芯片,但其他功能都没有调试,存在严重问题。此次移植了
grbl1.1f-20170801,同时进行了少许调试,目前通讯正常,步进电机接口、冷却和主轴正常,同时
加入了四相五线步进接口(x和y),这些在cpu_map.h中有相应定义。但手头没有机器,尚未实机测
试,慎用!
如有重大问题,请联系 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 */
}
复制代码
所有资料51hei提供下载:
grbl1.1f-stm32f103c8-master.zip
(471.01 KB, 下载次数: 399)
2018-7-26 20:02 上传
点击文件名下载附件
基于STM32平台GRBL V1.1F源代码IAR工程文件
下载积分: 黑币 -5
作者:
lxj199610
时间:
2018-9-2 11:37
非常感谢分享,可以移植提速了。
作者:
wanghe2891830
时间:
2018-9-24 08:44
学习下
作者:
Hcywzq
时间:
2018-10-23 11:04
正好需要
作者:
xxldhxx
时间:
2018-11-8 19:05
也在学习感谢楼主,正好要做个机器一起来交流下可好.
作者:
年华七堇1
时间:
2018-12-21 15:13
1 、没有工程文件 2 、 编译不通过
作者:
zpwang
时间:
2018-12-30 21:49
学习一下这个东西。
作者:
caitou66
时间:
2019-1-24 15:37
感谢分享
作者:
imaginever
时间:
2019-6-6 16:38
正在学习中,感谢分享
作者:
storyli
时间:
2019-7-11 14:11
学习下
作者:
zxq_gd
时间:
2019-7-28 22:44
谢谢分享
作者:
plj213
时间:
2019-7-30 09:52
感谢楼主分享。。。
作者:
szdszq
时间:
2019-7-30 15:18
非常感谢分享,可以移植提速了。
作者:
wyc520
时间:
2019-11-2 14:16
学习下
作者:
fushandz
时间:
2019-11-7 13:51
学习下
作者:
106721743
时间:
2019-11-8 16:54
下载来度度,不知道能不能用,谢谢了
作者:
mirchell
时间:
2019-11-21 16:36
0.9j版本正在调试中,搞好了再来玩玩这个
作者:
55976708
时间:
2020-2-13 10:19
有硬件接线图吗
作者:
HWL0541
时间:
2020-2-13 10:48
谢谢楼主分享
作者:
yunhai4321
时间:
2024-8-2 22:49
探针,限位都有问题
作者:
yunhai4321
时间:
2024-8-2 22:51
探针,限位都不能用
作者:
rayin
时间:
2024-8-29 07:30
下载学习一下.
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1