首先看引脚映射,关于引脚的定义都在pin_map.h中
其实感觉GRBL的引脚这地做的不太人性,因为他的几个引脚都是用的同一个IO通道且是挨在一起的,程序中对引脚的操作也是按照挨在一起的算法进行的,如果用的是不一个通道IO
且重复的话就不适合了,例如如果X_STEP使用A0 Y_STEP使用B0这样就会出现错误,可以使用不同通道,但是要确保X_STEP_BIT ,Y_STEP_BIT , Z_STEP_BIT ,X_DIRECTION_BIT ,Y_DIRECTION_BIT ,Z_DIRECTION_BIT 使用的是不同位,这是默认的情况,也可以在参数中修改这些bit的具体位置$6的值就是这六个引脚的映射
pin_map.h
[cpp] view plain copy
- /*
- pin_map.h - Pin mapping configuration file
- Part of Grbl
- The MIT License (MIT)
- GRBL(tm) - Embedded CNC g-code interpreter and motion-controller
- Copyright (c) 2013 Sungeun K. Jeon
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
- */
- /* The pin_map.h file serves as a central pin mapping settings file for different processor
- types, i.e. AVR 328p or AVR Mega 2560. Grbl officially supports the Arduino Uno, but the
- other supplied pin mappings are supplied by users, so your results may vary. */
- #ifndef pin_map_h
- #define pin_map_h
- //add by zjk for stm32
- #ifdef PIN_MAP_STM32 // AVR 328p, Officially supported by Grbl.
- // Serial port pins
- // #define SERIAL_RX USART_RX_vect
- // #define SERIAL_UDRE USART_UDRE_vect
- // NOTE: All step bit and direction pins must be on the same port.
- // #define STEPPING_DDR DDRD
- // #define STEPPING_PORT PORTD
- // #define X_STEP_BIT 2 // Uno Digital Pin 2
- // #define Y_STEP_BIT 3 // Uno Digital Pin 3
- // #define Z_STEP_BIT 4 // Uno Digital Pin 4
- // #define X_DIRECTION_BIT 5 // Uno Digital Pin 5
- // #define Y_DIRECTION_BIT 6 // Uno Digital Pin 6
- // #define Z_DIRECTION_BIT 7 // Uno Digital Pin 7
- // #define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // All step bits
- // #define DIRECTION_MASK ((1<<X_DIRECTION_BIT)|(1<<Y_DIRECTION_BIT)|(1<<Z_DIRECTION_BIT)) // All direction bits
- // #define STEPPING_MASK (STEP_MASK | DIRECTION_MASK) // All stepping-related bits (step/direction)
- #define X_STEP_PORT GPIOA->ODR
- #define Y_STEP_PORT GPIOD->ODR
- #define Z_STEP_PORT
- #define X_STEP_BIT 8 // PA8
- #define Y_STEP_BIT 15 // PD15
- #define Z_STEP_BIT
- #define X_STEP_MASK (1<<X_STEP_BIT)
- #define Y_STEP_MASK (1<<Y_STEP_BIT)
- #define Z_STEP_MASK (1<<Z_STEP_BIT)
- #define X_STEP_TRASLATE(a) ((a>>2)<<X_STEP_BIT)
- #define Y_STEP_TRASLATE(a) ((a>>3)<<Y_STEP_BIT)
- #define Z_STEP_TRASLATE(a) ((a>>4)<<Z_STEP_BIT)
- #define X_DIRECTION_PORT GPIOA->ODR
- #define Y_DIRECTION_PORT GPIOA->ODR
- #define Z_DIRECTION_PORT
- #define X_DIRECTION_BIT 6 // PC6
- #define Y_DIRECTION_BIT 2 // PA2
- #define Z_DIRECTION_BIT
- #define X_DIRECTION_MASK (1<<X_DIRECTION_BIT)
- #define Y_DIRECTION_MASK (1<<Y_DIRECTION_BIT)
- #define Z_DIRECTION_MASK (1<<Z_DIRECTION_BIT)
- #define X_DIRECTION_TRASLATE(a) ((a>>5)<<X_DIRECTION_BIT)
- #define Y_DIRECTION_TRASLATE(a) (a)
- #define Z_DIRECTION_TRASLATE(a) ((a>>7)<<Z_DIRECTION_BIT)
- #define X_STEP_EN GPIO_SetBits(GPIOA , GPIO_Pin_8)
- #define X_STEP_DIS GPIO_ResetBits(GPIOA , GPIO_Pin_8)
- #define Y_STEP_EN GPIO_SetBits(GPIOD , GPIO_Pin_15)
- #define Y_STEP_DIS GPIO_ResetBits(GPIOD , GPIO_Pin_15)
- #define STEPPING_EN X_STEP_EN;Y_STEP_EN
- #define STEPPING_DIS X_STEP_DIS;Y_STEP_DIS
- #define X_DIRECTION_EN GPIO_SetBits(GPIOA , GPIO_Pin_6)
- #define X_DIRECTION_DIS GPIO_ResetBits(GPIOA , GPIO_Pin_6)
- #define Y_DIRECTION_EN GPIO_SetBits(GPIOA , GPIO_Pin_2)
- #define Y_DIRECTION_DIS GPIO_ResetBits(GPIOA , GPIO_Pin_2)
- #define DIRECTION_EN X_DIRECTION_EN;Y_DIRECTION_EN
- #define DIRECTION_DIS X_DIRECTION_DIS;Y_DIRECTION_DIS
- // #define STEPPERS_DISABLE_DDR DDRB
- // #define STEPPERS_DISABLE_PORT PORTB
- // #define STEPPERS_DISABLE_BIT 0 // Uno Digital Pin 8
- // #define STEPPERS_DISABLE_MASK (1<<STEPPERS_DISABLE_BIT)
- #define STEPPERS_DISABLE_EN GPIO_SetBits(GPIOA , GPIO_Pin_3);GPIO_SetBits(GPIOA , GPIO_Pin_4)
- #define STEPPERS_DISABLE_DIS GPIO_ResetBits(GPIOA , GPIO_Pin_3);GPIO_ResetBits(GPIOA , GPIO_Pin_4)
- // NOTE: All limit bit pins must be on the same port
- // #define LIMIT_DDR DDRB
- // #define LIMIT_PIN PINB
- // #define LIMIT_PORT PORTB
- // #define X_LIMIT_BIT 1 // Uno Digital Pin 9
- // #define Y_LIMIT_BIT 2 // Uno Digital Pin 10
- // #define Z_LIMIT_BIT 3 // Uno Digital Pin 11
- // #define LIMIT_INT PCIE0 // Pin change interrupt enable pin
- // #define LIMIT_INT_vect PCINT0_vect
- // #define LIMIT_PCMSK PCMSK0 // Pin change interrupt register
- // #define LIMIT_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)) // All limit bits
- //带刀轴主轴电机
- // #define SPINDLE_ENABLE_DDR DDRB
- // #define SPINDLE_ENABLE_PORT PORTB
- // #define SPINDLE_ENABLE_BIT 4 // Uno Digital Pin 12
- //
- // #define SPINDLE_DIRECTION_DDR DDRB
- // #define SPINDLE_DIRECTION_PORT PORTB
- // #define SPINDLE_DIRECTION_BIT 5 // Uno Digital Pin 13 (NOTE: D13 can't be pulled-high input due to LED.)
- // #define COOLANT_FLOOD_DDR DDRC
- // #define COOLANT_FLOOD_PORT PORTC
- // #define COOLANT_FLOOD_BIT 3 // Uno Analog Pin 3
- // NOTE: Uno analog pins 4 and 5 are reserved for an i2c interface, and may be installed at
- // a later date if flash and memory space allows.
- // #define ENABLE_M7 // Mist coolant disabled by default. Uncomment to enable.
- #ifdef ENABLE_M7
- #define COOLANT_MIST_DDR DDRC
- #define COOLANT_MIST_PORT PORTC
- #define COOLANT_MIST_BIT 4 // Uno Analog Pin 4
- #endif
- // NOTE: All pinouts pins must be on the same port
- #define PINOUT_DDR DDRC
- #define PINOUT_PIN PINC
- #define PINOUT_PORT PORTC
- #define PIN_RESET 0 // Uno Analog Pin 0
- #define PIN_FEED_HOLD 1 // Uno Analog Pin 1
- #define PIN_CYCLE_START 2 // Uno Analog Pin 2
- #define PINOUT_INT PCIE1 // Pin change interrupt enable pin
- #define PINOUT_INT_vect PCINT1_vect
- #define PINOUT_PCMSK PCMSK1 // Pin change interrupt register
- #define PINOUT_MASK ((1<<PIN_RESET)|(1<<PIN_FEED_HOLD)|(1<<PIN_CYCLE_START))
- #endif
- //end zjk
- #ifdef PIN_MAP_ARDUINO_UNO // AVR 328p, Officially supported by Grbl.
- // Serial port pins
- #define SERIAL_RX USART_RX_vect
- #define SERIAL_UDRE USART_UDRE_vect
- // NOTE: All step bit and direction pins must be on the same port.
- #define STEPPING_DDR DDRD
- #define STEPPING_PORT PORTD
- #define X_STEP_BIT 2 // Uno Digital Pin 2
- #define Y_STEP_BIT 3 // Uno Digital Pin 3
- #define Z_STEP_BIT 4 // Uno Digital Pin 4
- #define X_DIRECTION_BIT 5 // Uno Digital Pin 5
- #define Y_DIRECTION_BIT 6 // Uno Digital Pin 6
- #define Z_DIRECTION_BIT 7 // Uno Digital Pin 7
- #define STEP_MASK ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // All step bits
- #define DIRECTION_MASK ((1<<X_DIRECTION_BIT)|(1<<Y_DIRECTION_BIT)|(1<<Z_DIRECTION_BIT)) // All direction bits
- #define STEPPING_MASK (STEP_MASK | DIRECTION_MASK) // All stepping-related bits (step/direction)
- #define STEPPERS_DISABLE_DDR DDRB
- #define STEPPERS_DISABLE_PORT PORTB
- #define STEPPERS_DISABLE_BIT 0 // Uno Digital Pin 8
- #define STEPPERS_DISABLE_MASK (1<<STEPPERS_DISABLE_BIT)
- // NOTE: All limit bit pins must be on the same port
- #define LIMIT_DDR DDRB
- #define LIMIT_PIN PINB
- #define LIMIT_PORT PORTB
- #define X_LIMIT_BIT 1 // Uno Digital Pin 9
- #define Y_LIMIT_BIT 2 // Uno Digital Pin 10
- #define Z_LIMIT_BIT 3 // Uno Digital Pin 11
- #define LIMIT_INT PCIE0 // Pin change interrupt enable pin
- #define LIMIT_INT_vect PCINT0_vect
- #define LIMIT_PCMSK PCMSK0 // Pin change interrupt register
- #define LIMIT_MASK ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)) // All limit bits
- #define SPINDLE_ENABLE_DDR DDRB
- #define SPINDLE_ENABLE_PORT PORTB
- #define SPINDLE_ENABLE_BIT 4 // Uno Digital Pin 12
- #define SPINDLE_DIRECTION_DDR DDRB
- #define SPINDLE_DIRECTION_PORT PORTB
- #define SPINDLE_DIRECTION_BIT 5 // Uno Digital Pin 13 (NOTE: D13 can't be pulled-high input due to LED.)
- #define COOLANT_FLOOD_DDR DDRC
- #define COOLANT_FLOOD_PORT PORTC
- #define COOLANT_FLOOD_BIT 3 // Uno Analog Pin 3
- // NOTE: Uno analog pins 4 and 5 are reserved for an i2c interface, and may be installed at
- // a later date if flash and memory space allows.
- // #define ENABLE_M7 // Mist coolant disabled by default. Uncomment to enable.
- #ifdef ENABLE_M7
- #define COOLANT_MIST_DDR DDRC
- #define COOLANT_MIST_PORT PORTC
- #define COOLANT_MIST_BIT 4 // Uno Analog Pin 4
- #endif
|