diff --git a/changelog.md b/changelog.md
index 3655604..ff6c4e6 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,19 @@
## grblHAL changelog
+20251020
+
+Core:
+
+* Updated some pointer casts to get warning free compilation for 64-bit targets.
+
+* A few tweaks to get rid of warnings for some driver/board/configuration combinations.
+
+Drivers:
+
+* STM32F4xx: added support for U and V axes, untested. Ref. issue [#260](https://github.com/grblHAL/STM32F4xx/issues/260).
+
+---
+
Build 20251018
Core:
@@ -12,7 +26,7 @@ Core:
Drivers:
-* ESP32: Changed SPI and SD card pin symbols to "standard" naming convention.
+* ESP32: changed SPI and SD card pin symbols to "standard" naming convention.
* RP2040: fix for analog out auxiliary I/O not working. Ref. issue [#154](https://github.com/grblHAL/RP2040/issues/154).
diff --git a/nvs_buffer.c b/nvs_buffer.c
index ec81970..42a469d 100644
--- a/nvs_buffer.c
+++ b/nvs_buffer.c
@@ -313,7 +313,7 @@ nvs_address_t nvs_alloc (size_t size)
size += NVS_CRC_BYTES; // add room for checksum.
if(hal.nvs.driver_area.size + size < (nvs_size_max - GRBL_NVS_SIZE)) {
- mem_address = (uint8_t *)((uint32_t)(mem_address - 1) | 0x03) + 1; // Align to word boundary
+ mem_address = (uint8_t *)((uintptr_t)(mem_address - 1) | 0x03) + 1; // Align to word boundary
addr = mem_address - nvsbuffer;
mem_address += size;
hal.nvs.driver_area.size = mem_address - hal.nvs.driver_area.mem_address;
diff --git a/pin_bits_masks.h b/pin_bits_masks.h
index 74ef1ab..1cf7809 100644
--- a/pin_bits_masks.h
+++ b/pin_bits_masks.h
@@ -242,12 +242,10 @@ static inline xbar_t *aux_ctrl_claim_port (aux_ctrl_t *aux_ctrl)
static inline aux_ctrl_t *aux_ctrl_remap_explicit (aux_gpio_t gpio, uint8_t port, void *input)
{
+ int_fast8_t idx;
aux_ctrl_t *ctrl_pin = NULL;
if(sizeof(aux_ctrl) / sizeof(aux_ctrl_t)) {
-
- uint_fast8_t idx;
-
for(idx = 0; ctrl_pin == NULL && idx < sizeof(aux_ctrl) / sizeof(aux_ctrl_t) && aux_ctrl[idx].gpio.pin != 0xFF; idx++) {
if(aux_ctrl[idx].gpio.pin == gpio.pin && aux_ctrl[idx].gpio.port == gpio.port) {
ctrl_pin = &aux_ctrl[idx];
@@ -359,7 +357,7 @@ static inline control_signals_t aux_ctrl_scan_status (control_signals_t signals)
if(aux_ctrl[idx].port != IOPORT_UNASSIGNED) {
#ifdef GRBL_ESP32 // Snowflake guru workaround
if(hal.port.wait_on_input(Port_Digital, aux_ctrl[idx].port, WaitMode_Immediate, FZERO) == 1)
- signals.mask |= aux_ctrl[idx].cap.mask;
+ signals.mask |= aux_ctrl[idx].signal.mask;
#else
if(hal.port.wait_on_input(Port_Digital, aux_ctrl[idx].port, WaitMode_Immediate, 0.0f) == 1)
signals.mask |= aux_ctrl[idx].signal.mask;
diff --git a/platform.h b/platform.h
index 19010a3..7309702 100644
--- a/platform.h
+++ b/platform.h
@@ -3,7 +3,7 @@
Part of grblHAL
- Copyright (c) 2021-2024 Terje Io
+ Copyright (c) 2021-2025 Terje Io
grblHAL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -30,7 +30,7 @@
#endif
#if defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F407xx) || defined(STM32F411xE) || \
- defined(STM32F412Vx) || defined(STM32F446xx)
+ defined(STM32F412Vx) || defined(STM32F429xx) || defined(STM32F446xx)
#define STM32_F4_PLATFORM
#endif
@@ -46,7 +46,7 @@
#define STM32_PLATFORM
#endif
-#if defined(STM32_PLATFORM) || defined(__LPC17XX__) || defined(__IMXRT1062__)
+#if defined(STM32_PLATFORM) || defined(__LPC17XX__) || defined(__IMXRT1062__) || defined(__SAM3X8E__)
#define UINT32FMT "%lu"
#define UINT32SFMT "lu"
#else
diff --git a/probe.c b/probe.c
index 5c8a9a1..319bf08 100644
--- a/probe.c
+++ b/probe.c
@@ -215,7 +215,7 @@ bool probe_add (probe_id_t probe_id, uint8_t port, pin_irq_mode_t irq_mode, void
void probe_connected_event (void *data)
{
if(hal.probe.connected_toggle) {
- if((uint32_t)data == 2)
+ if((uintptr_t)data == 2)
hal.probe.connected_toggle();
else {
probe_state_t state = hal.probe.get_state();
diff --git a/stream.c b/stream.c
index 274330f..aa71624 100644
--- a/stream.c
+++ b/stream.c
@@ -549,7 +549,7 @@ bool stream_mpg_register (const io_stream_t *stream, bool rx_only, stream_write_
static void report_mpg_mode (void *data)
{
- protocol_enqueue_realtime_command((char)((uint32_t)data));
+ protocol_enqueue_realtime_command((char)((uintptr_t)data));
}
bool stream_mpg_enable (bool on)
@@ -602,7 +602,7 @@ bool stream_mpg_enable (bool on)
system_add_rt_report(Report_MPGMode);
// Force a realtime status report, all reports when MPG mode active
- task_add_delayed(report_mpg_mode, (void *)(on ? CMD_STATUS_REPORT_ALL : CMD_STATUS_REPORT), 5);
+ task_add_delayed(report_mpg_mode, (void *)((uintptr_t)(on ? CMD_STATUS_REPORT_ALL : CMD_STATUS_REPORT)), 5);
return true;
}