国产成人av人人爽人人澡-亚洲国产日韩欧美一区-好吊日视频这里只有精品-日本高清精品视频在线

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當前位置:首頁 >> MM32/靈動微電子 >> MM32W無線MCU系列產品應用筆記 —— 阻塞式例程

MM32W無線MCU系列產品應用筆記 —— 阻塞式例程

關鍵字:靈動微電子 MM32W無線MCU系列 阻塞式例程 作者: 來源: 發(fā)布時間:2022-06-07  瀏覽:4
在上一章節(jié),我們了解了MM32W0系列藍牙模塊的中斷式例程,也使用AT指令對模塊進行了簡單的操作。下面我們將對軟件架構進行簡單的講解。

阻塞式例程介紹

對于大部分的低功耗設備來說,CPU都是處在休眠模式中,只在接收到特定數(shù)據(jù)的時候被喚醒處理少量數(shù)據(jù),這種應用場景比較適合阻塞方式運行,這種方式配置簡單,CPU大部分時間都被藍牙服務占用,在收到來自射頻模塊的IRQ信號時需要及時處理,因此,用戶的代碼不允許出現(xiàn)阻塞。

我們先看一下例程中的main函數(shù):

int main(void)


{


unsigned long temp=0x800000;


SystemClk_HSEInit();               //系統(tǒng)時鐘配置為48MHz


            


#ifdef USE_UART                    //目前只支持UART接收與發(fā)送AT指令


#ifdef USE_AT_CMD    //開啟AT指令功能


SleepStop = 0x01;       //空閑時低功耗,0x00不休眠,0x01睡眠,0x02停機模式


#endif


#endif


            


#ifdef USE_UART                    //開啟UART功能,修改全局宏定義改變UART和對應引腳


uart_initwBaudRate();               //波特率默認9600,可以修改uart.c中的BaudRate變量


#endif


            


#ifdef USE_I2C                        //開啟I2C功能


IIC_Init(I2C1);               // I2C1,標準模式,SCL PB6 ,SDA PB7 ,SendDataFlag PA10


#endif


 


#ifdef USE_USB                      //開啟USB功能


usb_test();                    //使用PA11、PA12,枚舉為USB HID設備


#endif


 


//SysTick_Count每1ms加一,系統(tǒng)時鐘改變時應調用SysTick_Config()函數(shù)


SysTick_Configuration();           


            


//啟用SPI2,在芯片內部與射頻模塊通信,速度應不低于6Mhz


SPIM_Init(SPI2,/*0x06*/0x06); 


            


IRQ_RF();         //配置PB8的IRQ 功能處理射頻模塊信號,用于低功耗喚醒


            


while(temp--);                //延時,方便燒錄程序


radio_initBle(0x48, &ble_mac_addr);   //初始化射頻模塊(3dBm),并獲取MAC地址


printf("\r\nMAC:%02x-%02x-%02x-%02x-%02x-%02x\r\n", ble_mac_addr[5],ble_mac_addr[4],ble_mac_addr[3],ble_mac_addr[2],ble_mac_addr[1],ble_mac_addr[0]);


            


ble_run(160*2); //廣播間隔320*0.625=200 ms,


}


對于藍牙,必要的系統(tǒng)資源有:用于計時的Systick和與射頻模塊通信的SPI2,Systick使用SysTick_Count變量計時,也可以使用這個變量主動避開與IRQ處理任務的沖突;


目前程序支持RUN MODE,SLEEP MODE,STOP MODE模式,其中,在stop模式下MCU可以通過任意一個外部中斷線喚醒,比如MM32W073NTB封裝,在芯片設計上將IRQ與PB8共用一個GPIO口,在MM32W073PFB封裝上,IRQ是獨立的GPIO,需要用戶在設計時將IRQ連接到任意一個GPIO口修改外部中斷喚醒源即可實現(xiàn)stop喚醒模式;


例程中通過修改全局宏定義,可以啟用UART、IIC和USB,目前都支持AT指令方式;


藍牙的廣播間隔由ble_run()中的參數(shù)決定,單位為0.625ms;


與中斷式例程不同的地方:


① 藍牙服務會定時調用接口函數(shù)McuGotoSleepAndWakeup();


② ble_run()是一個阻塞函數(shù),后續(xù)程序將不會執(zhí)行,中斷模式中ble_run參數(shù)為0,且不是阻塞函數(shù);


③ 中斷式例程中藍牙廣播間隔由ble_run_interrupt_start()函數(shù)的參數(shù)決定,阻塞式例程中藍牙廣播間隔由ble_run()的參數(shù)決定;

阻塞式程序流程


圖1 阻塞式程序流程

阻塞式程序流程如上圖。實際使用中,藍牙服務將定時調用UsrProcCallback()函數(shù),在連接后允許時調用gatt_user_send_notify_data_callback()。兩個函數(shù)的處理時間應盡可能短,不能影響IRQ信號的處理,否則可能出現(xiàn)藍牙連接斷開、無藍牙廣播等問題。

我們可以將用戶程序放在callback.c的UsrProcCallback()函數(shù)中定時執(zhí)行,如例程中的AT指令的處理CheckAtCmdInfo()函數(shù),注意不要阻塞?梢詫l(fā)送自身狀態(tài)的程序放在gatt_user_send_notify_data_callback()函數(shù)中,同樣不得阻塞。

如需要了解更多靈動微MCU產品,請聯(lián)系靈動微核心代理商-穎特新科技

編輯:ls  最后修改時間:2022-06-07

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

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

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

亚洲国产婷婷六月丁香| 超薄丝袜足一区二区三区| 国产性色精品福利在线观看| 日本91在线观看视频| 欧美一级特黄特色大色大片| 国产又粗又长又大高潮视频| 91亚洲国产—区=区a| 亚洲一区二区三区四区| 亚洲一区精品二人人爽久久| 内射精品欧美一区二区三区久久久| 欧美日韩国产一级91| 99久久免费看国产精品| 日韩一区二区三区18| 日本道播放一区二区三区| 亚洲中文字幕熟女丝袜久久 | 精品精品国产自在久久高清| 国产精品尹人香蕉综合网| 2019年国产最新视频| 色婷婷人妻av毛片一区二区三区| 欧美同性视频免费观看| 偷拍洗澡一区二区三区| 精品欧美国产一二三区| 麻豆一区二区三区在线免费| 99久久人妻中文字幕| 午夜精品在线观看视频午夜| 亚洲深夜精品福利一区| 伊人久久五月天综合网| 中日韩美女黄色一级片| 国产又粗又长又大的视频| 国产精品久久女同磨豆腐| 91人妻人澡人人爽人人精品| 好吊妞在线免费观看视频| 五月婷婷欧美中文字幕| 亚洲国产一区精品一区二区三区色| 日韩精品视频高清在线观看| 中文字幕不卡欧美在线| 日韩欧美国产精品自拍| 国产av一区二区三区四区五区| 日韩国产亚洲欧美激情| 欧美一级片日韩一级片 | 高清一区二区三区不卡免费|