精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32L475使用PWM輸出波形

GReq_mcu168 ? 來源:CSDN技術社區 ? 作者:CSDN技術社區 ? 2020-10-09 14:14 ? 次閱讀

本文描述了如何在搭載了 RT-Thread 操作系統的平臺上使用 PWM 輸出波形,包括 PWM 的應用、配置和驅動的添加等。并給出了在正點原子 STM32L475 pandora 開發板上驗證的代碼示例。

硬件平臺簡介

本文基于正點原子 STM32L475 pandora 開發板,給出了 PWM 的具體應用示例代碼,由于 RT-Thread 上層應用 API 的通用性,因此這些代碼不局限于具體的硬件平臺,用戶可以輕松將它移植到其它平臺上。 STM32L475 pandora 是正點原子推出的一款基于 ARM Cortex-M4 內核的開發板,最高主頻為 80Mhz,該開發板具有豐富的板載資源,可以充分發揮 STM32L475 的芯片性能。

使用 PWM

在 menuconfig 中打開 PWM 通道

打開 Env 工具,使用 menuconfig 工具配置工程,在 Env 命令行中輸入 menuconfig 進入配置界面。在 menuconfig 配置界面依次選擇 Hardware Driver Config ---> On-chip Peripheral Drivers ---> Enable pwm ---> Enable timer2 output pwm 如下圖所示:

選中需要使用的 PWM 通道后保存退出,使用 scons --target=mdk5 生成 mdk5 工程,打開工程進行編譯并下載程序,在終端輸入 list_device 命令可以看到 PWM2 設備已經成功添加了,如下圖所示:

使用 PWM 輸出波形

應用程序可以通過 RT-Thread 提供的設備管理接口來訪問 PWM 設備硬件,相關接口如下所示:

接口參數的具體描述請參考官網PWM 設備

鏈接:

https://www.rt-thread.org/document/site/programming-manual/device/pwm/pwm/

(以上鏈接請復制至外部瀏覽器打開)

PWM 設備使用步驟

PWM 設備的具體使用方式可以參考如下步驟:

初始化 PWM 設備。 使用 rt_device_find 查找指定的 PWM 設備。 使用 rt_pwm_set 設置通道的默認 PWM 周期和脈沖寬度。 使用 rt_pwm_enable 使能需要輸出波形的 PWM 通道。

使用 PWM 設備輸出波形。 使用 rt_pwm_set 輸出特定的波形。

關閉 PWM 輸出通道。 當不再需要使用 PWM 通道輸出波形時,可以調用 rt_pwm_disable 關閉對應的輸出通道。

代碼如下所示:向滑動查看全部

1#definePWM_DEV_NAME"pwm2"/*PWM設備名稱*/ 2#definePWM_DEV_CHANNEL3/*PWM通道*/ 3#defineTHREAD_PRIORITY25/*線程優先級*/ 4#defineTHREAD_STACK_SIZE512/*線程棧大小*/ 5#defineTHREAD_TIMESLICE5/*線程時間片大小*/ 6 7staticrt_thread_ttid1=RT_NULL;/*線程句柄*/ 8structrt_device_pwm*pwm_dev;/*PWM設備句柄*/ 9staticrt_uint32_tperiod=500000;/*周期為0.5ms,單位為納秒ns*/ 10staticrt_uint32_tpulse=0;/*PWM脈沖寬度值的增減方向*/ 11 12/*線程pwm_entry的入口函數*/ 13staticvoidpwm_entry(void*parameter) 14{ 15rt_uint32_tcount=0; 16 17while(count++

運行 PWM 測試程序

要運行 PWM 測試程序,需要在終端輸入 pwm_test 由于此 BSP 的 PWM2 通道 3 的輸出并沒有連接到外設上,無法直觀的看到現象,所以這里使用邏輯分析儀來抓取 PWM 輸出的波形,波形輸出如下圖所示:

從邏輯分析儀抓取的波形可以看到,PWM 波形已經成功輸出。

添加 PWM 驅動

如果使用的 BSP 在 menuconfig 中沒有給出 PWM 通道的配置項,那么就需要自己添加 PWM 的驅動,下面就如何自己添加 PWM 驅動展開講解。

檢查驅動文件是否支持 PWM

進入 rt-threadspstm32librariesHAL_Drivers 目錄檢查 drv_pwm.c 文件是否支持相應的 PWM 外設輸出。檢查驅動文件是否支持相應的 PWM 外設(PWM1、2、n)

檢查驅動文件是否支持相應的 PWM 輸出通道(1、2、3、4)

初始化 PWM 通道引腳

進入 rt-threadspstm32l475-atk-pandoraoardCubeMX_Config 目錄,雙擊打開 STM32L475VE.ioc 文件初始化 PWM 通道對應的引腳,這里以 PWM2 通道 3 為例,如下圖所示:

點擊 GENERATE CODE 按鈕生成代碼,雖然 STM32CubeMX 生成了多個文件用來初始化外設,但 RT-Thread 只使用了 STM32CubeMX 生成的 stm32fxx_hal_msp.c 文件和 stm32fxx_hal_conf.h 文件,生成的 PWM 代碼如下所示:

配置 Kconfig 文件

進入 rt-threadspstm32l475-atk-pandoraoard 目錄,添加 Kconfig 選項,如下圖所示:

使用 scons --target=mdk5 命令生成 mdk5 工程,打開工程并編譯,如果工程提示 PWMn_CONFIG 未定義。 可以在stm32/libraries/HAL_Drivers/config/f4/pwm_config.h 中進行定義,如下圖所示:

完成以上步驟就可以在 menuconfig 菜單中添加支持的 PWM 輸出通道,至于如何使用 PWM 通道輸出波形請參考上一章節。 到這一步為止,如何在搭載了 RT-Thread 操作系統的平臺上如何使用 PWM 的介紹就結束了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • PWM
    PWM
    +關注

    關注

    114

    文章

    5141

    瀏覽量

    213393
  • 輸出波形
    +關注

    關注

    0

    文章

    21

    瀏覽量

    8934

原文標題:STM32 上使用 PWM

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    stm32l475 ADC采集失效的原因有哪些?

    stm32l475 ADC采集失效問題求助
    發表于 04-11 07:38

    STM32L475開發指南-RT-Thread例程_V1.1

    STM32L475開發指南-RT-Thread例程_V1.1
    發表于 05-05 09:07

    STM32L475開發指南-裸機例程_V1.1

    STM32L475開發指南-裸機例程_V1.1
    發表于 05-05 09:08

    STM32L475開發指南-裸機例程_V1.1

    STM32L475開發指南-裸機例程_V1.1
    發表于 07-22 19:11

    如何在搭載了RT-Thread操作系統的平臺上使用PWM輸出波形

    本文描述了如何在搭載了 RT-Thread 操作系統的平臺上使用 PWM 輸出波形,包括 PWM 的應用、配置和驅動的添加等。并給出了在正點原子 S
    發表于 03-30 07:07

    如何在搭載RT-Thread操作系統的平臺上使用PWM輸出波形

    本文描述了如何在搭載了 RT-Thread 操作系統的平臺上使用 PWM 輸出波形,包括 PWM 的應用、配置和驅動的添加等。并給出了在正點原子 S
    發表于 08-24 07:33

    STM32L475開發板支持的串口模式及特征是什么?

    STM32L475開發板支持的串口模式及特征是什么?UART初始化結構體的定義是什么?
    發表于 12-13 07:25

    STM32L475低功耗實例分享

    1.項目背景MCU:STM32L475外部AD:ADS1220外部RTC:DS3231擴展Flash:sst25vf016b外部SDUSB溫濕度計4852.目標MCU運行在低功耗模式,每1小時讀取
    發表于 02-11 07:17

    stm32l475多個串口的中斷優先級大小在哪里設置?

    使用了stm32l475多個串口,是在哪里配置的各個串口的中斷優先級大小呀?默認是設置的什么呀,可以改嗎?
    發表于 03-23 14:27

    請問目前是否增加了對stm32L475低功耗串口的驅動代碼呢

    背景我使用的mcu 為stm32L475,其中有一組串口為低功耗串口lpuart1。bug在stm32l475中,低功耗串口lpuart1和uart1 是兩組不同的串口,目前無法根絕串口名稱成功打開低功耗串口lpuart1。請問目前是否增加了對低功耗串口的驅動代碼呢?
    發表于 08-05 10:15

    如何設置STM32L475中的EOC標志呢?

    附圖中顯示了stm32L475參考手冊的描述。這里,它顯示 EOC 標志被 SW 設置為清除。我們可以清除標志,但 SW 如何設置 EOC 標志。我懷疑這是文檔中的錯誤。任何人都可以幫助我,不管我是對還是錯?
    發表于 12-28 08:23

    STM32L475物聯網套件編譯錯誤是何原因?如何解決呢?

    我剛得到一個 stm32L475 物聯網套件。編譯后,我得到了這個錯誤。st-flash 1.7.0-23-ga9adf9c2021-05-21T22:17:24 INFO common.c
    發表于 01-03 11:05

    使用X-CUBE-NFC3與STM32L475定制板和SPI2而不是SPI1?

    在我第一次涉足 STM32 世界時,我一直在嘗試使用 STM32L475 和 ST25R95 定制板讀取 nfc 標簽。我花了一段時間才習慣 CUBE IDE,因為多次包含庫會導致錯誤,特別是因為我
    發表于 02-06 06:52

    STM32L475低功耗實例驗證

    1.項目背景MCU:STM32L475外部AD:ADS1220外部RTC:DS3231擴展Flash:sst25vf016b外部SDUSB溫濕度計4852.目標MCU運行在低功耗模式,每1小時讀取
    發表于 12-07 16:21 ?11次下載
    <b class='flag-5'>STM32L475</b>低功耗實例驗證

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
    發表于 02-22 18:23 ?9次下載
    RT-Thread文檔_RT-Thread 潘多拉 <b class='flag-5'>STM32L475</b> 上手指南