diff --git a/CMakeLists.txt b/CMakeLists.txt index 735cf22..66add69 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,12 @@ add_subdirectory(blink) # Add hello world example add_subdirectory(hello_world) +add_compile_options(-Wall + -Wno-format # int != int32_t as far as the compiler is concerned because gcc has int32_t as long int + -Wno-unused-function # we have some for the docs that aren't called + -Wno-maybe-uninitialized + ) + # Hardware-specific examples in subdirectories: add_subdirectory(adc) add_subdirectory(clocks) diff --git a/i2c/lcd_1602_i2c/lcd_1602_i2c.c b/i2c/lcd_1602_i2c/lcd_1602_i2c.c index c23a77f..7ab27fe 100644 --- a/i2c/lcd_1602_i2c/lcd_1602_i2c.c +++ b/i2c/lcd_1602_i2c/lcd_1602_i2c.c @@ -144,7 +144,7 @@ int main() { lcd_init(); - static uint8_t *message[] = + static char *message[] = { "RP2040 by", "Raspberry Pi", "A brand new", "microcontroller", diff --git a/multicore/multicore_runner/multicore_runner.c b/multicore/multicore_runner/multicore_runner.c index 9a5ec93..3f89a90 100644 --- a/multicore/multicore_runner/multicore_runner.c +++ b/multicore/multicore_runner/multicore_runner.c @@ -37,7 +37,7 @@ int32_t fibonacci(int32_t n) { if (n == 0) return 0; if (n == 1) return 1; - int n1 = 0, n2 = 1, n3; + int n1 = 0, n2 = 1, n3 = 0; for (int i = 2; i <= n; i++) { n3 = n1 + n2; diff --git a/multicore/multicore_runner_queue/multicore_runner_queue.c b/multicore/multicore_runner_queue/multicore_runner_queue.c index b0e2ec6..937adf3 100644 --- a/multicore/multicore_runner_queue/multicore_runner_queue.c +++ b/multicore/multicore_runner_queue/multicore_runner_queue.c @@ -50,7 +50,7 @@ int32_t fibonacci(int32_t n) { if (n == 0) return 0; if (n == 1) return 1; - int n1 = 0, n2 = 1, n3; + int n1 = 0, n2 = 1, n3 = 0; for (int i = 2; i <= n; i++) { n3 = n1 + n2; diff --git a/pio/i2c/pio_i2c.c b/pio/i2c/pio_i2c.c index 977553f..35e0530 100644 --- a/pio/i2c/pio_i2c.c +++ b/pio/i2c/pio_i2c.c @@ -32,7 +32,11 @@ void pio_i2c_rx_enable(PIO pio, uint sm, bool en) { static inline void pio_i2c_put16(PIO pio, uint sm, uint16_t data) { while (pio_sm_is_tx_fifo_full(pio, sm)) ; + // some versions of GCC dislike this +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wstrict-aliasing" *(io_rw_16 *)&pio->txf[sm] = data; +#pragma GCC diagnostic pop } @@ -43,7 +47,11 @@ void pio_i2c_put_or_err(PIO pio, uint sm, uint16_t data) { return; if (pio_i2c_check_error(pio, sm)) return; + // some versions of GCC dislike this +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wstrict-aliasing" *(io_rw_16 *)&pio->txf[sm] = data; +#pragma GCC diagnostic pop } uint8_t pio_i2c_get(PIO pio, uint sm) { diff --git a/timer/periodic_sampler/periodic_sampler.c b/timer/periodic_sampler/periodic_sampler.c index b347855..b200c71 100644 --- a/timer/periodic_sampler/periodic_sampler.c +++ b/timer/periodic_sampler/periodic_sampler.c @@ -66,6 +66,7 @@ int main() { queue_free(&sample_fifo); printf("Done\n"); + return 0; } bool timer_callback(repeating_timer_t *rt) { diff --git a/uart/uart_advanced/uart_advanced.c b/uart/uart_advanced/uart_advanced.c index c9b51d2..8bcf6c5 100644 --- a/uart/uart_advanced/uart_advanced.c +++ b/uart/uart_advanced/uart_advanced.c @@ -51,7 +51,7 @@ int main() { // Actually, we want a different speed // The call will return the actual baud rate selected, which will be as close as // possible to that requested - int actual = uart_set_baudrate(UART_ID, BAUD_RATE); + int __unused actual = uart_set_baudrate(UART_ID, BAUD_RATE); // Set UART flow control CTS/RTS, we don't want these, so turn them off uart_set_hw_flow(UART_ID, false, false); diff --git a/usb/device/dev_hid_composite/dev_hid_composite.c b/usb/device/dev_hid_composite/dev_hid_composite.c index 5f0ad1e..4578a00 100644 --- a/usb/device/dev_hid_composite/dev_hid_composite.c +++ b/usb/device/dev_hid_composite/dev_hid_composite.c @@ -134,7 +134,7 @@ void hid_task(void) { static bool has_key = false; static bool toggle = false; - if (toggle = !toggle) { + if ((toggle = !toggle)) { uint8_t keycode[6] = {0}; keycode[0] = HID_KEY_A; diff --git a/usb/device/dev_lowlevel/dev_lowlevel.c b/usb/device/dev_lowlevel/dev_lowlevel.c index 2d4d55c..58a6924 100644 --- a/usb/device/dev_lowlevel/dev_lowlevel.c +++ b/usb/device/dev_lowlevel/dev_lowlevel.c @@ -113,7 +113,7 @@ struct usb_endpoint_configuration *usb_get_endpoint_configuration(uint8_t addr) */ uint8_t usb_prepare_string_descriptor(const unsigned char *str) { // 2 for bLength + bDescriptorType + strlen * 2 because string is unicode. i.e. other byte will be 0 - uint8_t bLength = 2 + (strlen(str) * 2); + uint8_t bLength = 2 + (strlen((const char *)str) * 2); static const uint8_t bDescriptorType = 0x03; volatile uint8_t *buf = &ep0_buf[0]; diff --git a/usb/device/dev_lowlevel/dev_lowlevel.h b/usb/device/dev_lowlevel/dev_lowlevel.h index afe29cb..eef6540 100644 --- a/usb/device/dev_lowlevel/dev_lowlevel.h +++ b/usb/device/dev_lowlevel/dev_lowlevel.h @@ -129,8 +129,8 @@ static const unsigned char lang_descriptor[] = { }; static const unsigned char *descriptor_strings[] = { - "Raspberry Pi", // Vendor - "Pico Test Device" // Product + (unsigned char *) "Raspberry Pi", // Vendor + (unsigned char *) "Pico Test Device" // Product }; #endif \ No newline at end of file