98国产精品综合一区二区三区,国产福利视频,男人添女人囗交做爰视频,日本免费一区二区三区视频观看

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當前位置:首頁 >> MM32/靈動微電子 >> MM32W無線MCU系列產(chǎn)品應用筆記 —— 低功耗BLE藍牙應用

MM32W無線MCU系列產(chǎn)品應用筆記 —— 低功耗BLE藍牙應用

作者: 來源: 發(fā)布時間:2019-06-15  瀏覽:33

在上一章節(jié),我們了解了MM32W0系列藍牙模塊的軟件架構(gòu),下面我們來看一下低功耗模式下用到的休眠和時鐘配置函數(shù)。

 

目前MM32W0系列有n4q1兩個版本,n4主要針對需要大容量的應用方案,q1針對超低功耗精簡型的應用方案,兩個型號的低功耗編程操作方式相同,不同的只是MCU的時鐘系統(tǒng)控制方式,在參考程序已經(jīng)提供不同的模式下功能,用戶只要改變相對應的宏定義即可實現(xiàn)對應的低功耗功能。

 

休眠函數(shù)

對于低功耗應用來說,休眠是非常關(guān)鍵的一個功能。開啟藍牙廣播時MM32W0的控制模塊有三種工作模式:正常模式、睡眠模式和停機模式。在stop模式下,射頻模塊都會通過IRQ引腳定時觸發(fā)一個外部中斷,可以借此喚醒STOP模式中的控制模塊。

 

在阻塞模式中,休眠是藍牙服務通過調(diào)用void McuGotoSleepAndWakeup(void) 函數(shù)實現(xiàn)的,對于中斷模式,則是用戶在代碼中主動調(diào)用IrqMcuGotoSleepAndWakeup()函數(shù)來實現(xiàn)。

 

void McuGotoSleepAndWakeup(void) // auto goto sleep AND wakeup, porting api

{

if ((SleepStop)&&                                                                     //開啟休眠功能

 (TxTimeout < SysTick_Count)&&

 (RxTimeout < SysTick_Count))                        //UART無收發(fā)數(shù)據(jù)

{

if(SleepStop == 1){                                           //SLEEP

SCB->SCR &= 0xfb;

__WFE();

}else{                                                               //STOP

SysClk48to8();                                      //HSI 6分頻

SCB->SCR |= 0x4;

__WFI();                                                                       //進入STOP模式

                                         

RCC->CR|=RCC_CR_HSION;   //STOP模式喚醒,使能時鐘

SysClk8to48();                                      //PLL倍頻至48MHz

}

}

}

            

void IrqMcuGotoSleepAndWakeup(void) // auto goto sleep AND wakeup, porting api

{

if(ble_run_interrupt_McuCanSleep() == 0) return;

#ifdef USE_UART

if ((SleepStop)&&

 (TxTimeout < SysTick_Count)&&

 (RxTimeout < SysTick_Count))

{

if(SleepStop == 1){                   //sleep

SleepStatus = 1;

SCB->SCR &= 0xfb;

__WFE();                                  //控制模塊進入睡眠模式

}else{                                        //stop

SleepStatus = 2;

SysClk8M();

SCB->SCR |= 0x4; 

SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; 

__WFI();

}

}

#endif

}

在中斷方式中,需要在中斷處理函數(shù)中重新配置時鐘:

void EXTI4_15_IRQHandler(void)

{

EXTI_ClearITPendingBit(EXTI_Line8); 

if(2 == SleepStatus){                //stop

RCC->CR|=RCC_CR_HSION;               //HSI使能

RCC->CR |= RCC_CR_PLLON;            //PLL使能

RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;

SysTick_Config(48000);

}

SleepStatus = 0; 

ble_run(0); 

}

 

時鐘配置

進入低功耗前后需要配置時鐘,從低功耗模式恢復時,時鐘默認設(shè)置為HSI6分頻,需要重新配置系統(tǒng)時鐘。

 

注意:下面函數(shù)屬于藍牙庫接口,沒有用到也不要刪除。

相關(guān)時鐘配置:

 

void SysClk48to8(void)1

{

RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);//selecting PLL clock as sys clock

    

while (RCC_GetSYSCLKSource() != 0x0)

{}

    

RCC->CR &=~(RCC_CR_PLLON);                    //clear PLL

SysTick_Config(8000);

}

 

void SysClk8to48(void)             //STOP模式中恢復

{

SetSysClock_HSI(4);//HSI:12*4=48M

 

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//selecting PLL clock as sys clock

while (RCC_GetSYSCLKSource() != 0x08)

{}

SysTick_Config(48000);

}

void SetSysClock_HSI(u8 PLL)            //重新配置HSIPLL

{  

unsigned char temp=0;   

  

RCC->CR|=RCC_CR_HSION;  

while(!(RCC->CR&RCC_CR_HSIRDY));

RCC->CFGR=RCC_CFGR_PPRE1_2; //APB1=DIV2;APB2=DIV1;AHB=DIV1;

  

RCC->CFGR&=~RCC_CFGR_PLLSRC;              //PLLSRC ON 

  

RCC->CR &=~(RCC_CR_PLLON);                    

  

RCC->CR &=~(0x1f<<26);        //clear PLL

RCC->CR|=(PLL - 1) << 26;  //setting PLL value 2~16

  

FLASH->ACR=FLASH_ACR_LATENCY_1|FLASH_ACR_PRFTBE;       //FLASH 2 delay clk cycles

  

RCC->CR|=RCC_CR_PLLON; //PLLON

while(!(RCC->CR&RCC_CR_PLLRDY));//waiting for PLL locked

RCC->CFGR&=~RCC_CFGR_SW;

RCC->CFGR|=RCC_CFGR_SW_PLL;//PLL to be the sys clock

while(temp!=0x02)    //waiting PLL become the sys clock

{    

temp=RCC->CFGR>>2;

temp&=0x03;

}

 

以上時鐘配置只是針對MM32W0系列的n4版本,在q1版不需要以上時鐘操作。MM32W051PFB(q1)藍牙功耗參數(shù):

 



SleepStop設(shè)置成0x02,MCU將會進入STOP模式,在保持 SRAM 和寄存器內(nèi)容不丟失的情況下,停機模式可以達到最低的電能消耗。在停機模式下,HSI 的振蕩器和 HSE 晶體振蕩器被關(guān)閉。可以通過任一配置成 EXTI 的信號或者看門狗不復位方式把微控制器從停機模式中喚醒,EXTI 信號可以是 16 個外部 I/O 口之一、 PVD 的輸出的喚醒信號。。STOP模式下無法下載調(diào)試程序。為了方便調(diào)試,可以在程序開始時加入一個延時,這樣每次復位都有一段時間可以下載程序。

編輯:admin  最后修改時間:2019-06-15

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2025 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

被c哭着爬走又被拉回来挺进h| 久爱99爱九九av视频在线| 欧美又粗又大xxxxbbbb疯狂| 亚洲精品一区二区国产精华液| 被医生绑在妇科椅调教| chinesegv无套粗大激情| 欧美人与物videos另类| 小雪被老汉各种姿势玩弄| 女女互揉吃奶揉到高潮视频| 精品国产一区二区三区久久| 黑帮大佬和我的365天| 久久久国产精品人人片| 最近免费中文字幕mv免费高清版| 极品少妇xxxx精品少妇偷拍| 亚洲国产av一区二区三区| 特级做a爰片毛片免费69| 美女性爽视频国产免费app| sm调教贱屁股眼哭叫求饶h| 色狠狠色噜噜av天堂五区| 国产精品乱码一区二三区| 欧美人与善交大片免费看| 好男人资源在线看免费的| 狼牙套加粗震动入珠套h| 差差漫画在线观看登录页面弹窗| 丰满少妇在线观看网站| 少妇养生馆spa私密精油按摩| 色窝窝无码一区二区三区| 免费av网站| 57歳の熟女セックス| 含着jing液去上课h男男| 国产偷抇久久精品a片69| 免费看曰批女人爽的视频| 成人妇女免费播放久久久| 国产欧美日韩丝袜高跟鞋| 五月槐花香电视剧全集免费| 亚洲一区二区| 被黑人姿势猛到抽搐视频| 无遮掩爆乳全彩h漫画羞羞| 丝袜灬啊灬快灬高潮了AV| gogo色少妇人体| 巨大黑人极品videos精品|