日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一起学nRF51xx 9 -  pwm

發布時間:2025/4/5 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一起学nRF51xx 9 -  pwm 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

上一講我們學習了nrf51822定的器的使用,那行如何用定時器實現PWM輸出呢,NRF51的time模塊不支持 PWM 功能,不可我們可以通過定時器+PPI+GPIOTE模塊一起工作的方式在NRF51XX上產生 PWM 信號。 下面以使用 TIMER0 為例, 來介紹用定時器產生 PWM 的方法。

????? 關于定時器,PPI,及GPIOTE模塊的介紹可以查看之前的博文,本節將基于NRF51822芯片實現PWM信號輸出,實現呼吸燈效果。實現思路:

在初始化TIMER0的時候把PWM脈沖輸出引腳電平置為一個初始電平,再給定時器的CC[0]和CC[1]分別賦一個數值,并且CC[1]的數值要比CC[0]大。當定時器內部計數器的值跟CC[0]相等的時候,見上圖的counter0所示位置。這個時候把PWM脈沖輸出引腳電平翻轉。定計數器繼續計數,當計數器的值跟CC[1]相等的時候,見上圖counter1所示位置,再次把PWM脈沖輸出引腳電平翻轉,同時把TIMER0內部計數器的值清零。到此,一個PWM周期完成,CC[0]稱之為占空比;CC[1]我們稱之為PWM周期。上述過程持續進行就會產生連續的PWM信號??梢酝ㄟ^改變CC[0]的值來調整占空比;也可以通過改變CC[1]的值來調整PWM周期。

?

示例詳解

基于硬件平臺:nrf51822ek_tm開發板。

?

?

本示例所用的最小系統板原理圖:

?

  • 工程創建:
  • 打開KEIL,新建一個空工程:Project->NewuVisionProject
  • 工程名為nrfxx-pwm確認后按下圖選擇芯片為nrf51822_xxAA->ok

    在彈出的對話框中勾選CMSIS中的CORE;Device中的Startup(后面有nrf51Series字樣的);在nrf_device中勾選nrf_gpio, nrf_gpiote, nrf_ppi,nrf_timer,nrf_err并在nrf_Libraries中勾選app_error,nrf_assert模塊。

    ?

    OK之后工程自動生成如下代碼:

    新建一個空白文檔,保存為main.c,并加入工程中:

    配置工程,選擇使用MicroLIB庫,可以減小程序體積:

    加入NRF51定義,并選擇化等級3,可以減小程序體積,但仿真運行時可能會出現與代碼順序不一致現象:

    ?

    調試工具選擇J-LINK,并將接口設置為SW口勾選下載程序后自動復位及運行:

    ?

    ?

  • 工程代碼
  • OK之后在man.c中加入如下代碼:
  • ?

    主函數依次執行gpio,gpiote,ppi,time初始化操作然后就是死循環,在中斷服務函數里面, 執行清除中斷標志、 清除內部計數寄存器的值、和修改占空比操作。把程序編譯,下載到開發板上可以看到開發板上的藍燈實現了呼吸燈效果。對應的PWM變化如下圖所示:

    OK,本期實驗完成!下期見!同時如果大家有什么疑問或是有想了解的其它內容,也歡迎大家留言!!最后喜歡這個公眾號的同學們記得加關注了,會有不定期技術干貨推出!!

    文中源碼資料下載,在公眾號里給十三發消息:

    下載|一起學nRF51xx 9

    ?

    關注十三公眾號

    ?

    總結

    以上是生活随笔為你收集整理的一起学nRF51xx 9 -  pwm的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。