電源ドメイン | 電源端子 | 用途 |
VDDA | VDDA,VSSA | ADC,温度センサ,リセット,PLL |
VDD | VDD,VSS | I/O,STANDBY回路(WKUP,IWDG,RCC,CSR),電圧レギュレータ |
V18 | VDDから生成 | コア,メモリ,デジタルペリフェラル |
BKUP | VDD or VBAT | LSE 32K OSC,BKP,RCC BDCR,RTC |
モード名 | エントリ方法 | ウェイクアップ | 1.8Vドメインへの影響 | VDDドメインへの影響 | レギュレータ |
SLEEP | WFI | 割り込み | CPU CLKのみOFF | なし | ON |
SLEEP | WEI | ウェイクアップイベント | CPU CLKのみOFF | なし | ON |
STOP | PDDS LPDSビット+SLEEPDEEPビット+WFIかWFE | EXTIライン EXTIレジスタ内で指定 | 全ての1.8VドメインCLKはOFF | HSI,HSE OSCはOFF | ON / 低消費電力モード |
STANDBY | PDDS LPDSビット+SLEEPDEEPビット+WFIかWFE | WKUPピン↑エッジ RTCアラーム NRSTピン内の外部リセット IWDGリセット | 全ての1.8VドメインCLKはOFF | HSI,HSE OSCはOFF | ON / 低消費電力モード |
AN2629 のサンプルコードでは、GPIO設定時にまず以下のようにしてから、必要なピンの設定をしている。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_Init(GPIOE, &GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, DISABLE);
一度全てのポートをアナログInputに設定している。GPIO_Mode_IN_FLOATING (リセット時のデフォルト)で、ピンを浮かしておくと、電流を食うため。