一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32L475使用PWM輸出波形

GReq_mcu168 ? 來(lái)源:CSDN技術(shù)社區(qū) ? 作者:CSDN技術(shù)社區(qū) ? 2020-10-09 14:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文描述了如何在搭載了 RT-Thread 操作系統(tǒng)的平臺(tái)上使用 PWM 輸出波形,包括 PWM 的應(yīng)用、配置和驅(qū)動(dòng)的添加等。并給出了在正點(diǎn)原子 STM32L475 pandora 開發(fā)板上驗(yàn)證的代碼示例。

硬件平臺(tái)簡(jiǎn)介

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

使用 PWM

在 menuconfig 中打開 PWM 通道

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

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

使用 PWM 輸出波形

應(yīng)用程序可以通過(guò) RT-Thread 提供的設(shè)備管理接口來(lái)訪問(wèn) PWM 設(shè)備硬件,相關(guān)接口如下所示:

接口參數(shù)的具體描述請(qǐng)參考官網(wǎng)PWM 設(shè)備

鏈接:

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

(以上鏈接請(qǐng)復(fù)制至外部瀏覽器打開)

PWM 設(shè)備使用步驟

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

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

使用 PWM 設(shè)備輸出波形。 使用 rt_pwm_set 輸出特定的波形。

關(guān)閉 PWM 輸出通道。 當(dāng)不再需要使用 PWM 通道輸出波形時(shí),可以調(diào)用 rt_pwm_disable 關(guān)閉對(duì)應(yīng)的輸出通道。

代碼如下所示:向滑動(dòng)查看全部

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

運(yùn)行 PWM 測(cè)試程序

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

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

添加 PWM 驅(qū)動(dòng)

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

檢查驅(qū)動(dòng)文件是否支持 PWM

進(jìn)入 rt-threadspstm32librariesHAL_Drivers 目錄檢查 drv_pwm.c 文件是否支持相應(yīng)的 PWM 外設(shè)輸出。檢查驅(qū)動(dòng)文件是否支持相應(yīng)的 PWM 外設(shè)(PWM1、2、n)

檢查驅(qū)動(dòng)文件是否支持相應(yīng)的 PWM 輸出通道(1、2、3、4)

初始化 PWM 通道引腳

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

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

配置 Kconfig 文件

進(jìn)入 rt-threadspstm32l475-atk-pandoraoard 目錄,添加 Kconfig 選項(xiàng),如下圖所示:

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    116

    文章

    5521

    瀏覽量

    219424
  • 輸出波形
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    9150

原文標(biāo)題:STM32 上使用 PWM

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

    stm32l475 ADC采集失效問(wèn)題求助
    發(fā)表于 04-11 07:38

    STM32L475開發(fā)指南-RT-Thread例程_V1.1

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

    STM32L475開發(fā)指南-裸機(jī)例程_V1.1

    STM32L475開發(fā)指南-裸機(jī)例程_V1.1
    發(fā)表于 05-05 09:08

    STM32L475開發(fā)指南-裸機(jī)例程_V1.1

    STM32L475開發(fā)指南-裸機(jī)例程_V1.1
    發(fā)表于 07-22 19:11

    如何在搭載了RT-Thread操作系統(tǒng)的平臺(tái)上使用PWM輸出波形?

    本文描述了如何在搭載了 RT-Thread 操作系統(tǒng)的平臺(tái)上使用 PWM 輸出波形,包括 PWM 的應(yīng)用、配置和驅(qū)動(dòng)的添加等。并給出了在正點(diǎn)原子 S
    發(fā)表于 03-30 07:07

    如何在搭載RT-Thread操作系統(tǒng)的平臺(tái)上使用PWM輸出波形

    本文描述了如何在搭載了 RT-Thread 操作系統(tǒng)的平臺(tái)上使用 PWM 輸出波形,包括 PWM 的應(yīng)用、配置和驅(qū)動(dòng)的添加等。并給出了在正點(diǎn)原子 S
    發(fā)表于 08-24 07:33

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

    STM32L475開發(fā)板支持的串口模式及特征是什么?UART初始化結(jié)構(gòu)體的定義是什么?
    發(fā)表于 12-13 07:25

    STM32L475低功耗實(shí)例分享

    1.項(xiàng)目背景MCU:STM32L475外部AD:ADS1220外部RTC:DS3231擴(kuò)展Flash:sst25vf016b外部SDUSB溫濕度計(jì)4852.目標(biāo)MCU運(yùn)行在低功耗模式,每1小時(shí)讀取
    發(fā)表于 02-11 07:17

    stm32l475多個(gè)串口的中斷優(yōu)先級(jí)大小在哪里設(shè)置?

    使用了stm32l475多個(gè)串口,是在哪里配置的各個(gè)串口的中斷優(yōu)先級(jí)大小呀?默認(rèn)是設(shè)置的什么呀,可以改嗎?
    發(fā)表于 03-23 14:27

    請(qǐng)問(wèn)目前是否增加了對(duì)stm32L475低功耗串口的驅(qū)動(dòng)代碼呢

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

    如何設(shè)置STM32L475中的EOC標(biāo)志呢?

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

    STM32L475物聯(lián)網(wǎng)套件編譯錯(cuò)誤是何原因?如何解決呢?

    我剛得到一個(gè) stm32L475 物聯(lián)網(wǎng)套件。編譯后,我得到了這個(gè)錯(cuò)誤。st-flash 1.7.0-23-ga9adf9c2021-05-21T22:17:24 INFO common.c
    發(fā)表于 01-03 11:05

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

    在我第一次涉足 STM32 世界時(shí),我一直在嘗試使用 STM32L475 和 ST25R95 定制板讀取 nfc 標(biāo)簽。我花了一段時(shí)間才習(xí)慣 CUBE IDE,因?yàn)槎啻伟瑤?kù)會(huì)導(dǎo)致錯(cuò)誤,特別是因?yàn)槲?/div>
    發(fā)表于 02-06 06:52

    STM32L475低功耗實(shí)例驗(yàn)證

    1.項(xiàng)目背景MCU:STM32L475外部AD:ADS1220外部RTC:DS3231擴(kuò)展Flash:sst25vf016b外部SDUSB溫濕度計(jì)4852.目標(biāo)MCU運(yùn)行在低功耗模式,每1小時(shí)讀取
    發(fā)表于 12-07 16:21 ?11次下載
    <b class='flag-5'>STM32L475</b>低功耗實(shí)例驗(yàn)證

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

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