国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 1861|回復: 0
打印 上一主題 下一主題

【開發教程8】瘋殼·AI語音人臉識別-PWM

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2022-7-25 17:32:13 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
CC3200AI實驗教程
——瘋殼·開發板系列




    PWM(Pulse Width Modulation)即脈沖寬度調制。PWM運用非常的廣泛,大到航天飛船,小到便攜式USB風扇都可以見到PWM的身影。
    許多MCU的定時器均帶有PWM模式,CC3200也不例外。
    1.1寄存器
    CC3200通用定時器支持PWM模式。在PWM模式下,定時器被配置為一個24位的減計數器,初始值在GPTMTnILR和GPTMTnPR寄存器中進行定義。在該模式中,PWM頻率和周期是同步事件,這樣可以消除毛刺。PWM模式可以通過向寄存器 GPTMTnMR中的TnAMS位寫入0x01,TnCMR位寫入0x00,TnMR位寫入0x02。當定時器使能時,裝載到定時器寄存器中的值如表1.0.1所示。
    表1.0.1 裝載到定時器的值

   
    表1
    當通過軟件寫GPTMCTL寄存器中的TnEN位時,計數器開始進行減計數直到0。在周期模式中的下一個計數循環,計數器從GPTMTnILR和GPTMTnPR寄存器中裝載初始值,并重新開始計數直到通過軟件清除GPTMCTL寄存器中的TnEN位進行關閉。該定時器可以通過上升沿、下降沿和邊沿觸發這3種類型的事件來產生中斷。事件類型通過GPTMCTL寄存器中的TnEVENT位來進行配置。中斷通過
    GPTMTnMR寄存器中的TnPEMIE位來進行使能。當事件發生時,GPTMRIS寄存器中的CnERIS位被置位。并且一直保持到通過GPTMICR寄存器來進行清除。如果捕捉模式事件中斷通過GPTMIMR寄存器進行使能,則通用定時器也要置位GPTMMIS寄存器中的CnEMIS位。需要注意的是中斷狀態只有在TnPWMIE被置位時才會更新。
    另外,通過置位GPTMCTL寄存器中的TnOTE位和GPTMDMAEV寄存器中的
    CnEDMAEN位使能DMA觸發模式,則當TnPWMIE被置位并且發生捕捉時間時, 定時器自動產生DMA的觸發事件。
    在PWM模式中,GPTMTnR和GPTMTnV寄存器始終保持相同的值。
    當計數器的值等于GPTMTnILR和GPTMTnPR寄存器的值時,輸出PWM信號, 當計數器的值等于GPTMTnMATCHR和GPTMTnPMR寄存器的值時,信號進行翻轉。可以通過軟件設置GPTMCTL寄存器中的TnPWML位,來對PWM信號的電平進行翻轉。這里要注意的是如果PWM輸出翻轉使能了,那么邊沿檢測的行為就會相反,本來上升沿有效的,現在就變成了下降沿有效。
    如圖1.0.1就是一個產生PWM信號的例子。

  
    圖1.0.1 產生PWM信號的例子
    圖1
    GPTMCFG寄存器配置通用定時器模塊的全局操作。確定通用定時器工作于32位模式還是16位模式。該寄存器中的值只能是在GPTMCTL寄存器中的TAEN和TBEN 兩位被清零時改變。如圖1.0.2所示為該寄存器及其位定義。


    圖1.0.2 GPTMCFG寄存器及其位定義
    圖2
    即把2~0 位寫入0,配置為32位定時器模式;寫入4,配置為16位定時器模式。
    GPTMTAMR寄存器的配置是基于GPTMCFG寄存器的配置來進行選擇的。在 PWM模式中,置位TAAMS位、清除TACMR位和配置TAMR為0x01或者0x02。如圖1.0.3所示為GPTMTAMR寄存器,如圖1.0.4為其位定義。

   
    圖1.0.3 GPTMTAMR寄存器
    圖3


   
    圖1.0.4 GPTMTAMR寄存器
    圖4
    GPTMTBMR寄存器控制獨立定時器B的工作模式。當定時器A和定時器B一起使用時,該寄存器被忽略,而是通過GPTMTAMR來控制定時器A和定時器B的工作模式。注意:除了TCACT位,其它位都必須在GPTMCTL寄存器中的TBEN 位清零時進行配置。如圖1.0.5所示為GPTMTBMR寄存器,如圖1.0.6為其位定義。

   
    圖1.0.5 GPTMTBMR寄存器
    圖5

   
    圖1.0.6 GPTMTBMR寄存器位定義
    圖6

    GPTMCTL寄存器為定時器的控制寄存器,如圖1.0.7為GPTMCTL寄存器,如圖1.0.8為其位定義。

   
    圖1.0.7 GPTMCTL寄存器
    圖7

   
    圖1.0.8 GPTMCTL寄存器位定義
    圖8
    GPTMIMR寄存器可以軟件使能/關閉定時器的控制電平中斷。置位可以打開對應的中斷,清零可以關閉對應的中斷,如圖1.0.9所示為GPTMIMR寄存器,如圖1.1.0為其位定義。

   
    圖1.0.9 GPTMIMR寄存器
    圖9

   
    圖1.1.0 GPTMIMR寄存器位定義
    圖10
    GPTMRIS寄存器為中斷源狀態寄存器,通過該寄存器可以獲取中斷源。如圖1.1.1為GPTMRIS寄存器,如圖1.1.2為其位定義。

   
    圖1.1.1 GPTMRIS寄存器
    圖11

   
    圖1.1.2GPTMRIS寄存器位定義
    圖12
    GPTMMIS寄存器為中斷掩碼狀態寄存器,可以檢測是否產生中斷。如圖1.1.3所示為GPTMMIS寄存器,如圖1.1.4為其位定義。

  
    圖1.1.3 GPTMMIS寄存器
    圖13

   
    圖1.1.4 GPTMMIS寄存器位定義
    圖14
    GPTMICR寄存器用于清除GPTMRIS和GPTMIS寄存器中的狀態位,寫入1則清除對應的中斷。如圖1.1.5所示為GPTMICR寄存器,如圖1.1.6所示為其位定義。

   
    圖1.1.5 GPTMICR寄存器
    圖15

   
    圖1.1.6 GPTMICR寄存器位定義
    圖16
    當通用定時器被配置為32位模式,GPTMTAILR作為一個32位的寄存器(高16位對應與定時器B裝載值寄存器的內容)。在16位模式,寄存器高16位讀取值為0,并且對GPTMTBILR寄存器的狀態沒有影響。如圖1.1.7所示為GPTMTAILR寄存器及其位定義。

   
    圖1.1.7 GPTMTAILR寄存器及其位定義
    圖17
    當通用定時器配置為32位模式時,GPTMTBILR寄存器中[15:0]位的內容被裝載到GPTMTAILR寄存器的高16位。讀取GPTMTBILR寄存器,則返回定時器B的當前值,寫操作無效。在16位模式,[15:0]位用于裝載值。[31:16]位保留不使用。如圖1.1.8所示為GPTMTBILR寄存器及其位定義。

   
    圖1.1.8 GPTMTBILR寄存器及其位定義
    圖18
            當通用定時器被配置為32位模式時,GPTMTAMATCHR作為32位寄存器(高16位對應與GPTMTBMATCHR寄存器的內容)。在16位模式,寄存器的高16位讀取為0,并且對GPTMTBMATCHR的狀態沒有影響。如圖1.1.9所示為寄存器GPTMTAMATCHR及其位定義。

   
    圖1.1.9 GPTMTAMATCHR及其位定義
    圖19
    當通用定時器配置為32位模式時,GPTMTBMATCHR寄存器的[15:0]位被裝載到寄存器GPTMTAMATCHR寄存器的高16位。讀取GPTMTBMATCHR寄存器得到定時器B的當前值,寫操作無效。在16位模式中,[15:0]位用于匹配值。[31:16]位保留不使用。如圖1.2.0所示為GPTMTBMATCHR寄存器及其位定義。

   
    圖1.2.0 GPTMTBMATCHR寄存器及其位定義
    圖20
    GPTMTAPR寄存器通過軟件來擴展獨立定時器的范圍。在單次或者周期減計數模式下該寄存器作為定時計數器的預分頻器。如圖1.2.1所示為GPTMTAPR寄存器及其位定義。

   
    圖1.2.1 GPTMTAPR寄存器及其位定義
    圖21
    GPTMTBPR寄存器通過軟件來擴展獨立定時器的范圍,在單次或者周期減計數模式下該寄存器作為定時計數器的預分頻器。如圖1.2.2所示為GPTMTBPR寄存器及其位定義。

   
    圖1.2.2 GPTMTBPR寄存器及其位定義
    圖22
    GPTMTAPMR寄存器擴展獨立定時器GPTMTAMATCHR的范圍。當寄存器工作于16位模式時,該寄存器表示[23:16]位。如圖1.2.3所示為GPTMTAPMR寄存器及其位定義。

   
    圖1.2.3 GPTMTAPMR寄存器及其位定義
    圖23
    GPTMTBPMR寄存器擴展獨立定時器GPTMTAMATCHR的范圍。當寄存器工作于16位模式時,該寄存器表示[23:16]位。如圖1.2.4所示為GPTMTBPMR寄存器及其位定義。

   
    圖1.2.4 GPTMTBPMR寄存器及其位定義
    圖24
    當定時器配置為32位模式時,GPTMTAR作為32位寄存器使用(高16位對應 GPTMTBR寄存器的內容)。在16位輸入邊沿計數,輸入邊沿定時和PEM模式,[15:0]位包含計數器的值,[23:16]位包含預分頻高8位的值。[31:24]位讀取值始終為0。可以讀取[GPTMTAV]的[23:16]位來獲取16位模式單次和周期模式的預分頻值。讀取GPTMTAPS寄存器可以獲取定期快照模式下的預分頻值。如圖1.2.5所示為GPTMTAR寄存器及其位定義。

   
    圖1.2.5 GPTMTAR寄存器及其位定義
    圖25
    當通用定時器配置為32位模式時,GPTMTBR寄存器的[15:0]位被裝載到 GPTMTAR寄存器的高16位。讀取GPTMTBR寄存器得到定時器B的當前值。在16位模式下,[15:0]位包含計數器的值,[23:16]位包含在輸入邊沿計數、邊沿定時和PWM模式下的預分頻。[31:24]位讀取為0。可以通過讀取GPTMTBV寄存器中的[23:16]位可以獲取16位單次和周期模式的預分頻值。讀取GPTMTBPS寄存器可以獲取周期快照模式下的預分頻。如圖1.2.6所示為GPTMTBR寄存器及其位定義。

   
    圖1.2.6 GPTMTBR寄存器及其位定義
    圖26
    當定時器配置為32位模式時,GPTMTAV作為32位寄存器(高16位對應GPTMTBV寄存器的內容)。在16位模式,[15:0]位包含計數器的值,[23:16]位包含分頻值。在單次或周期減計數模式,[23:16]位存儲真實的預分頻值,意味著在減[15:0]位的值之前,先減[23:16]位的值,[31:24]位讀取始終為0。如圖1.2.7所示為GPTMTAV寄存器及其位定義。

   
    圖1.2.7 GPTMTAV寄存器及其位定義
    圖27
    當通用定時器配置為32位模式,GPTMTBV寄存器[15:0]位的值被裝載到 GPTMTAV寄存器的高16位。讀取GPTMTBV寄存器,則返回定時器B的當前值。在16位模式,[15:0]位包含計數器的值,[23:16]位包含當前的預分頻值。在單次或周期模式,[23:16]位為真實的預分頻值,意味著在[15:0]位減數之前,[23:16]位先進行減數。[31:24]位讀取值為0。如圖1.2.8所示為GPTMTBV寄存器及其位定義。

   
    圖1.2.8 GPTMTBV寄存器及其位定義
    圖28
    GPTMDMAEV寄存器允許軟件使能和關閉定時器DMA觸發事件。置位則對應的DMA觸發使能,清零則關閉。如圖1.2.9所示為GPTMDMAEV寄存器,如圖1.3.0所示為其位定義。

   
    圖1.2.9 GPTMDMAEV寄存器
    圖29

   
    圖1.3.0 GPTMDMAEV寄存器位定義
    圖30
    1.2 實驗現象
    打開Pwm_Demo,在該次工程中主要是實現板子上三顆LED的“呼吸燈”效果,即要把GPIO_9、GPIO_10、GPIO_11三個IO口配置為PWM模式,逐次增加或降低該些端口的占空比即可使LED“呼吸”。如圖1.3.1為Pwm_Demo的main函數。

   
    圖1.3.1 Pwm_Demo的main函數
    圖31
    首先看到mian函數中的PinMuxConfig()函數,如圖2.x所示為該函數的代碼。
    在該代碼中,先使能時鐘,然后把Pin64(GPIO_9)、Pin01(GPIO_10)、Pin02(GPIO11)分別配置為模式3,即PWM模式。為什么呢?在datasheet中可以里看到,如圖1.3.2所示的端口復用圖,在該圖中可以看到Pin64(GPIO_9)在模式3下會被復用為PWM_05;Pin01(GPIO_10)在模式3下會被復用為PWM_06;Pin02(GPIO_11)在模式3下會被復用為PWM_07。

   
    圖1.3.2 PinMuxConfig0函數代碼
    圖32

   
    圖1.3.3 端口復用圖
    圖33
    配置好PWM輸出引腳后,就該把定時器與該輸出引腳關聯起來,在main函數中的InitPWMModules()函數是關鍵,如圖1.3.4為InitPWMModules()函數。

   
    圖1.3.4 InitPWMModules()函數
    圖34
    在該函數中的SetupTimerPWMMode()把Timer2的Timer B與PWM_5即GPIO_9關聯起來;把Timer3的Timer B與PWM_6即GPIO_10關聯起來;把Timer3的Timer A與PWM_7即GPIO_11關聯起來。問題來了,為什么這樣就能關聯起來了呢?打開CC3200的《Technical Reference Manual》即常說的參考手冊,可以看到一個定時器與引腳映射圖,如圖1.3.5所示。

   
    圖1.3.5 定時器與引腳映射圖
    圖35
    在該圖中可以清楚的看到PWM_5正是對應著Timer2的Timer B;PWM_6正是對應著Timer3的Timer A;PWM_7正是對應著Timer3的Timer B。
    回到main函數中,實現LED呼吸的部分代碼,如圖1.3.6所示。

   
    圖1.3.6 LED“呼吸”實現部分代碼
    圖36
    該代碼主要就是不斷地改變輸出端的占空比,從而實現LED的“呼吸”。編譯代碼,打開UniFlash,把Bin文件下載到板子上(參考GPIO小節)。把撥碼開關D5、D6、D7撥到“ON”,按下復位,可以看到如圖1.3.7所示的LED“呼吸”效果。

   
    圖1.3.7 LED“呼吸”效果
    圖37



文件下載請點擊: 【6】PWM.pdf (3.73 MB)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 奇米影视狠狠久久中文| 性感美女视频免费网站午夜| 色视频免费国产观看| 欧美色成人| 亚洲欧美日韩中文综合v日本| 思思久久99热只有精品| 生活毛片| 四虎影院久久| 亚洲福利影院| 日韩亚洲欧美性感视频影片免费看| 午夜性刺激免费视频| 亚洲精品老司机综合影院| 色综合天天综合中文网| 一级毛片观看| 欧洲一级鲁丝片免费| 色网站在线| 色婷婷亚洲| 亚洲国产成人久久精品动漫 | 色综合久| 日韩欧美亚洲综合一区二区| 日本aⅴ在线不卡免费观看| 亚洲成a人| 奇米精品一区二区三区在| 特黄十八岁大片| 三级黄网站| 青青草一区国产97| 欧美亚洲91| 日b视频免费| 三级全黄a| 视频在线一区二区| 日本福利视频网站| 色综合网天天综合色中文男男| 亚洲成a人| 奇米在线免费视频| 一本高清在线视频| 特级深夜a级毛片免费观看| 青草视频网址| 武侠古典久久亚洲精品| 色精品| 一个人看的毛片| 骚色网站|