女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

基于RoboMasterC型開發板的RT-Thread使用分享(二)

RTThread物聯網操作系統 ? 來源:未知 ? 2023-01-06 03:05 ? 次閱讀

這次繼續填坑,本次我們將介紹PWM功能的使用,實現呼吸燈的功能。那么接下來就直接開始我們的實踐部分。

創建工程


在上篇文章中我是使用基于芯片創建的,我原本想著不通過BSP文件在教程中教大家一步一步的通過Kconfig+CubeMX配置出可以驅動整個開發板所有外設的工程的。在社區前輩的提醒后才知道通過基于芯片創建工程是沒有辦法Kconfig配置的。因此我在之后的教程中我會基于RT-Thread提供的BSP文件stm32f407_robomaster_c來創建工程鏈接如下

rt-thread/bsp/stm32/stm32f407-robomaster-c at master · RT-Thread/rt-thread (github.com)

但是這個bsp文件暫時還沒有支持板上的所有外設,因此我計劃隨著教程的編寫,我也會幫忙維護這個bsp文件,將我們使用到的外設增加支持。便于大家后續使用,也滿足我希望告訴大家Kconfig配置的計劃。下圖是目前bsp文件的外設支持情況。

d96d7718-8d2a-11ed-bfe3-dac502259ad0.png

下面就正式開始創建工程。

我們這里點擊導入

d99eefbe-8d2a-11ed-bfe3-dac502259ad0.png

之后選擇RT-Thread BSP到工作空間中

d9a91228-8d2a-11ed-bfe3-dac502259ad0.png

BSP根目錄選擇從Github下載下來的bsp文件路徑,點擊完成,即可創建工程。

d9d01594-8d2a-11ed-bfe3-dac502259ad0.png

點擊編譯,下載后根據BSP文件提供規范,下載后將實現LED燈閃爍的功能。如下圖LED_B閃爍說明工程創建成功。

da05b4d8-8d2a-11ed-bfe3-dac502259ad0.png

PWM教程之呼吸燈


CubeMX配置

首先我們來看一下開發板原理圖,來看看LED引腳連接著哪一個定時器輸出引腳。

通過原理圖我們可以看到是TIM5的1、2、3通道。

da133af4-8d2a-11ed-bfe3-dac502259ad0.png

接下來我們就在CubeMX中查看相關引腳的配置。我們需要把TIM5的通道1、2、3設置為PWM模式,并且勾選Internal Clock。

da2b8c44-8d2a-11ed-bfe3-dac502259ad0.png

設置重載值為65535。這里設置的原因我會在后面進行頻率計算的時候再說明。

da5ff952-8d2a-11ed-bfe3-dac502259ad0.png

原理講解(計算部分新手可視情況略過)

PWM簡介

PWM即脈沖寬度調制,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術。

da8aef22-8d2a-11ed-bfe3-dac502259ad0.png

例如上圖中,矩形脈沖是 stm32 輸出的數字信號,當這個信號接到外設上時,效果可以等效為這個正弦波。

一個周期內高電平的持續時間占總周期的比例成為占空比,通過修改占空比,可以改變輸出的等效模擬電壓。例如輸出占空比為 50%,頻率為 10Hz 的脈沖,高電平為 3.3V.則其輸出的模擬效果相當于輸出一個 1.65V 的高電平。此外 PWM 輸出的頻率也會影響最終的 PWM輸出效果,PWM 輸出的頻率越高,最終輸出的“連續性”越好,越接近模擬信號的效果,頻率低則會增強離散性,最終的輸出效果會有比較強的“突變”感。

脈沖調制有兩個重要的參數,第一個就是輸出頻率,頻率越高,則模擬的效果越好。第二個就是占空比。占空比就是改變輸出模擬效果的電壓大小。占空比越大則模擬出的電壓越大。

定時器觸發頻率計算

接下來給大家簡單的講解一下定時器觸發頻率,以及PWM信號的周期和占空比的計算。

首先是定時器的觸發頻率,這里我們首先需要查看datasheet,看我們的TIM5是掛載在哪一條總線的。這里我們可以看到他是在APB1上的。

da9b3a30-8d2a-11ed-bfe3-dac502259ad0.png

接著我們就要看CubeMX上我們配置的時鐘樹了,在整個時鐘樹的最右端,可以看到 APB1 和 APB2 兩個總線的時鐘頻率設置,其中 APBx peripheral clocks 為掛載在總線上的定時器以外的外設提供時鐘源,APBx timer clocks 為掛載在總線上的定時器提供時鐘源。那么這里我們就可以知道TIM5時鐘源頻率為84MHz,時鐘樹的配置在上篇文章有較為詳細的解釋,這里就不重復了。這里解釋一下前面的倍頻為何是2,這里可以看到STM32F4xx中文參考手冊,我們這里APB1預分頻器為4,所以定時器時鐘頻率等于APB域的頻率的兩倍,所以倍頻為2

daaf6a50-8d2a-11ed-bfe3-dac502259ad0.png

dac5423a-8d2a-11ed-bfe3-dac502259ad0.png

確定時鐘源頻率之后,我們就開始計算定時器觸發頻率,我們前面設置TIM5_PSC為0,因此分頻值為1,因為分頻值為 TIMx_PSC 中的分頻值+1(畢竟分頻不可能為0),所以我們進入的84MHz的頻率信號分頻后還是84MHz。

當 TIMx_CNT 的值增長到 TIMx_ARR 中的值后,就會發生重載,并觸發中斷信號,相當于使用 TIMx_ARR 中的值又進行了一次分頻。因此產生這個中斷信號的頻率應該為84MHz/(ARR+1)(需要加 1 是因為 CNT 是從0開始計數的)。我們上面設置的重載值為65535。

因此定時器觸發頻率為84000000/65536=1281.7Hz,相當于0.78ms會觸發一次中斷信號。這個中斷信號我們還可以用來做一些比如LED燈定時器亮滅等操作,由于篇幅原因中斷相關知識這里就不過多的展開了。這里定時器中斷觸發時間也就是PWM信號周期。

占空比的計算

上文我們講到了PWM一大重要參數就是占空比,而我們設置占空比的重要方式就是設置比較寄存器的值。畢竟我們不能隨便重設重載值,這樣子PWM周期也會發生變化。那么比較值是起到怎樣的作用呢?下圖就可以解釋,下圖為遞增計數模式的示意圖,當定時器以 PWM 模式工作時,會自動將 TIMx_CCRx 的值與 TIMx_CNT(計數寄存器)中的值做比較,當 TIMx_CNT 中的值小于 TIMx_CCRx 的值時,PWM 輸出引腳輸出高電平,大于時則輸出低電平。

dacc71b8-8d2a-11ed-bfe3-dac502259ad0.png

那么我們就可以知道占空比的計算公式為CCRX/ARR*100%,比如重載值為50000,比較寄存器值為25000,那么占空比為50%。

原理部分就到此為止下面就講一下在RT-Thread Studio中的操作。

代碼實踐

首先我們選擇使用PWM設備驅動程序

dad41148-8d2a-11ed-bfe3-dac502259ad0.png

然后我們需要在硬件中選擇使能PWM并且選擇相應的定時器與通道,但是我們發現并沒有我們需要的timer5,這時候我們就需要修改Kconfig文件了。

dae18d00-8d2a-11ed-bfe3-dac502259ad0.png

我們在board/Kconfig中添加如下代碼,這里我們簡單的修改其他PWM配置即可。

daf6fa28-8d2a-11ed-bfe3-dac502259ad0.png

之后我們使用Env工具進入工程所在目錄后輸入scons --pyconfig即可進入編輯界面。

db132c84-8d2a-11ed-bfe3-dac502259ad0.png

這里我們就可以看到我們在Kconfig中添加的外設,點擊使能,保存修改。

db28d75a-8d2a-11ed-bfe3-dac502259ad0.png

之后輸入scons --target=eclipse重新構建工程,等號后面的參數取決于你使用的IDE,比如我原來使用的是Clion那么就輸入scons --target=cmake,RT-Thread Studio是基于eclipse的所以這里選擇scons --target=eclipse

回到RT-Thread Setting可以看到我們增加的外設了。

db64b70c-8d2a-11ed-bfe3-dac502259ad0.png

關于基于開發板工程添加外設相關操作大家可以參考這篇文章。

rt-thread/STM32系列外設驅動添加指南.md at master · RT-Thread/rt-thread (github.com)

之后我們就可以在main函數中編寫代碼,實現呼吸燈的功能了。

這里就是簡單的修改了官方的PWM例程代碼,我自己就不過多的說明了,大家可以看看注釋以及官方文檔PWM設備 (rt-thread.org)

 1/*
 2*Copyright(c)2006-2021,RT-ThreadDevelopmentTeam
 3*
 4*SPDX-License-Identifier:Apache-2.0
 5*
 6*ChangeLogs:
 7*DateAuthorNotes
 8*2018-11-06SummerGiftfirstversion
 9*2021-06-30craztmodifyforrobomasterCboard
10*/
11#include
12#include
13#include
14#definePWM_DEV_NAME"pwm5"/*PWM設備名稱*/
15#definePWM_DEV_CHANNEL1/*PWM通道*/
16structrt_device_pwm*pwm_dev;/*PWM設備句柄*/
17intmain(void)
18{
19rt_uint32_tperiod,pulse,dir;
20period=500000;/*周期為0.5ms,單位為納秒ns*/
21dir=1;/*PWM脈沖寬度值的增減方向*/
22pulse=0;/*PWM脈沖寬度值,單位為納秒ns*/
23/*查找設備*/
24pwm_dev=(structrt_device_pwm*)rt_device_find(PWM_DEV_NAME);
25if(pwm_dev==RT_NULL)
26{
27rt_kprintf("pwmsamplerunfailed!can'tfind%sdevice!
",PWM_DEV_NAME);
28returnRT_ERROR;
29}
30/*設置PWM周期和脈沖寬度默認值*/
31rt_pwm_set(pwm_dev,PWM_DEV_CHANNEL,period,pulse);
32/*使能設備*/
33rt_pwm_enable(pwm_dev,PWM_DEV_CHANNEL);
34while(1)
35{
36rt_thread_mdelay(50);
37if(dir)
38{
39pulse+=5000;/*從0值開始每次增加5000ns*/
40}
41else
42{
43pulse-=5000;/*從最大值開始每次減少5000ns*/
44}
45if(pulse>=period/2)/*經過測試發現占空比超過50%后對于亮度的影響較小因此就設置死區*/
46{
47dir=0;
48}
49if(0==pulse)
50{
51dir=1;
52}
53/*設置PWM周期和脈沖寬度*/
54rt_pwm_set(pwm_dev,PWM_DEV_CHANNEL,period,pulse);
55}
56returnRT_EOK;
57}

最終燒錄效果為藍燈進行呼吸燈操作。

后續有空的話,我會寫一篇小文章擴展教大家PWM進行呼吸燈aRGB調色,以及蜂鳴器唱歌的。

本次教程就講到這里謝謝大家。

———————End———————

版權聲明:

本文為RT-Thread論壇用戶「goldengrandpa」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:

https://club.rt-thread.org/ask/article/2240be90085f3b35.html

你可以添加微信:rtthread2020 為好友,注明:公司+姓名,拉進RT-Thread官方微信交流群!

db884cb2-8d2a-11ed-bfe3-dac502259ad0.gif

愛我就給我點在看

點擊閱讀原文回看開發者大會


原文標題:基于RoboMasterC型開發板的RT-Thread使用分享(二)

文章出處:【微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。


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

    關注

    32

    文章

    1370

    瀏覽量

    41509

原文標題:基于RoboMasterC型開發板的RT-Thread使用分享(二)

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    RT-Thread審核團招募: 深度參與開源RTOS社區治理與演進

    全球開發者招募:RT-Thread審核團(ReviewTeam)正式開放申請!在開源的世界里,代碼審查(CodeReview)是保證軟件質量、促進技術交流的關鍵環節。RT-Thread作為全球領先
    的頭像 發表于 05-21 18:02 ?454次閱讀
    <b class='flag-5'>RT-Thread</b>審核團招募: 深度參與開源RTOS社區治理與演進

    Deepseek上單片機?RT-Thread上跑通大語言模型

    前言單片機也能聊天?RT-Thread上跑通大語言模型在RT-Thread論壇上忽然看到了單片機和大模型對話的文章,想著春節期間看到大語言模型的熱度持續攀升,恰巧手頭有塊RA8D1VisionBoard開發板,于是嘗試著在Vis
    的頭像 發表于 02-07 18:59 ?1310次閱讀
    Deepseek上單片機?<b class='flag-5'>RT-Thread</b>上跑通大語言模型

    RT-Thread操作系統應用開發寒假師資培訓

    隨著物聯網和智能系統的快速發展,嵌入式成為當前最熱門最有發展前途的IT應用領域之一。為進一步提升全國大學生在嵌入式芯片及系統設計領域的創新能力,特別是針對物聯網應用開發RT-Thread操作系統
    的頭像 發表于 12-06 01:06 ?391次閱讀
    <b class='flag-5'>RT-Thread</b>操作系統應用<b class='flag-5'>開發</b>寒假師資培訓

    RT-Thread 發布 EtherKit開源以太網硬件!

    EtherKit是RT-Thread聯合瑞薩電子推出的一款高性能、多功能以太網MPU開發板,采用瑞薩電子RZ/N2L芯片,搭載ArmCortex-R52內核,主頻高達400MHz;支持TSN的3端口
    的頭像 發表于 11-20 01:07 ?1127次閱讀
    <b class='flag-5'>RT-Thread</b> 發布 EtherKit開源以太網硬件!

    RT-Thread上CAN實踐

    開箱測試RT-Thread官方已完成了對英飛凌XMC7200EVK的移植,通過shell可以看到做好了uart3的console。本文將介紹如何進行RT-ThreadCan移植。接下來我們要完成CAN_FD的驅動移植,并正常啟動RT-T
    的頭像 發表于 11-13 01:03 ?1897次閱讀
    <b class='flag-5'>RT-Thread</b>上CAN實踐

    基于恩智浦FRDM-MCXA153開發板實現RT-Thread的ADC驅動

    數轉換器(ADC)是現代嵌入式系統中不可或缺的組件,它能將連續的模擬信號轉換為離散的數字信號。本文將深入探討如何在NXP的FRDM-MCXA153開發板上實現和使用RT-Thread的ADC驅動,為開發者提供一個全面而實用的指南
    的頭像 發表于 11-01 12:29 ?1277次閱讀
    基于恩智浦FRDM-MCXA153<b class='flag-5'>開發板</b>實現<b class='flag-5'>RT-Thread</b>的ADC驅動

    開源共生 商業共贏 | RT-Thread 2024開發者大會報名啟動!

    親愛的RT-Thread開發者我們很高興地宣布,一年一度的RDC(RT-ThreadDeveloperConference,RT-Thread開發
    的頭像 發表于 10-29 08:06 ?856次閱讀
    開源共生 商業共贏 | <b class='flag-5'>RT-Thread</b> 2024<b class='flag-5'>開發</b>者大會報名啟動!

    NXP FRDM-MCXC444開發板RT-Thread環境下的上手過程

    NXP FRDM-MCXC444開發板是一款基于MCX C444 MCU的高性能開發板,它集成了豐富的硬件資源和接口,支持快速原型設計。本文將為讀者提供一份詳細的RT-Thread上手指南,幫助大家輕松玩轉這款
    的頭像 發表于 10-12 11:51 ?878次閱讀
    NXP FRDM-MCXC444<b class='flag-5'>開發板</b>在<b class='flag-5'>RT-Thread</b>環境下的上手過程

    新書發布——《RT-Thread嵌入式實時操作系統內核、驅動和應用開發技術》

    我們非常高興地宣布,由鄭苗秀、沈鴻飛和廖建尚編著的《RT-Thread嵌入式實時操作系統內核、驅動和應用開發技術》一書正式發布。本書的編寫團隊由多位在嵌入式和實時操作系統領域有著豐富經驗的專家組
    的頭像 發表于 09-03 08:06 ?1161次閱讀
    新書發布——《<b class='flag-5'>RT-Thread</b>嵌入式實時操作系統內核、驅動和應用<b class='flag-5'>開發</b>技術》

    【大連】9月7日RT-Thread巡回線下培訓-OpenMV機器視覺

    親愛的RT-Thread社區成員們:2024年RT-Thread全球開發者線下培訓拉開帷幕啦!24年全球巡回培訓將覆蓋超10座城市及國家,為開發者提供一個深入學習
    的頭像 發表于 09-01 08:02 ?3007次閱讀
    【大連】9月7日<b class='flag-5'>RT-Thread</b>巡回線下培訓-OpenMV機器視覺

    【QEMU系列】不用開發板運行RT-Thread指南-ARM架構

    簡介在物聯網和嵌入式系統的開發中,RT-Thread操作系統憑借其小巧、高效和靈活的特點,受到了越來越多開發者的青睞。然而,對于很多剛剛接觸RT-Thread
    的頭像 發表于 08-09 08:35 ?1441次閱讀
    【QEMU系列】不用<b class='flag-5'>開發板</b>運行<b class='flag-5'>RT-Thread</b>指南-ARM架構

    2024 RT-Thread全球巡回 線下培訓火熱來襲!

    親愛的RT-Thread社區成員們:我們非常高興地宣布,2024年RT-Thread全球開發者線下培訓即將拉開帷幕!24年全球巡回培訓將覆蓋超10座城市及國家,為開發者提供一個深入學習
    的頭像 發表于 08-07 08:35 ?2413次閱讀
    2024 <b class='flag-5'>RT-Thread</b>全球巡回 線下培訓火熱來襲!

    【好書推薦】RT-Thread設備驅動開發指南

    近年來國內芯片產業和物聯網產業的快速崛起,行業發展迫切需要更多人才,尤其需要掌握嵌入式操作系統等底層技術的人才。隨著RT-Thread被更廣泛地應用于行業中,開發者對嵌入式驅動開發的需求越來越
    的頭像 發表于 08-01 08:35 ?1159次閱讀
    【好書推薦】<b class='flag-5'>RT-Thread</b>設備驅動<b class='flag-5'>開發</b>指南

    開發者分享 | 基于先楫RT-Thread BSP,使用CLion開發應用

    本期開發者:朱彥祖RT-Thread資深工程師,HPM6700/6400元老級開發者及骨灰級用戶,先輯生態社區常駐優秀開發者,江湖人稱杭州吳彥祖。背景最近在使用先輯HPM6750
    的頭像 發表于 06-07 08:17 ?3604次閱讀
    <b class='flag-5'>開發</b>者分享 | 基于先楫<b class='flag-5'>RT-Thread</b> BSP,使用CLion<b class='flag-5'>開發</b>應用

    先楫半導體所有開發板已上RT-Thread主線啦

    目前,先楫半導體在RT-Thread主線支持的開發板包含以下這些
    的頭像 發表于 06-05 08:17 ?921次閱讀
    先楫半導體所有<b class='flag-5'>開發板</b>已上<b class='flag-5'>RT-Thread</b>主線啦