色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

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

手把手教你基于RT-Thread Studio使用STM32單片機(jī)的PWM外設(shè)

冬至配餃子 ? 來(lái)源:樂(lè)樂(lè)愛(ài)學(xué)習(xí) ? 作者:樂(lè)樂(lè)愛(ài)學(xué)習(xí) ? 2023-09-28 15:12 ? 次閱讀

一、使用說(shuō)明

目前我使用的是STM32L475系列單片機(jī),是ali當(dāng)時(shí)在PDD 50塊錢(qián)賣(mài)的一個(gè)開(kāi)發(fā)板,其他STM32單片機(jī)參考即可,這里會(huì)手把手教大家基于RTT Studio 來(lái)使用PWM。

二、創(chuàng)建工程

1.創(chuàng)建工程

首先大家打開(kāi)RT-Thread Studio 來(lái)基于單片機(jī)創(chuàng)建工程。點(diǎn)擊左上角文件,新建 RT-Thread項(xiàng)目
Project name就是項(xiàng)目名稱(chēng),如果大家想自定義路徑保存,就取消掉缺省位置然后自定義路徑。

1.jpg

2.芯片參數(shù)設(shè)置

選擇基于芯片,下面的參數(shù)需要大家根據(jù)自己的主板來(lái)選擇,我這個(gè)板子 使用LPUART作為CMD輸出,單片機(jī)型號(hào),下載器比如JLINK或者STLINK等等都需要自己適配開(kāi)發(fā)板。

1.jpg

3.下載設(shè)置

創(chuàng)建項(xiàng)目完成后大家可以先編譯后下載進(jìn)開(kāi)發(fā)板測(cè)試一下 CMD的輸出。
這里可以開(kāi)啟下載后自動(dòng)軟件復(fù)位。

1.jpg

4.編譯 下載

大家在編譯后就可以嘗試下載。

1.jpg

我使用的工具是XShell,可以看到復(fù)位后有啟動(dòng)log輸出,就正常啦。

1.jpg

三、修改時(shí)鐘并配置串口

在創(chuàng)建工程的時(shí)候,RT-Thread Studio 默認(rèn)使用的是內(nèi)部低俗時(shí)鐘,我們需要更改到外部高速時(shí)鐘來(lái)提高MCU工作性能,后面PWM 的時(shí)鐘外設(shè)也使用的是外部高速時(shí)鐘。

1.打開(kāi)CUBEMX

雙擊工程中的CUBEMX圖標(biāo),可以打開(kāi)cubemx,如果沒(méi)有安裝請(qǐng)自行安裝。

1.jpg

2.打開(kāi)高速時(shí)鐘

打開(kāi)CUBEmx的 System Core,選擇RCC配置,將HSE與LSE均設(shè)置為Crystal/Ceramic Resonator,然后點(diǎn)擊左上角文件保存。

1.jpg

3.配置時(shí)鐘樹(shù)

打開(kāi) Clock Configuration

1.jpg

鎖相環(huán)PLL選擇HSE,然后Clock Mux選擇PLLCLK,PLLM數(shù)值選擇合適的數(shù)值,這個(gè)一般都有參考,每種單片機(jī)時(shí)鐘頻率不同,大家可以搜索對(duì)應(yīng)的時(shí)鐘樹(shù)設(shè)置。

1.jpg

4.打開(kāi)LPUART

因?yàn)樵趧?chuàng)建工程時(shí),默認(rèn)打開(kāi)了LPUART,但是使用cubemx獲取代碼后,LPUART是關(guān)閉的,我們需要重新打開(kāi)LPUART。

1.jpg

首先在右側(cè)選擇 PB10與PB11 為L(zhǎng)PUART外設(shè),然后在左側(cè) Connectivity -LPUART外設(shè)中將Mode選擇為Asynchronous 模式,就已經(jīng)成功打開(kāi)了。

5.獲取代碼

首先點(diǎn)擊左上角文件 選擇Save Project,然后點(diǎn)擊右上角 Generate Code,代碼獲取完成后就可以關(guān)閉CubeMX了。

6.修改時(shí)鐘定義

剛才Cubemx已經(jīng)幫我們生成了時(shí)鐘代碼,但是代碼需要我們手動(dòng)加入到 BSP中,找到cubemx 里的src 然后打開(kāi)main.c文件。

1.jpg

然后將 void SystemClock_Config(void) 這個(gè)函數(shù)內(nèi)容復(fù)制到 drivers里的 drv_clk.c 文件中 void system_clock_config(void)。

1.jpg

7.編譯下載

這時(shí)候時(shí)鐘已經(jīng)修改完成了,可以編譯下載應(yīng)該是沒(méi)有錯(cuò)誤的。
有一個(gè)reboot的調(diào)用警告,這是因?yàn)槟壳癋INSH_FUNCTION_EXPORT_ALIAS 這個(gè)函數(shù)已經(jīng)沒(méi)有調(diào)用了,

1.jpg

MSH_CMD_EXPORT(reboot, Reboot System);
將這句代碼替換掉上面的 FINSH_FUNCTION_EXPORT_ALIAS 即可。

四、配置PWM

1.使能PWM

首先打開(kāi)RT-Thread Settings 打開(kāi)PWM驅(qū)動(dòng)。

1.jpg

選擇組件,設(shè)備驅(qū)動(dòng)程序,使能PWM,然后點(diǎn)擊左上角保存。

1.jpg

2.配置時(shí)鐘

配置時(shí)鐘我們?nèi)匀恍枰褂肅UBEMX工具,我目前要使用的PWM是A0引腳,將A0設(shè)置為T(mén)IM2的通道1

1.jpg

然后選擇Timers 的TIM2 將通道1 設(shè)置為 比較輸出模式。然后點(diǎn)擊左上角保存,右上角獲取代碼。

3.修改驅(qū)動(dòng)

這時(shí)候 CUBEMX已經(jīng)幫我們生成了需要使用的代碼,我們還需要將它修改到BSP里。
打開(kāi) cubemx的src文件夾,打開(kāi)stm32l4xx_hal_msp.c,將以下三個(gè)函數(shù)的實(shí)現(xiàn)全部剪貼到drivers的board.c的最下面

1.jpg

void HAL_TIM_OC_MspInit(TIM_HandleTypeDef* htim_oc)
void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
void HAL_TIM_OC_MspDeInit(TIM_HandleTypeDef* htim_oc)

1.jpg

4.修改調(diào)用

打開(kāi)drivers 里的 drv_pwm.c 找到 stm32_hw_pwm_init這個(gè)函數(shù),在TIM初始化之前初始化以下時(shí)鐘引腳。

在圖里所示的位置調(diào)用這個(gè)函數(shù)。

HAL_TIM_OC_MspInit(tim);

1.jpg

5.配置PWM通道

這時(shí)候PWM的驅(qū)動(dòng)就已經(jīng)做好了,打開(kāi)board.h ,打開(kāi)需要使用的PWM通道
比如你使用的是TIM1,就是 pwm1, 通道同理。

#define BSP_USING_PWM2
#define BSP_USING_PWM2_CH1

1.jpg

6.保存編譯

這時(shí)候我們需要使用的驅(qū)動(dòng)已經(jīng)全部構(gòu)建完成了,接下來(lái)就使用RT-Thread的接口來(lái)完成用戶(hù)代碼吧。

五、用戶(hù)代碼

1.新建一個(gè).c文件來(lái)存放用戶(hù)代碼,名字隨便起,我放在了applications里,文件格式一定要加.c

1.jpg

2.PWM相關(guān)API
3.查找設(shè)備
rt_device_t rt_device_find(const char* name);
這個(gè)API會(huì)返回設(shè)備句柄
4.設(shè)置PWM參數(shù)
rt_err_t rt_pwm_set(struct rt_device_pwm *device,
int channel,rt_uint32_t period,rt_uint32_t pulse);
struct rt_device_pwm *device PWM設(shè)備句柄

int channel PWM通道數(shù)

rt_uint32_t period PWM周期,單位ns

rt_uint32_t pulse PWM脈沖寬度,單位ns

如果設(shè)置成功,會(huì)返回RT_EOK,

頻率= 1000000000/period
占空比 = pulse/period

3.使能PWM通道

rt_err_t rt_pwm_enable(struct rt_device_pwm *device, int channel);
struct rt_device_pwm *device 這是設(shè)備句柄

int channel PWM通道數(shù)

如果使能正常的話(huà)會(huì)返回RT_EOK,其他錯(cuò)誤就是使能失敗。

3.PWM用戶(hù)Demo
/*

Copyright (c) 2006-2021, RT-Thread Development Team

SPDX-License-Identifier: Apache-2.0

Change Logs:
Date Author Notes
2022-03-13 desktop the first version
/
#include
#include
//設(shè)置log文件
#define DBG_TAG "pwm_test.c"
#define DBG_LVL DBG_LOG
#include
#define PWM_DEV_NAME "pwm2" /
PWM 設(shè) 備 名 稱(chēng) */
#define PWM_DEV_CHANNEL 1
struct rt_device_pwm pwm_dev; / PWM 設(shè) 備 句 柄 /
static int pwm_test(void)
{
rt_uint32_t period , pulse;
//設(shè)置周期及 脈沖長(zhǎng)度
period = 200000;
pulse = 100000;
pwm_dev = (struct rt_device_pwm
)rt_device_find(PWM_DEV_NAME); //查找PWM設(shè)備
//配置PWM
rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse); //占空比應(yīng)該是50%
if (rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL) == RT_EOK)
{
LOG_D("PWM Init is ok tn");
return RT_EOK;
}
return RT_EOK;
}
MSH_CMD_EXPORT(pwm_test, pwm device sample);

代碼注釋基本上已經(jīng)寫(xiě)清楚啦,我用的是TIM2的通道1,就是pwm2的通道1,大家可以參考這個(gè)Demo。

4.命令行調(diào)用

完成了代碼,我們編譯下載進(jìn)單片機(jī),打開(kāi)命令行 輸入help命令,可以將main中的log日志代碼刪除掉,不然會(huì)一直彈 Hello RT-Thread

1.jpg

可以看到help 顯示的命令, pwm_test就是我們剛才用戶(hù)代碼的命令,

1.jpg

然后我用邏輯分析儀抓一下 PWM波形,應(yīng)該是50%占空比。

1.jpg

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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

    文章

    5364

    瀏覽量

    217938
  • RCC
    RCC
    +關(guān)注

    關(guān)注

    0

    文章

    95

    瀏覽量

    27380
  • PWM波
    +關(guān)注

    關(guān)注

    0

    文章

    100

    瀏覽量

    17248
  • STM32單片機(jī)
    +關(guān)注

    關(guān)注

    59

    文章

    549

    瀏覽量

    59363
  • STM32L4
    +關(guān)注

    關(guān)注

    1

    文章

    42

    瀏覽量

    9594
  • RTThread
    +關(guān)注

    關(guān)注

    8

    文章

    132

    瀏覽量

    41519
收藏 1人收藏
  • 林雪凉1

評(píng)論

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

手把手教你學(xué)單片機(jī)之AVR入門(mén)視頻教程

`手把手教你學(xué)單片機(jī)之AVR入門(mén)視頻教程AVR單片機(jī)軟硬件設(shè)計(jì)視頻教程-入門(mén)篇本視頻是 力天電子 尹延輝 錄制的 詳情請(qǐng)登 力天電子第01講-單片機(jī)
發(fā)表于 03-02 11:04

手把手教你學(xué)單片機(jī)c語(yǔ)言》視頻教程

`《手把手教你學(xué)單片機(jī)C語(yǔ)言》視頻教程電驢、優(yōu)酷、迅雷等下載地址《手把手教你學(xué)單片機(jī)c語(yǔ)言》視頻
發(fā)表于 10-26 14:14

力天手把手教你學(xué)單片機(jī)視頻全集下載

.rarhttp://115.com/file/e7fv6828#17.第九講.輸出型外設(shè)與51的IO口上--力天手把手教你學(xué)單片機(jī)之實(shí)戰(zhàn)篇.rarhttp://115.com/fil
發(fā)表于 02-14 17:06

手把手教你單片機(jī)

小宋老師單片機(jī)教程手把手教你單片機(jī) 鏈接: http://pan.baidu.com/s/1kTvEOo3 密碼: vzox
發(fā)表于 12-07 17:59

手把手教你學(xué)CPLD/FPGA與單片機(jī)聯(lián)合設(shè)計(jì)》-周興華

作者從2009年1月起,在《電子世界》雜志上連載了《手把手教你學(xué)CPLD/FPGA設(shè)計(jì)》講座。《手把手教你學(xué)CPLD/FPGA與單片機(jī)聯(lián)合設(shè)
發(fā)表于 12-29 17:10

手把手教你實(shí)戰(zhàn)RT-Thread Nano,不信都這樣了你還不會(huì)

手把手教你實(shí)戰(zhàn)RT-Thread Nano,不信都這樣了你還不會(huì)
發(fā)表于 11-23 10:30

手把手教你單片機(jī)程序框架

手把手教你單片機(jī)程序框架資料來(lái)自網(wǎng)絡(luò)資源分享
發(fā)表于 05-26 22:51

手把手教你學(xué)STM32單片機(jī)

整理資料來(lái)源【正點(diǎn)原子】 手把手教你學(xué)STM32單片機(jī)教學(xué)視頻 嵌入式 之 F103-基于新戰(zhàn)艦V]NANO_STM32F103開(kāi)發(fā)指南-H
發(fā)表于 08-19 07:08

手把手教你學(xué)LabVIEW視覺(jué)設(shè)計(jì)

手把手教你學(xué)LabVIEW視覺(jué)設(shè)計(jì)手把手教你學(xué)LabVIEW視覺(jué)設(shè)計(jì)手把手教你學(xué)LabVIEW視
發(fā)表于 03-06 01:41 ?3302次閱讀

手把手教你學(xué)會(huì)AVR單片機(jī)pdf.01

手把手教你學(xué)會(huì)AVR單片機(jī)pdf.01
發(fā)表于 09-30 17:33 ?0次下載

手把手教你學(xué)會(huì)AVR單片機(jī)pdf.02

手把手教你學(xué)會(huì)AVR單片機(jī)pdf.02
發(fā)表于 09-30 17:34 ?0次下載

手把手教你學(xué)會(huì)AVR單片機(jī)pdf.03

手把手教你學(xué)會(huì)AVR單片機(jī)pdf.03
發(fā)表于 09-30 17:36 ?0次下載

手把手教你學(xué)會(huì)AVR單片機(jī)pdf.04

手把手教你學(xué)會(huì)AVR單片機(jī)pdf.04
發(fā)表于 09-30 17:37 ?0次下載

手把手教你學(xué)會(huì)AVR單片機(jī)pdf.05

手把手教你學(xué)會(huì)AVR單片機(jī)pdf.05
發(fā)表于 09-30 18:19 ?0次下載

手把手教你開(kāi)發(fā)基于單片機(jī)的wifi通信的物聯(lián)網(wǎng)項(xiàng)目(遠(yuǎn)程燈控制)

手把手教你開(kāi)發(fā)基于單片機(jī)的wifi通信的物聯(lián)網(wǎng)項(xiàng)目(遠(yuǎn)程燈控制)
發(fā)表于 11-12 19:36 ?18次下載
<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>開(kāi)發(fā)基于<b class='flag-5'>單片機(jī)</b>的wifi通信的物聯(lián)網(wǎng)項(xiàng)目(遠(yuǎn)程燈控制)
主站蜘蛛池模板: 在线不卡日本v二区到六区 在线不卡日本v二区 | 99国产精品免费视频 | 日本十八禁无遮拦啪啪漫画 | 欧美最猛性xxxxx亚洲精品 | 美女医生深夜在家裸睡惨死 | 天海翼精品久久中文字幕 | 欧美一区二区日韩一区二区 | 亚洲一级毛片免费在线观看 | 亚洲精品国产拍在线观看 | 奶大B紧17p| 4399亚洲AV无码V无码网站 | 中文人妻熟妇精品乱又伧 | 花蝴蝶高清在线视频免费观看 | 国产精品久久免费视频 | 色老头色老太aaabbb | 免费观看亚洲视频 | 在线观看国产亚洲 | 中文字幕在线免费观看视频 | 四虎影视国产精品亚洲精品 | 午夜免费体验30分 | 精品精品国产yyy5857香蕉 | 国产精品一区二区资源 | 偷窥欧美wc经典tv | 在线 亚洲 日韩 欧洲视频 | 777EY_卡通动漫_1页 | 久久久久国产精品美女毛片 | 97欧美精品大香伊蕉在人线 | 色欲蜜臀AV免费视频 | 日韩精品无码久久一区二区三 | 日产日韩亚洲欧美综合搜索 | 99国内偷揿国产精品人妻 | 最近的中文字幕2019国语 | 九九国产精品成人AV麻豆 | 嘟嘟嘟WWW免费高清在线中文 | 午夜AV亚洲一码二中文字幕青青 | 偷尝禁果H1V1幸运的山熊 | 久久精品一区 | 伊人久久亚洲综合天堂 | CHINA中国东北GURMA | 久久综合久综合久久鬼色 | 99久久精品免费看国产一区二区 |

電子發(fā)燒友

中國(guó)電子工程師最喜歡的網(wǎng)站

  • 2931785位工程師會(huì)員交流學(xué)習(xí)
  • 獲取您個(gè)性化的科技前沿技術(shù)信息
  • 參加活動(dòng)獲取豐厚的禮品