1.1.2 release
This commit is contained in:
commit
afc10f3599
@ -6,7 +6,7 @@ set(PICO_SDK_VERSION_MAJOR 1)
|
|||||||
set(PICO_SDK_VERSION_MINOR 1)
|
set(PICO_SDK_VERSION_MINOR 1)
|
||||||
# PICO_BUILD_DEFINE: PICO_SDK_VERSION_REVISION, SDK version revision, type=int, group=pico_base
|
# PICO_BUILD_DEFINE: PICO_SDK_VERSION_REVISION, SDK version revision, type=int, group=pico_base
|
||||||
# PICO_CONFIG: PICO_SDK_VERSION_REVISION, SDK version revision, type=int, group=pico_base
|
# PICO_CONFIG: PICO_SDK_VERSION_REVISION, SDK version revision, type=int, group=pico_base
|
||||||
set(PICO_SDK_VERSION_REVISION 1)
|
set(PICO_SDK_VERSION_REVISION 2)
|
||||||
# PICO_BUILD_DEFINE: PICO_SDK_VERSION_PRE_RELEASE_ID, optional SDK pre-release version identifier, type=string, group=pico_base
|
# PICO_BUILD_DEFINE: PICO_SDK_VERSION_PRE_RELEASE_ID, optional SDK pre-release version identifier, type=string, group=pico_base
|
||||||
# PICO_CONFIG: PICO_SDK_VERSION_PRE_RELEASE_ID, optional SDK pre-release version identifier, type=string, group=pico_base
|
# PICO_CONFIG: PICO_SDK_VERSION_PRE_RELEASE_ID, optional SDK pre-release version identifier, type=string, group=pico_base
|
||||||
#set(PICO_SDK_VERSION_PRE_RELEASE_ID develop)
|
#set(PICO_SDK_VERSION_PRE_RELEASE_ID develop)
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
# PICO_CMAKE_CONFIG: PICO_DEFAULT_BOOT_STAGE2_FILE, Default stage2 file to use unless overridden by pico_set_boot_stage2 on the TARGET; this setting is useful when explicitly setting the default build from a per board CMake file, group=build
|
# PICO_CMAKE_CONFIG: PICO_DEFAULT_BOOT_STAGE2_FILE, Default boot stage 2 file to use unless overridden by pico_set_boot_stage2 on the TARGET; this setting is useful when explicitly setting the default build from a per board CMake file, group=build
|
||||||
# PICO_CMAKE_CONFIG: PICO_DEFAULT_BOOT_STAGE2, Simpler alternative to specifying PICO_DEFAULT_BOOT_STAGE2_FILE where the file is src/boards/{PICO_DEFAULT_BOOT_STAGE2_FILE}.S, default=compile_time_choice, group=build
|
# PICO_CMAKE_CONFIG: PICO_DEFAULT_BOOT_STAGE2, Simpler alternative to specifying PICO_DEFAULT_BOOT_STAGE2_FILE where the file is src/rp2_common/boot_stage2/{PICO_DEFAULT_BOOT_STAGE2}.S, default=compile_time_choice, group=build
|
||||||
|
|
||||||
if (DEFINED ENV{PICO_DEFAULT_BOOT_STAGE2_FILE})
|
if (DEFINED ENV{PICO_DEFAULT_BOOT_STAGE2_FILE})
|
||||||
set(PICO_DEFAULT_BOOT_STAGE2_FILE $ENV{PICO_DEFAULT_BOOT_STAGE2_FILE})
|
set(PICO_DEFAULT_BOOT_STAGE2_FILE $ENV{PICO_DEFAULT_BOOT_STAGE2_FILE})
|
||||||
message("Using PICO_DEFAULT_BOOT_STAGE2_FILE from environment ('${PICO_DEFAULT_BOOT_STAGE2_FILE}')")
|
message("Using PICO_DEFAULT_BOOT_STAGE2_FILE from environment ('${PICO_DEFAULT_BOOT_STAGE2_FILE}')")
|
||||||
|
elif (PICO_DEFAULT_BOOT_STAGE2_FILE)
|
||||||
|
# explicitly set, so cache it
|
||||||
|
set(PICO_DEFAULT_BOOT_STAGE2_FILE "${PICO_DEFAULT_BOOT_STAGE2_FILE}" CACHE STRING "boot stage 2 source file" FORCE)
|
||||||
endif()
|
endif()
|
||||||
set(PICO_DEFAULT_BOOT_STAGE2_FILE "${PICO_DEFAULT_BOOT_STAGE2_FILE}" CACHE STRING "boot_stage2 source file" FORCE)
|
|
||||||
|
|
||||||
set(PICO_BOOT_STAGE2_COMPILE_TIME_CHOICE_NAME compile_time_choice) # local var
|
set(PICO_BOOT_STAGE2_COMPILE_TIME_CHOICE_NAME compile_time_choice) # local var
|
||||||
if (NOT PICO_DEFAULT_BOOT_STAGE2_FILE)
|
if (NOT PICO_DEFAULT_BOOT_STAGE2_FILE)
|
||||||
@ -15,12 +18,12 @@ if (NOT PICO_DEFAULT_BOOT_STAGE2_FILE)
|
|||||||
if (NOT DEFINED PICO_DEFAULT_BOOT_STAGE2)
|
if (NOT DEFINED PICO_DEFAULT_BOOT_STAGE2)
|
||||||
set(PICO_DEFAULT_BOOT_STAGE2 ${PICO_BOOT_STAGE2_COMPILE_TIME_CHOICE_NAME})
|
set(PICO_DEFAULT_BOOT_STAGE2 ${PICO_BOOT_STAGE2_COMPILE_TIME_CHOICE_NAME})
|
||||||
endif()
|
endif()
|
||||||
set(PICO_DEFAULT_BOOT_STAGE2 "${PICO_DEFAULT_BOOT_STAGE2}" CACHE STRING "boot_stage2 short name" FORCE)
|
set(PICO_DEFAULT_BOOT_STAGE2 "${PICO_DEFAULT_BOOT_STAGE2}" CACHE STRING "boot stage 2 short name" FORCE)
|
||||||
set(PICO_DEFAULT_BOOT_STAGE2_FILE "${CMAKE_CURRENT_LIST_DIR}/${PICO_DEFAULT_BOOT_STAGE2}.S")
|
set(PICO_DEFAULT_BOOT_STAGE2_FILE "${CMAKE_CURRENT_LIST_DIR}/${PICO_DEFAULT_BOOT_STAGE2}.S")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT EXISTS ${PICO_DEFAULT_BOOT_STAGE2_FILE})
|
if (NOT EXISTS ${PICO_DEFAULT_BOOT_STAGE2_FILE})
|
||||||
message(FATAL_ERROR "Specified boot_stage2 source '${PICO_DEFAULT_BOOT_STAGE2_FILE}' does not exist.")
|
message(FATAL_ERROR "Specified boot stage 2 source '${PICO_DEFAULT_BOOT_STAGE2_FILE}' does not exist.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# needed by function below
|
# needed by function below
|
||||||
@ -89,7 +92,7 @@ macro(pico_set_boot_stage2 TARGET NAME)
|
|||||||
if ("EXECUTABLE" STREQUAL "${target_type}")
|
if ("EXECUTABLE" STREQUAL "${target_type}")
|
||||||
set_target_properties(${TARGET} PROPERTIES PICO_TARGET_BOOT_STAGE2 "${NAME}")
|
set_target_properties(${TARGET} PROPERTIES PICO_TARGET_BOOT_STAGE2 "${NAME}")
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "boot stage2 implementation must be set on executable not library")
|
message(FATAL_ERROR "boot stage 2 implementation must be set on executable not library")
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
@ -11,19 +11,9 @@
|
|||||||
#include "boot_stage2/config.h"
|
#include "boot_stage2/config.h"
|
||||||
|
|
||||||
#ifdef PICO_BUILD_BOOT_STAGE2_NAME
|
#ifdef PICO_BUILD_BOOT_STAGE2_NAME
|
||||||
// boot stage2 is configured by cmake, so use the name specified there
|
// boot stage 2 is configured by cmake, so use the name specified there
|
||||||
#error PICO_BUILD_BOOT_STAGE2_NAME should not be defined for compile_time_choice builds
|
#error PICO_BUILD_BOOT_STAGE2_NAME should not be defined for compile_time_choice builds
|
||||||
#else
|
#else
|
||||||
// boot stage2 is selected by board configu header, so we have to do some work
|
// boot stage 2 is selected by board config header, and PICO_BOOT_STAGE2_ASM is set in boot_stage2/config.h
|
||||||
#if PICO_BOOT_STAGE2_CHOOSE_IS25LP080
|
#include PICO_BOOT_STAGE2_ASM
|
||||||
#include "boot2_is25lp080.S"
|
|
||||||
#elif PICO_BOOT_STAGE2_CHOOSE_W25Q080
|
|
||||||
#include "boot2_w28q080.S"
|
|
||||||
#elif PICO_BOOT_STAGE2_CHOOSE_W25X10CL
|
|
||||||
#include "boot2_w25x10cl.S"
|
|
||||||
#elif PICO_BOOT_STAGE2_CHOOSE_GENERIC_03H
|
|
||||||
#include "boot2_generic_03h.S"
|
|
||||||
#else
|
|
||||||
#error unknown boot stage2 choice
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -9,30 +9,74 @@
|
|||||||
|
|
||||||
// NOTE THIS HEADER IS INCLUDED FROM ASSEMBLY
|
// NOTE THIS HEADER IS INCLUDED FROM ASSEMBLY
|
||||||
|
|
||||||
|
#include "pico/config.h"
|
||||||
|
|
||||||
// PICO_CONFIG: PICO_BUILD_BOOT_STAGE2_NAME, The name of the boot stage 2 if selected by the build, group=boot_stage2
|
// PICO_CONFIG: PICO_BUILD_BOOT_STAGE2_NAME, The name of the boot stage 2 if selected by the build, group=boot_stage2
|
||||||
// PICO_CONFIG: PICO_BOOT_STAGE2_CHOOSE_IS25LP080, Select boot2_is25lp080 as the boot stage 2 when no boot stage2 selection is made by the CMake build, type=bool, default=false, group=boot_stage2
|
#ifdef PICO_BUILD_BOOT_STAGE2_NAME
|
||||||
// PICO_CONFIG: PICO_BOOT_STAGE2_CHOOSE_W25Q080, Select boot2_w28q080 as the boot stage 2 when no boot stage2 selection is made by the CMake build, type=bool, default=false, group=boot_stage2
|
#define _BOOT_STAGE2_SELECTED
|
||||||
// PICO_CONFIG: PICO_BOOT_STAGE2_CHOOSE_W25X10CL, Select boot2_is25lp080 as the boot stage 2 when no boot stage2 selection is made by the CMake build, type=bool, default=false, group=boot_stage2
|
#else
|
||||||
// PICO_CONFIG: PICO_BOOT_STAGE2_CHOOSE_GENERIC_03H, Select boot2_generic_03h as the boot stage 2 when no boot stage2 selection is made by the CMake build, type=bool, default=true, group=boot_stage2
|
// check that multiple boot stage 2 options haven't been set...
|
||||||
|
|
||||||
|
// PICO_CONFIG: PICO_BOOT_STAGE2_CHOOSE_IS25LP080, Select boot2_is25lp080 as the boot stage 2 when no boot stage 2 selection is made by the CMake build, type=bool, default=0, group=boot_stage2
|
||||||
|
#ifndef PICO_BOOT_STAGE2_CHOOSE_IS25LP080
|
||||||
|
#define PICO_BOOT_STAGE2_CHOOSE_IS25LP080 0
|
||||||
|
#elif PICO_BOOT_STAGE2_CHOOSE_IS25LP080
|
||||||
|
#ifdef _BOOT_STAGE2_SELECTED
|
||||||
|
#error multiple boot stage 2 options chosen
|
||||||
|
#endif
|
||||||
|
#define _BOOT_STAGE2_SELECTED
|
||||||
|
#endif
|
||||||
|
// PICO_CONFIG: PICO_BOOT_STAGE2_CHOOSE_W25Q080, Select boot2_w25q080 as the boot stage 2 when no boot stage 2 selection is made by the CMake build, type=bool, default=0, group=boot_stage2
|
||||||
|
#ifndef PICO_BOOT_STAGE2_CHOOSE_W25Q080
|
||||||
|
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 0
|
||||||
|
#elif PICO_BOOT_STAGE2_CHOOSE_W25Q080
|
||||||
|
#ifdef _BOOT_STAGE2_SELECTED
|
||||||
|
#error multiple boot stage 2 options chosen
|
||||||
|
#endif
|
||||||
|
#define _BOOT_STAGE2_SELECTED
|
||||||
|
#endif
|
||||||
|
// PICO_CONFIG: PICO_BOOT_STAGE2_CHOOSE_W25X10CL, Select boot2_w25x10cl as the boot stage 2 when no boot stage 2 selection is made by the CMake build, type=bool, default=0, group=boot_stage2
|
||||||
|
#ifndef PICO_BOOT_STAGE2_CHOOSE_W25X10CL
|
||||||
|
#define PICO_BOOT_STAGE2_CHOOSE_W25X10CL 0
|
||||||
|
#elif PICO_BOOT_STAGE2_CHOOSE_W25X10CL
|
||||||
|
#ifdef _BOOT_STAGE2_SELECTED
|
||||||
|
#error multiple boot stage 2 options chosen
|
||||||
|
#endif
|
||||||
|
#define _BOOT_STAGE2_SELECTED
|
||||||
|
#endif
|
||||||
|
// PICO_CONFIG: PICO_BOOT_STAGE2_CHOOSE_GENERIC_03H, Select boot2_generic_03h as the boot stage 2 when no boot stage 2 selection is made by the CMake build, type=bool, default=1, group=boot_stage2
|
||||||
|
#if defined(PICO_BOOT_STAGE2_CHOOSE_GENERIC_03H) && PICO_BOOT_STAGE2_CHOOSE_GENERIC_03H
|
||||||
|
#ifdef _BOOT_STAGE2_SELECTED
|
||||||
|
#error multiple boot stage 2 options chosen
|
||||||
|
#endif
|
||||||
|
#define _BOOT_STAGE2_SELECTED
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // PICO_BUILD_BOOT_STAGE2_NAME
|
||||||
|
|
||||||
#ifdef PICO_BUILD_BOOT_STAGE2_NAME
|
#ifdef PICO_BUILD_BOOT_STAGE2_NAME
|
||||||
// boot stage2 is configured by cmake, so use the name specified there
|
// boot stage 2 is configured by cmake, so use the name specified there
|
||||||
#define PICO_BOOT_STAGE2_NAME PICO_BUILD_BOOT_STAGE2_NAME
|
#define PICO_BOOT_STAGE2_NAME PICO_BUILD_BOOT_STAGE2_NAME
|
||||||
#else
|
#else
|
||||||
// boot stage2 is selected by board configu header, so we have to do some work
|
// boot stage 2 is selected by board config header, so we have to do some work
|
||||||
// NOTE: this switch is mirrored in compile_time_choice.S
|
|
||||||
#if PICO_BOOT_STAGE2_CHOOSE_IS25LP080
|
#if PICO_BOOT_STAGE2_CHOOSE_IS25LP080
|
||||||
#define PICO_BOOT_STAGE2_NAME "boot2_is25lp080"
|
#define _BOOT_STAGE2 boot2_is25lp080
|
||||||
#elif PICO_BOOT_STAGE2_CHOOSE_W25Q080
|
#elif PICO_BOOT_STAGE2_CHOOSE_W25Q080
|
||||||
#define PICO_BOOT_STAGE2_NAME "boot2_w28q080"
|
#define _BOOT_STAGE2 boot2_w25q080
|
||||||
#elif PICO_BOOT_STAGE2_CHOOSE_W25X10CL
|
#elif PICO_BOOT_STAGE2_CHOOSE_W25X10CL
|
||||||
#define PICO_BOOT_STAGE2_NAME "boot2_w25x10cl"
|
#define _BOOT_STAGE2 boot2_w25x10cl
|
||||||
#elif PICO_BOOT_STAGE2_CHOOSE_GENERIC_03H || !defined(PICO_BOOT_STAGE2_CHOOSE_GENERIC_03H)
|
#elif !defined(PICO_BOOT_STAGE2_CHOOSE_GENERIC_03H) || PICO_BOOT_STAGE2_CHOOSE_GENERIC_03H
|
||||||
#undef PICO_BOOT_STAGE2_CHOOSE_GENERIC_03H
|
#undef PICO_BOOT_STAGE2_CHOOSE_GENERIC_03H
|
||||||
#define PICO_BOOT_STAGE2_CHOOSE_GENERIC_03H 1
|
#define PICO_BOOT_STAGE2_CHOOSE_GENERIC_03H 1
|
||||||
#define PICO_BOOT_STAGE2_NAME "boot2_generic_03h"
|
#define _BOOT_STAGE2 boot2_generic_03h
|
||||||
#else
|
#else
|
||||||
#error no bootstage2 is defined by PICO_BOOT_STAGE2_CHOOSE_ macro
|
#error no boot stage 2 is defined by PICO_BOOT_STAGE2_CHOOSE_ macro
|
||||||
#endif
|
#endif
|
||||||
|
// we can't include cdefs in assembly, so define our own, but avoid conflict with real ones for c inclusion
|
||||||
|
#define _PICO__STRING(x) #x
|
||||||
|
#define _PICO__XSTRING(x) _PICO__STRING(x)
|
||||||
|
#define _PICO__CONCAT1(x, y) x ## y
|
||||||
|
#define PICO_BOOT_STAGE2_NAME _PICO__XSTRING(_BOOT_STAGE2)
|
||||||
|
#define PICO_BOOT_STAGE2_ASM _PICO__XSTRING(_PICO__CONCAT1(_BOOT_STAGE2,.S))
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
@ -60,9 +60,10 @@ void print_dma_ctrl(dma_channel_hw_t *channel) {
|
|||||||
ctrl & DMA_CH0_CTRL_TRIG_HIGH_PRIORITY_BITS ? 1 : 0,
|
ctrl & DMA_CH0_CTRL_TRIG_HIGH_PRIORITY_BITS ? 1 : 0,
|
||||||
ctrl & DMA_CH0_CTRL_TRIG_EN_BITS ? 1 : 0);
|
ctrl & DMA_CH0_CTRL_TRIG_EN_BITS ? 1 : 0);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void check_dma_channel_param_impl(uint channel) {
|
#if PARAM_ASSERTIONS_ENABLED(DMA)
|
||||||
|
void check_dma_channel_param_impl(uint __unused channel) {
|
||||||
valid_params_if(DMA, channel < NUM_DMA_CHANNELS);
|
valid_params_if(DMA, channel < NUM_DMA_CHANNELS);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -27,7 +27,7 @@ int gpio_get_pad(uint gpio) {
|
|||||||
// This also clears the input/output/irq override bits.
|
// This also clears the input/output/irq override bits.
|
||||||
void gpio_set_function(uint gpio, enum gpio_function fn) {
|
void gpio_set_function(uint gpio, enum gpio_function fn) {
|
||||||
invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS);
|
invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS);
|
||||||
invalid_params_if(GPIO, fn << IO_BANK0_GPIO0_CTRL_FUNCSEL_LSB & ~IO_BANK0_GPIO0_CTRL_FUNCSEL_BITS);
|
invalid_params_if(GPIO, ((uint32_t)fn << IO_BANK0_GPIO0_CTRL_FUNCSEL_LSB) & ~IO_BANK0_GPIO0_CTRL_FUNCSEL_BITS);
|
||||||
// Set input enable on, output disable off
|
// Set input enable on, output disable off
|
||||||
hw_write_masked(&padsbank0_hw->io[gpio],
|
hw_write_masked(&padsbank0_hw->io[gpio],
|
||||||
PADS_BANK0_GPIO0_IE_BITS,
|
PADS_BANK0_GPIO0_IE_BITS,
|
||||||
|
@ -320,7 +320,7 @@ static inline void sm_config_set_out_shift(pio_sm_config *c, bool shift_right, b
|
|||||||
* \param join Specifies the join type. \see enum pio_fifo_join
|
* \param join Specifies the join type. \see enum pio_fifo_join
|
||||||
*/
|
*/
|
||||||
static inline void sm_config_set_fifo_join(pio_sm_config *c, enum pio_fifo_join join) {
|
static inline void sm_config_set_fifo_join(pio_sm_config *c, enum pio_fifo_join join) {
|
||||||
valid_params_if(PIO, join >= PIO_FIFO_JOIN_NONE && join <= PIO_FIFO_JOIN_RX);
|
valid_params_if(PIO, join == PIO_FIFO_JOIN_NONE || join == PIO_FIFO_JOIN_TX || join == PIO_FIFO_JOIN_RX);
|
||||||
c->shiftctrl = (c->shiftctrl & (uint)~(PIO_SM0_SHIFTCTRL_FJOIN_TX_BITS | PIO_SM0_SHIFTCTRL_FJOIN_RX_BITS)) |
|
c->shiftctrl = (c->shiftctrl & (uint)~(PIO_SM0_SHIFTCTRL_FJOIN_TX_BITS | PIO_SM0_SHIFTCTRL_FJOIN_RX_BITS)) |
|
||||||
(((uint)join) << PIO_SM0_SHIFTCTRL_FJOIN_TX_LSB);
|
(((uint)join) << PIO_SM0_SHIFTCTRL_FJOIN_TX_LSB);
|
||||||
}
|
}
|
||||||
@ -350,7 +350,7 @@ static inline void sm_config_set_out_special(pio_sm_config *c, bool sticky, bool
|
|||||||
* \param status_n parameter for the mov status operation (currently a bit count)
|
* \param status_n parameter for the mov status operation (currently a bit count)
|
||||||
*/
|
*/
|
||||||
static inline void sm_config_set_mov_status(pio_sm_config *c, enum pio_mov_status_type status_sel, uint status_n) {
|
static inline void sm_config_set_mov_status(pio_sm_config *c, enum pio_mov_status_type status_sel, uint status_n) {
|
||||||
valid_params_if(PIO, status_sel >= STATUS_TX_LESSTHAN && status_sel <= STATUS_RX_LESSTHAN);
|
valid_params_if(PIO, status_sel == STATUS_TX_LESSTHAN || status_sel == STATUS_RX_LESSTHAN);
|
||||||
c->execctrl = (c->execctrl
|
c->execctrl = (c->execctrl
|
||||||
& ~(PIO_SM0_EXECCTRL_STATUS_SEL_BITS | PIO_SM0_EXECCTRL_STATUS_N_BITS))
|
& ~(PIO_SM0_EXECCTRL_STATUS_SEL_BITS | PIO_SM0_EXECCTRL_STATUS_N_BITS))
|
||||||
| ((((uint)status_sel) << PIO_SM0_EXECCTRL_STATUS_SEL_LSB) & PIO_SM0_EXECCTRL_STATUS_SEL_BITS)
|
| ((((uint)status_sel) << PIO_SM0_EXECCTRL_STATUS_SEL_LSB) & PIO_SM0_EXECCTRL_STATUS_SEL_BITS)
|
||||||
|
@ -47,10 +47,10 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
enum pwm_clkdiv_mode
|
enum pwm_clkdiv_mode
|
||||||
{
|
{
|
||||||
PWM_DIV_FREE_RUNNING, ///< Free-running counting at rate dictated by fractional divider
|
PWM_DIV_FREE_RUNNING = 0, ///< Free-running counting at rate dictated by fractional divider
|
||||||
PWM_DIV_B_HIGH, ///< Fractional divider is gated by the PWM B pin
|
PWM_DIV_B_HIGH = 1, ///< Fractional divider is gated by the PWM B pin
|
||||||
PWM_DIV_B_RISING, ///< Fractional divider advances with each rising edge of the PWM B pin
|
PWM_DIV_B_RISING = 2, ///< Fractional divider advances with each rising edge of the PWM B pin
|
||||||
PWM_DIV_B_FALLING ///< Fractional divider advances with each falling edge of the PWM B pin
|
PWM_DIV_B_FALLING = 3 ///< Fractional divider advances with each falling edge of the PWM B pin
|
||||||
};
|
};
|
||||||
|
|
||||||
enum pwm_chan
|
enum pwm_chan
|
||||||
@ -144,7 +144,10 @@ static inline void pwm_config_set_clkdiv_int(pwm_config *c, uint div) {
|
|||||||
* high level, rising edge or falling edge of the B pin input.
|
* high level, rising edge or falling edge of the B pin input.
|
||||||
*/
|
*/
|
||||||
static inline void pwm_config_set_clkdiv_mode(pwm_config *c, enum pwm_clkdiv_mode mode) {
|
static inline void pwm_config_set_clkdiv_mode(pwm_config *c, enum pwm_clkdiv_mode mode) {
|
||||||
valid_params_if(PWM, mode >= PWM_DIV_FREE_RUNNING && mode <= PWM_DIV_B_FALLING);
|
valid_params_if(PWM, mode == PWM_DIV_FREE_RUNNING ||
|
||||||
|
mode == PWM_DIV_B_RISING ||
|
||||||
|
mode == PWM_DIV_B_HIGH ||
|
||||||
|
mode == PWM_DIV_B_FALLING);
|
||||||
c->csr = (c->csr & ~PWM_CH0_CSR_DIVMODE_BITS)
|
c->csr = (c->csr & ~PWM_CH0_CSR_DIVMODE_BITS)
|
||||||
| (((uint)mode) << PWM_CH0_CSR_DIVMODE_LSB);
|
| (((uint)mode) << PWM_CH0_CSR_DIVMODE_LSB);
|
||||||
}
|
}
|
||||||
@ -414,7 +417,10 @@ static inline void pwm_set_output_polarity(uint slice_num, bool a, bool b) {
|
|||||||
*/
|
*/
|
||||||
static inline void pwm_set_clkdiv_mode(uint slice_num, enum pwm_clkdiv_mode mode) {
|
static inline void pwm_set_clkdiv_mode(uint slice_num, enum pwm_clkdiv_mode mode) {
|
||||||
check_slice_num_param(slice_num);
|
check_slice_num_param(slice_num);
|
||||||
valid_params_if(PWM, mode >= PWM_DIV_FREE_RUNNING && mode <= PWM_DIV_B_FALLING);
|
valid_params_if(PWM, mode == PWM_DIV_FREE_RUNNING ||
|
||||||
|
mode == PWM_DIV_B_RISING ||
|
||||||
|
mode == PWM_DIV_B_HIGH ||
|
||||||
|
mode == PWM_DIV_B_FALLING);
|
||||||
hw_write_masked(&pwm_hw->slice[slice_num].csr, ((uint)mode) << PWM_CH0_CSR_DIVMODE_LSB, PWM_CH0_CSR_DIVMODE_BITS);
|
hw_write_masked(&pwm_hw->slice[slice_num].csr, ((uint)mode) << PWM_CH0_CSR_DIVMODE_LSB, PWM_CH0_CSR_DIVMODE_BITS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -204,9 +204,10 @@ inline static spin_lock_t *spin_lock_instance(uint lock_num) {
|
|||||||
* \return The Spinlock ID
|
* \return The Spinlock ID
|
||||||
*/
|
*/
|
||||||
inline static uint spin_lock_get_num(spin_lock_t *lock) {
|
inline static uint spin_lock_get_num(spin_lock_t *lock) {
|
||||||
int lock_num = lock - (spin_lock_t *) (SIO_BASE + SIO_SPINLOCK0_OFFSET);
|
invalid_params_if(SYNC, (uint) lock < SIO_BASE + SIO_SPINLOCK0_OFFSET ||
|
||||||
invalid_params_if(SYNC, lock_num < 0 || lock_num >= NUM_SPIN_LOCKS);
|
(uint) lock >= NUM_SPIN_LOCKS * sizeof(spin_lock_t) + SIO_BASE + SIO_SPINLOCK0_OFFSET ||
|
||||||
return (uint) lock_num;
|
((uint) lock - SIO_BASE + SIO_SPINLOCK0_OFFSET) % sizeof(spin_lock_t) != 0);
|
||||||
|
return (uint) (lock - (spin_lock_t *) (SIO_BASE + SIO_SPINLOCK0_OFFSET));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \brief Acquire a spin lock without disabling interrupts (hence unsafe)
|
/*! \brief Acquire a spin lock without disabling interrupts (hence unsafe)
|
||||||
|
@ -6,7 +6,10 @@
|
|||||||
|
|
||||||
#if !PICO_NO_BINARY_INFO && !PICO_NO_PROGRAM_INFO
|
#if !PICO_NO_BINARY_INFO && !PICO_NO_PROGRAM_INFO
|
||||||
#include "pico/binary_info.h"
|
#include "pico/binary_info.h"
|
||||||
|
|
||||||
|
#if !PICO_NO_FLASH
|
||||||
#include "boot_stage2/config.h"
|
#include "boot_stage2/config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
// Note we put at most 4 pieces of binary info in the reset section because that's how much spare space we had
|
// Note we put at most 4 pieces of binary info in the reset section because that's how much spare space we had
|
||||||
// (picked the most common ones)... if there is a link failure because of .reset section overflow then move
|
// (picked the most common ones)... if there is a link failure because of .reset section overflow then move
|
||||||
|
@ -66,6 +66,7 @@ target_compile_options(kitchen_sink_options INTERFACE
|
|||||||
-Wfloat-equal
|
-Wfloat-equal
|
||||||
-Wmissing-format-attribute
|
-Wmissing-format-attribute
|
||||||
-Wconversion
|
-Wconversion
|
||||||
|
-Wsign-compare
|
||||||
$<$<COMPILE_LANGUAGE:C>:-Wstrict-prototypes>
|
$<$<COMPILE_LANGUAGE:C>:-Wstrict-prototypes>
|
||||||
|
|
||||||
-Wno-inline
|
-Wno-inline
|
||||||
@ -85,7 +86,7 @@ target_compile_options(kitchen_sink_options INTERFACE
|
|||||||
)
|
)
|
||||||
|
|
||||||
target_compile_definitions(kitchen_sink_libs INTERFACE
|
target_compile_definitions(kitchen_sink_libs INTERFACE
|
||||||
NDEBUG
|
PARAM_ASSERTIONS_ENABLE_ALL=1 # want to check all the assertions for compilation warnings
|
||||||
PICO_AUDIO_DMA_IRQ=1
|
PICO_AUDIO_DMA_IRQ=1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -5,18 +5,44 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "pico/stdlib.h"
|
// Include all headers to check for compiler warnings
|
||||||
#include "pico/time.h"
|
#include "hardware/adc.h"
|
||||||
|
#include "hardware/claim.h"
|
||||||
|
#include "hardware/clocks.h"
|
||||||
|
#include "hardware/divider.h"
|
||||||
#include "hardware/dma.h"
|
#include "hardware/dma.h"
|
||||||
#include "pico/bit_ops.h"
|
#include "hardware/flash.h"
|
||||||
|
#include "hardware/gpio.h"
|
||||||
#include "hardware/i2c.h"
|
#include "hardware/i2c.h"
|
||||||
#include "hardware/pwm.h"
|
#include "hardware/interp.h"
|
||||||
#include "hardware/pio.h"
|
|
||||||
#include "hardware/irq.h"
|
#include "hardware/irq.h"
|
||||||
|
#include "hardware/pio.h"
|
||||||
|
#include "hardware/pll.h"
|
||||||
|
#include "hardware/pwm.h"
|
||||||
|
#include "hardware/resets.h"
|
||||||
|
#include "hardware/rtc.h"
|
||||||
|
#include "hardware/spi.h"
|
||||||
|
#include "hardware/sync.h"
|
||||||
#include "hardware/timer.h"
|
#include "hardware/timer.h"
|
||||||
#include "pico/divider.h"
|
#include "hardware/uart.h"
|
||||||
#include "pico/critical_section.h"
|
#include "hardware/vreg.h"
|
||||||
|
#include "hardware/watchdog.h"
|
||||||
|
#include "hardware/xosc.h"
|
||||||
#include "pico/binary_info.h"
|
#include "pico/binary_info.h"
|
||||||
|
#include "pico/bit_ops.h"
|
||||||
|
#include "pico/bootrom.h"
|
||||||
|
#include "pico/divider.h"
|
||||||
|
#include "pico/double.h"
|
||||||
|
#include "pico/fix/rp2040_usb_device_enumeration.h"
|
||||||
|
#include "pico/float.h"
|
||||||
|
#include "pico/int64_ops.h"
|
||||||
|
#include "pico/malloc.h"
|
||||||
|
#include "pico/multicore.h"
|
||||||
|
#include "pico/printf.h"
|
||||||
|
#include "pico/stdlib.h"
|
||||||
|
#include "pico/sync.h"
|
||||||
|
#include "pico/time.h"
|
||||||
|
#include "pico/unique_id.h"
|
||||||
|
|
||||||
bi_decl(bi_block_device(
|
bi_decl(bi_block_device(
|
||||||
BINARY_INFO_MAKE_TAG('K', 'S'),
|
BINARY_INFO_MAKE_TAG('K', 'S'),
|
||||||
|
Loading…
Reference in New Issue
Block a user