跳到主要内容

hardware-resets

硬件复位 API。

详细描述

复位控制器允许通过软件控制 RP 系列微控制器中所有非启动处理器所必需的外设的复位。

reset_bitmask

使用位掩码引用多个块,格式如下:

对于 RP2040:

要复位的块
USB24
UART 123
UART 022
Timer21
TB Manager20
SysInfo19
System Config18
SPI 117
SPI 016
RTC15
PWM14
PLL USB13
PLL System12
PIO 111
PIO 010
Pads - QSPI9
Pads - Bank 08
JTAG7
IO QSPI6
IO Bank 05
I2C 14
I2C 03
DMA2
Bus Control1
ADC 00

对于 RP2350:

要复位的块
USB28
UART 127
UART 026
TRNG25
Timer 124
Timer 023
TB Manager22
SysInfo21
System Config20
SPI 119
SPI 018
SHA25617
PWM16
PLL USB15
PLL System14
PIO 213
PIO 112
PIO 011
Pads - QSPI10
Pads - Bank 09
JTAG8
IO QSPI7
IO Bank 06
I2C 15
I2C 04
HSTX3
DMA2
Bus Control1
ADC 00

示例

// hello_reset.c

#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/resets.h"

int main() {
stdio_init_all();

printf("Hello, reset!\n");

// Put the PWM block into reset
reset_block_num(RESET_PWM);

// And bring it out
unreset_block_num_wait_blocking(RESET_PWM);

// Put the PWM and ADC block into reset
reset_block_mask((1u << RESET_PWM) | (1u << RESET_ADC));

// Wait for both to come out of reset
unreset_block_mask_wait_blocking((1u << RESET_PWM) | (1u << RESET_ADC));

return 0;
}

类型定义

typedef enum reset_num_rp2040 reset_num_t RP2040
 RP2040 上可复位的组件编号(用作 typedef reset_num_t)

typedef enum reset_num_rp2350 reset_num_t RP2350
 RP2350 上可复位的组件编号(用作 typedef reset_num_t)

枚举

enum reset_num_rp2040 { [RESET_ADC] = 0, [RESET_BUSCTRL] = 1, [RESET_DMA] = 2, [RESET_I2C0] = 3, [RESET_I2C1] = 4, [RESET_IO_BANK0] = 5, [RESET_IO_QSPI] = 6, [RESET_JTAG] = 7, [RESET_PADS_BANK0] = 8, [RESET_PADS_QSPI] = 9, [RESET_PIO0] = 10, [RESET_PIO1] = 11, [RESET_PLL_SYS] = 12, [RESET_PLL_USB] = 13, [RESET_PWM] = 14, [RESET_RTC] = 15, [RESET_SPI0] = 16, [RESET_SPI1] = 17, [RESET_SYSCFG] = 18, [RESET_SYSINFO] = 19, [RESET_TBMAN] = 20, [RESET_TIMER] = 21, [RESET_UART0] = 22, [RESET_UART1] = 23, [RESET_USBCTRL] = 24, RESET_COUNT } RP2040
 RP2040 上可复位的组件编号(用作 typedef reset_num_t)

enum reset_num_rp2350 { [RESET_ADC] = 0, [RESET_BUSCTRL] = 1, [RESET_DMA] = 2, [RESET_HSTX] = 3, [RESET_I2C0] = 4, [RESET_I2C1] = 5, [RESET_IO_BANK0] = 6, [RESET_IO_QSPI] = 7, [RESET_JTAG] = 8, [RESET_PADS_BANK0] = 9, [RESET_PADS_QSPI] = 10, [RESET_PIO0] = 11, [RESET_PIO1] = 12, [RESET_PIO2] = 13, [RESET_PLL_SYS] = 14, [RESET_PLL_USB] = 15, [RESET_PWM] = 16, [RESET_SHA256] = 17, [RESET_SPI0] = 18, [RESET_SPI1] = 19, [RESET_SYSCFG] = 20, [RESET_SYSINFO] = 21, [RESET_TBMAN] = 22, [RESET_TIMER0] = 23, [RESET_TIMER1] = 24, [RESET_TRNG] = 25, [RESET_UART0] = 26, [RESET_UART1] = 27, [RESET_USBCTRL] = 28, RESET_COUNT } RP2350
 RP2350 上可复位的组件编号(用作 typedef reset_num_t)

函数

static __force_inline void reset_block_mask (uint32_t bits)
 复位指定的 HW 块。

static __force_inline void unreset_block_mask (uint32_t bits)
 将指定的 HW 块移出复位状态

static __force_inline void unreset_block_mask_wait_blocking (uint32_t bits)
 将指定的 HW 块移出复位状态并等待完成。

  • static void reset_block_num (uint32_t block_num): 复位指定的 HW 块。
  • static void unreset_block_num (uint block_num): 将指定的 HW 块移出复位状态
  • static void unreset_block_num_wait_blocking (uint block_num): 将指定的 HW 块移出复位状态并等待完成。
  • static void reset_unreset_block_num_wait_blocking (uint block_num): 复位指定的 HW 块,然后将其移出复位状态并等待完成。

类型定义文档

reset_num_t RP2040

typedef enum reset_num_rp2040 reset_num_t

RP2040 上可复位的组件编号(用作 typedef `reset_num_t)

reset_num_t RP2350

typedef enum reset_num_rp2350 reset_num_t

RP2350 上可复位的组件编号(用作 typedef `reset_num_t)

枚举类型文档

reset_num_rp2040 RP2040

enum reset_num_rp2040

RP2040 上可复位的组件编号(用作 typedef `reset_num_t)

枚举值说明
RESET_ADC选择 ADC 进行复位。
RESET_BUSCTRL选择 BUSCTRL 进行复位。
RESET_DMA选择 DMA 进行复位。
RESET_I2C0选择 I2C0 进行复位。
RESET_I2C1选择 I2C1 进行复位。
RESET_IO_BANK0选择 IO_BANK0 进行复位。
RESET_IO_QSPI选择 IO_QSPI 进行复位。
RESET_JTAG选择 JTAG 进行复位。
RESET_PADS_BANK0选择 PADS_BANK0 进行复位。
RESET_PADS_QSPI选择 PADS_QSPI 进行复位。
RESET_PIO0选择 PIO0 进行复位。
RESET_PIO1选择 PIO1 进行复位。
RESET_PLL_SYS选择 PLL_SYS 进行复位。
RESET_PLL_USB选择 PLL_USB 进行复位。
RESET_PWM选择 PWM 进行复位。
RESET_RTC选择 RTC 进行复位。
RESET_SPI0选择 SPI0 进行复位。
RESET_SPI1选择 SPI1 进行复位。
RESET_SYSCFG选择 SYSCFG 进行复位。
RESET_SYSINFO选择 SYSINFO 进行复位。
RESET_TBMAN选择 TBMAN 进行复位。
RESET_TIMER选择 TIMER 进行复位。
RESET_UART0选择 UART0 进行复位。
RESET_UART1选择 UART1 进行复位。
RESET_USBCTRL选择 USBCTRL 进行复位。

reset_num_rp2350 RP2350

enum reset_num_rp2350

RP2350 上可复位的组件编号(用作 typedef `reset_num_t)

枚举值说明
RESET_ADC选择 ADC 进行复位。
RESET_BUSCTRL选择 BUSCTRL 进行复位。
RESET_DMA选择 DMA 进行复位。
RESET_HSTX选择 HSTX 进行复位。
RESET_I2C0选择 I2C0 进行复位。
RESET_I2C1选择 I2C1 进行复位。
RESET_IO_BANK0选择 IO_BANK0 进行复位。
RESET_IO_QSPI选择 IO_QSPI 进行复位。
RESET_JTAG选择 JTAG 进行复位。
RESET_PADS_BANK0选择 PADS_BANK0 进行复位。
RESET_PADS_QSPI选择 PADS_QSPI 进行复位。
RESET_PIO0选择 PIO0 进行复位。
RESET_PIO1选择 PIO1 进行复位。
RESET_PIO2选择 PIO2 进行复位。
RESET_PLL_SYS选择 PLL_SYS 进行复位。
RESET_PLL_USB选择 PLL_USB 进行复位。
RESET_PWM选择 PWM 进行复位。
RESET_SHA256选择 SHA256 进行复位。
RESET_SPI0选择 SPI0 进行复位。
RESET_SPI1选择 SPI1 进行复位。
RESET_SYSCFG选择 SYSCFG 进行复位。
RESET_SYSINFO选择 SYSINFO 进行复位。
RESET_TBMAN选择 TBMAN 进行复位。
RESET_TIMER0选择 TIMER0 进行复位。
RESET_TIMER1选择 TIMER1 进行复位。
RESET_TRNG选择 TRNG 进行复位。
RESET_UART0选择 UART0 进行复位。
RESET_UART1选择 UART1 进行复位。
RESET_USBCTRL选择 USBCTRL 进行复位。

函数文档

reset_block_mask

static __force_inline void reset_block_mask (uint32_t bits) [static]

复位指定的 HW 块。

参数

  • bits: 指示要复位的块的位模式。参见 reset_bitmask

reset_block_num

static void reset_block_num (uint32_t block_num) [inline], [static]

复位指定的 HW 块。

参数

  • block_num: 块编号

reset_unreset_block_num_wait_blocking

static void reset_unreset_block_num_wait_blocking (uint block_num) [inline], [static]

复位指定的 HW 块,然后将其移出复位状态并等待完成。

参数

  • block_num: 块编号

unreset_block_mask

static __force_inline void unreset_block_mask (uint32_t bits) [static]

将指定的 HW 块移出复位状态

参数

  • bits: 指示要取消复位的块的位模式。参见 reset_bitmask

unreset_block_mask_wait_blocking

static __force_inline void unreset_block_mask_wait_blocking (uint32_t bits) [static]

将指定的 HW 块移出复位状态并等待完成。

参数

  • bits: 指示要取消复位的块的位模式。参见 reset_bitmask

unreset_block_num

static void unreset_block_num (uint block_num) [inline], [static]

将指定的 HW 块移出复位状态

参数

  • block_num: 块编号

unreset_block_num_wait_blocking

static void unreset_block_num_wait_blocking (uint block_num) [inline], [static]

将指定的 HW 块移出复位状态并等待完成。

参数

  • block_num: 块编号

中文翻译版以英文版相同知识授权方式共享:CC-BY-SA 4.0。交流 Q群:498908352