STM32F0的低功耗模式
詳細(xì)內(nèi)容見(jiàn)參考手冊(cè)—Power control (PWR)
在STM32應(yīng)用中,為了降低功耗共有以下三種工作模式:
Sleep mode
CPU clock off, all peripherals including ARM? Cortex?-M0 core peripherals like NVIC, SysTick, etc. are kept running..
In Sleep mode, only the CPU is stopped. All peripherals continue to operate and can wake up the CPU when an interrupt/event occurs.
Stop mode
all clocks are stopped
(Stop mode achieves very low power consumption while retaining the content of SRAM and registers. All clocks in the 1.8 V domain are stopped, the PLL, the HSI RC and the HSE crystal oscillators are disabled. The voltage regulator can also be put either in normal or in low power mode.
The device can be woken up from Stop mode by any of the EXTI lines. The EXTI line source can be one of the 16 external lines and RTC.)
Standby mode
1.8V domain powered-off
The Standby mode is used to achieve the lowest power consumption. The internal
voltage regulator is switched off so that the entire 1.8 V domain is powered off. The
PLL, the HSI RC and the HSE crystal oscillators are also switched off. After entering Standby mode, SRAM and register contents are lost except for registers in the RTC domain and Standby circuitry.
The device exits Standby mode when an external reset (NRST pin), an IWDG reset, a rising edge on the WKUP pins, or an RTC event occurs.
備注:
The RTC, the IWDG, and the corresponding clock sources are not stopped by entering Stop or Standby mode.
另外,在正常工作模式(Run mode)下,可以通過(guò)以下方法有效降低功耗:
降低系統(tǒng)時(shí)鐘(system clocks)
關(guān)閉不需要的APB和AHB外設(shè)時(shí)鐘
三種低功耗模式對(duì)比
官網(wǎng)參考資料
STM32F0-參考手冊(cè)–>6 Power control (PWR)
RM0360 Reference manual STM32F030x4/x6/x8/xC and STM32F070x6/xB
STM32F0-數(shù)據(jù)手冊(cè)–>3.5 Power management
DS9773 STM32F030x4 STM32F030x6 STM32F030x8
STM32F0-編程手冊(cè)–>2.5 Power management
PM0215 STM32F0xxx單片機(jī)編程手冊(cè)
STM32F0-應(yīng)用筆記
如何使用USART或LPUART從低功耗模式喚醒STM32F0 / F3 / L0 / L4微控制器
官方參考代碼
應(yīng)用平臺(tái):STM32F030
main.c
#include "stm32f0xx.h"
/* Private variables ---------------------------------------------------------*/
uint8_t DataReceived = 0;
extern __IO uint8_t InterruptCounter;
/* Private function prototypes -----------------------------------------------*/
static void USART_Config(void);
static void WakeUp_StartBitMethod(void);
static void RestoreConfiguration(void);
/**
* @brief Main program
* @param None
* @retval None
*/
int main(void)
{
/* Initialize LEDs available ***********************************************/
STM_EVAL_LEDInit(LED);
/* USART configuration */
USART_Config();
/* Wake up from USART STOP mode by Start bit Method */
WakeUp_StartBitMethod();
/* Configure SystemClock*/
RestoreConfiguration();
/* Configure and enable the systick timer to generate an interrupt each 1 ms */
SysTick_Config((SystemCoreClock / 1000));
while (1)
{}
}
/**
* @brief Start Bit Method to Wake Up USART from Stop mode Test.
* @param None
* @retval None
*/
static void WakeUp_StartBitMethod(void)
{
/* Configure the wake up Method = Start bit */
USART_StopModeWakeUpSourceConfig(USART1, USART_WakeUpSource_StartBit);
/* Enable USART1 */
USART_Cmd(USART1, ENABLE);
/* Before entering the USART in STOP mode the REACK flag must be checked to ensure the USART RX is ready */
while(USART_GetFlagStatus(USART1, USART_FLAG_REACK) == RESET)
{}
/* Enable USART STOP mode by setting the UESM bit in the CR1 register.*/
USART_STOPModeCmd(USART1, ENABLE);
/* Enable the wake up from stop Interrupt */
USART_ITConfig(USART1, USART_IT_WU, ENABLE);
/* Enable PWR APB clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
/* Enter USART in STOP mode with regulator in low power mode */
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
/* Waiting Wake Up interrupt */
while(InterruptCounter == 0x00)
{}
/* Disable USART peripheral in STOP mode */
USART_STOPModeCmd(USART1, DISABLE);
while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET)
{}
DataReceived = USART_ReceiveData(USART1);
/* Clear the TE bit (if a transmission is on going or a data is in the TDR, it will be sent before efectivelly disabling the transmission) */
USART_DirectionModeCmd(USART1, USART_Mode_Tx, DISABLE);
/* Check the Transfer Complete Flag */
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
{}
/* USART Disable */
USART_Cmd(USART1, DISABLE);
}
/**
* @brief Configure the USART Device
* @param None
* @retval None
*/
static void USART_Config(void)
{
USART_InitTypeDef USART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
/* Enable GPIO&USART clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA , ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
/* Configure the HSI as USART clock */
RCC_USARTCLKConfig(RCC_USART2CLK_HSI);
/* USARTx Pins configuration **************************************************/
/* Connect pin to Periph */
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);
/* Configure pins as AF pushpull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* USARTx configured as follow:
- BaudRate = 115200 baud
- Word Length = 8 Bits
- Stop Bit = 1 Stop Bit
- Parity = No Parity
- Hardware flow control disabled (RTS and CTS signals)
- Receive and transmit enabled
*/
USART_DeInit(USART1);
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
/* USART2 IRQ Channel configuration */
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPriority = 0x01;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
/**
* @brief Restore peripheral config before entering STOP mode.
* @param None
* @retval None
*/
static void RestoreConfiguration(void)
{
__IO uint32_t StartUpCounter = 0, HSEStatus = 0;
/* SYSCLK, HCLK, PCLK configuration ----------------------------------------*/
/* Enable HSE */
RCC_HSEConfig(RCC_HSE_ON);
/* Wait till HSE is ready and if Time out is reached exit */
HSEStatus = RCC_WaitForHSEStartUp();
if (HSEStatus == (uint32_t)0x01)
{
/* Enable Prefetch Buffer */
FLASH_SetLatency(FLASH_Latency_1);
/* HCLK = SYSCLK */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* PCLK = HCLK */
RCC_PCLKConfig(RCC_HCLK_Div1);
/* PLL configuration: = HSE * 6 = 48 MHz */
RCC_PREDIV1Config(RCC_PREDIV1_Div1);
RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_CFGR_PLLMULL6);
/* Enable PLL */
RCC_PLLCmd(ENABLE);
/* PLL as system clock source */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
}
}
stm32f0xx_it.c
/* Includes ------------------------------------------------------------------*/
#include "stm32f0xx_it.h"
/* Private variables ---------------------------------------------------------*/
__IO uint8_t InterruptCounter = 0x00;
__IO uint8_t Counter = 0;
/**
* @brief This function handles SysTick Handler.
* @param None
* @retval None
*/
void SysTick_Handler(void)
{
if (Counter == 20)
{
/* Toggle LED's */
STM_EVAL_LEDToggle(LED);
/* Reset Counter */
Counter = 0;
}
else
{
/* increment Counter */
Counter++;
}
}
/**
* @brief This function handles USART interrupt request.
* @param None
* @retval None
*/
void USART1_IRQHandler(void)
{
if (USART_GetITStatus(USART1, USART_IT_WU) == SET)
{
/* Clear The USART WU flag */
USART_ClearITPendingBit(USART1, USART_IT_WU);
InterruptCounter = 0x01;
}
}
實(shí)際參考代碼
然而,在STM32F030中不能配置為USART的start位喚醒。
#define USART_IT_WU ((uint32_t)0x00140316) /*!< Not available for STM32F030 devices */
解決辦法,配置USART的接收非空中斷:USART_IT_RXNE
上一篇:Stm32待機(jī)模式的進(jìn)入與喚醒
下一篇:STM32之低功耗——WKUP待機(jī)喚醒(LCD顯示)
推薦閱讀
史海拾趣
隨著產(chǎn)品質(zhì)量的不斷提升和市場(chǎng)口碑的積累,Accetek公司開(kāi)始積極拓展國(guó)內(nèi)外市場(chǎng)。公司參加了多個(gè)國(guó)際電子展覽和交流活動(dòng),與全球多家知名企業(yè)建立了合作關(guān)系。同時(shí),公司還加強(qiáng)了品牌建設(shè)和市場(chǎng)推廣工作,通過(guò)廣告宣傳、媒體合作等方式提高品牌知名度和美譽(yù)度。這些舉措有效地提升了公司的市場(chǎng)競(jìng)爭(zhēng)力,為公司的快速發(fā)展提供了有力支持。
隨著業(yè)務(wù)的發(fā)展,AirBorn開(kāi)始將目光投向全球市場(chǎng)。公司積極參與國(guó)際電子展會(huì),與全球各地的客戶建立合作關(guān)系。同時(shí),AirBorn還加大了對(duì)研發(fā)和生產(chǎn)設(shè)備的投入,提升產(chǎn)品質(zhì)量和生產(chǎn)效率。這些舉措使得AirBorn的產(chǎn)品在全球范圍內(nèi)贏得了良好的聲譽(yù),公司也逐漸成長(zhǎng)為一家具有全球影響力的電子連接器制造商。
COMPEX公司自成立以來(lái),一直致力于電子技術(shù)的研發(fā)與創(chuàng)新。在光通訊領(lǐng)域,公司憑借先進(jìn)的光通訊模塊電路板小器件技術(shù),逐漸在市場(chǎng)中占據(jù)了一席之地。COMPEX團(tuán)隊(duì)不斷突破技術(shù)壁壘,推出了多款高性能、高可靠性的產(chǎn)品,贏得了客戶的廣泛認(rèn)可。同時(shí),公司還積極與國(guó)內(nèi)外知名企業(yè)和研究機(jī)構(gòu)合作,共同推動(dòng)電子行業(yè)的技術(shù)進(jìn)步。
隨著全球?qū)Νh(huán)境保護(hù)意識(shí)的增強(qiáng),G-Mag在2010年決定實(shí)施綠色轉(zhuǎn)型戰(zhàn)略。公司投入大量資源研發(fā)環(huán)保型電子產(chǎn)品和制造工藝,如開(kāi)發(fā)可降解材料用于產(chǎn)品包裝、優(yōu)化生產(chǎn)線以減少能源消耗和廢棄物排放等。同時(shí),G-Mag還積極推廣循環(huán)經(jīng)濟(jì)理念,與上下游企業(yè)合作建立廢舊電子產(chǎn)品回收體系。這些舉措不僅提升了G-Mag的品牌形象,還為其贏得了更多消費(fèi)者的青睞和政府的支持。在綠色轉(zhuǎn)型的推動(dòng)下,G-Mag實(shí)現(xiàn)了可持續(xù)發(fā)展與經(jīng)濟(jì)效益的雙贏。
在電子行業(yè)快速發(fā)展的背景下,DEI公司意識(shí)到只有不斷創(chuàng)新才能保持競(jìng)爭(zhēng)力。因此,公司加大了對(duì)研發(fā)的投入,積極引進(jìn)新技術(shù)和人才。通過(guò)不斷的努力,DEI公司成功推出了一系列具有自主知識(shí)產(chǎn)權(quán)的創(chuàng)新產(chǎn)品,涵蓋了多個(gè)領(lǐng)域。這些產(chǎn)品不僅提升了公司的競(jìng)爭(zhēng)力,也為公司贏得了更多的市場(chǎng)份額。
谷峰電子有限公司的故事始于1995年,當(dāng)時(shí)公司在香港成立,標(biāo)志著其半導(dǎo)體元器件研發(fā)與銷售的起點(diǎn)。初期,面對(duì)激烈的市場(chǎng)競(jìng)爭(zhēng)和技術(shù)挑戰(zhàn),谷峰團(tuán)隊(duì)?wèi){借對(duì)半導(dǎo)體技術(shù)的深刻理解和對(duì)市場(chǎng)需求的敏銳洞察,逐步確立了以功率MOSFET為核心產(chǎn)品的戰(zhàn)略方向。2000年,谷峰在深圳設(shè)立分公司,進(jìn)一步擴(kuò)大了其研發(fā)和銷售網(wǎng)絡(luò),為公司的快速發(fā)展奠定了堅(jiān)實(shí)基礎(chǔ)。
跪求8255單片機(jī)交通燈控制(定時(shí)器)~~~~~~ 只學(xué)了用中斷的,定時(shí)器的真不會(huì)啊~高手幫忙下啊~有沒(méi)有以前做過(guò)的扔個(gè)程序給我啊~ 題目:采用8255并行口的交通燈的控制 南北燈2秒---綠燈2s --綠燈2s--黃燈2s 東西綠燈2S--黃燈2S--紅燈2S---綠燈2S ...… 查看全部問(wèn)答∨ |
C語(yǔ)言專題——標(biāo)準(zhǔn)庫(kù) 1 三角函數(shù) double sin (double); double cos (double); double tan (double); 2 反三角函數(shù) double asin (double); 結(jié)果介于[-PI/2, PI/2] double acos (double); 結(jié)果介于[0, PI] double atan (double); ...… 查看全部問(wèn)答∨ |
8*8點(diǎn)陣 奧運(yùn)會(huì)開(kāi)幕式模擬 本帖最后由 paulhyde 于 2014-9-15 03:41 編輯 奧運(yùn)會(huì)開(kāi)幕式模擬 … 查看全部問(wèn)答∨ |
|
C#應(yīng)用程序可以對(duì)驅(qū)動(dòng)的訪問(wèn)嗎? 非使用C#編寫(xiě)驅(qū)動(dòng)程序,而是使用C#對(duì)驅(qū)動(dòng)的訪問(wèn)。 如果有,有哪些方案呢,是否能否提供些資料給我,謝謝。 我指的是USB方面的驅(qū)動(dòng)。… 查看全部問(wèn)答∨ |
2410的USB Host不能識(shí)別U盤(pán)!硬件問(wèn)題 生產(chǎn)的時(shí)候,所有的板子都是一樣的,系統(tǒng)也是一樣的,用的是2410的host和device復(fù)用口,配置成HOST口,一些板子能夠正常識(shí)別U盤(pán) 而一些板子卻不能識(shí)別,請(qǐng)問(wèn)這是什么原因,謝謝… 查看全部問(wèn)答∨ |
zstack安裝問(wèn)題 請(qǐng)大俠救我!!! 安裝ZStack-CC2430-1.4.2-1.1.0的時(shí)候老是出現(xiàn)問(wèn)題, 要怎么解決啊!!… 查看全部問(wèn)答∨ |
|
How to set up the development environment for AM335X 中文手冊(cè) How to set up the development environment for AM335X 中文手冊(cè)… 查看全部問(wèn)答∨ |
調(diào)試stm32時(shí)運(yùn)行一條語(yǔ)句后進(jìn)入硬中斷HardFault_Handler typedef struct _PARA_SET { #if STRING_STORE_USE_ARRAY char name[NAME_STRING_MAX]; char &n ...… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 英飛凌微控制器:以全新實(shí)惠套件和強(qiáng)大開(kāi)發(fā)環(huán)境為開(kāi)發(fā)者提供支持
- iTOP-i.MX6開(kāi)發(fā)板設(shè)備數(shù)驅(qū)動(dòng)Menuconfig的用法
- 迅為IMX6ULL開(kāi)發(fā)板Qt for Android搭建開(kāi)發(fā)環(huán)境
- 迅為i.MX8M mini開(kāi)發(fā)板Windots QT系統(tǒng)開(kāi)發(fā)環(huán)境搭建
- 迅為IMX8MM開(kāi)發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開(kāi)發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
- iTOP-4412開(kāi)發(fā)板支持4G以上文件系統(tǒng)擴(kuò)展
- 迅為IMX8MM開(kāi)發(fā)板Yocto系統(tǒng)設(shè)置開(kāi)機(jī)自啟動(dòng)
- 迅為IMX6Q開(kāi)發(fā)板 Buildroot文件系統(tǒng)mqtt測(cè)試
- 高通攜手中國(guó)“汽車朋友圈”亮相2025上海車展: 加速駕駛輔助普惠,推動(dòng)艙駕創(chuàng)新升級(jí)
- 工業(yè)市場(chǎng)正在快速回暖,德州儀器如何重塑電力電子市場(chǎng)?
- 特斯拉:美國(guó)交付的Model Y/3電池包已實(shí)現(xiàn)100%美國(guó)生產(chǎn)
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產(chǎn)品
- 強(qiáng)化中國(guó)市場(chǎng)戰(zhàn)略布局,德州儀器正靈活應(yīng)對(duì)全球關(guān)稅挑戰(zhàn)
- Molex莫仕通過(guò)本地合作和創(chuàng)新加強(qiáng)支持中國(guó)汽車行業(yè)
- 貿(mào)澤開(kāi)售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數(shù)字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實(shí)現(xiàn)車載充電器小型化!
- 用上車規(guī)級(jí)UFS 4.0,讓出行變得高效且可靠
- 車載測(cè)試技術(shù)解析:聚焦高帶寬、多通道同步采集與協(xié)議分析
- Microchip最新SAM 以及 PIC32單片機(jī)軟件開(kāi)發(fā)平臺(tái)-- MPLAB® Harmony V3介紹 ”
- 有獎(jiǎng)直播:ADI數(shù)字主動(dòng)降噪耳機(jī)方案 8月6日上午10:00-11:30 邀您聆聽(tīng)讓技術(shù)為我們靜下來(lái)
- 免費(fèi)測(cè)評(píng)|ESP32-S2-Kaluga-1新型多媒體開(kāi)發(fā)板,靈活拆裝,滿足多種需求
- 【EEWORLD第八屆社區(qū)明星人物】10月明星人物
- 下載Vishay最新通信解決方案 贏取超贊移動(dòng)電源
- 泰克 MSO6B 探索營(yíng):設(shè)計(jì)資源集錦
- TI 工業(yè)周系列研討會(huì)誠(chéng)邀您預(yù)報(bào)名參加,驚喜獎(jiǎng)不停
- D類音頻放大器在汽車信息娛樂(lè)系統(tǒng)中的作用
- 德州儀器:智能天窗帶來(lái)更優(yōu)駕駛體驗(yàn)
- 安森美:智能感知推進(jìn)機(jī)器視覺(jué)的發(fā)展
- “福祿克早間知識(shí)講堂”微信號(hào)上線,如何成為小粉絲?
- 泰克NAB 2019上吸睛操作,展示完整HDR視頻工作流程解決方案
- 集微指數(shù)上漲1.48% 傳中芯國(guó)際獲得美國(guó)成熟制程設(shè)備許可證
- 總投320億元,長(zhǎng)沙惠科第8.6代生產(chǎn)線項(xiàng)目明年1月底點(diǎn)亮投產(chǎn)
- 長(zhǎng)李自學(xué)發(fā)表新年致辭:加大芯片等底層核心技術(shù)投入
- 魅族發(fā)布了2021年全新戰(zhàn)略:一體兩翼
- 小米高管談Multi-link5.0無(wú)縫切換功能
- zstack安裝問(wèn)題 請(qǐng)大俠救我!!!
- HVPSFB中ePWM寄存器配置問(wèn)題
- 220VAC轉(zhuǎn)15VDC加負(fù)載后輸出電壓不對(duì)可能是什么器件問(wèn)題?
- MCU的選用
- Tony Testa總監(jiān)教您如何設(shè)計(jì)適合 Wi-Fi 6的產(chǎn)品
- G組的代碼
- C語(yǔ)言專題——標(biāo)準(zhǔn)庫(kù)
- 8*8點(diǎn)陣 奧運(yùn)會(huì)開(kāi)幕式模擬
- 預(yù)告:我們的ufun即將開(kāi)講啦(主講:張進(jìn)東)
- How to set up the development environment for AM335X 中文手冊(cè)