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

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

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

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

LPC55S69對(duì)接RT-Thread PWM設(shè)備框架

冬至子 ? 來(lái)源:螺絲松掉的人 ? 作者:螺絲松掉的人 ? 2023-10-11 15:02 ? 次閱讀

在使用 RT-Thread 的 bsp pwm 的時(shí)候,注意到 lpc55sxx 系列只對(duì)接了通用定時(shí)器2中的通道1作為 PWM 輸出。但其實(shí) LPC55S69 具備非常多的 PWM 資源。于是根據(jù) RT-Thread 設(shè)備驅(qū)動(dòng)框架了,對(duì)接了其他通用定時(shí)器的 PWM 輸出。

開(kāi)始對(duì)接

創(chuàng)建PWM設(shè)備

之前該 BSP 中的 drv_pwm 已經(jīng)對(duì)接了基本的接口,但只考慮了一個(gè)通道作為 PWM 輸出,在實(shí)際的使用中具有較大的局限性,不能充分發(fā)揮作用。我們首先基于PWM設(shè)備基類結(jié)構(gòu)派生出新的 PWM 設(shè)備結(jié)構(gòu)體:

struct lpc_pwm
{
struct rt_device_pwm pwm_device;
CTIMER_Type * tim;
uint32_t channel;
char *name;
};

因?yàn)?PWM 設(shè)備不止一個(gè) ,所以我們定義一個(gè)全局的 PWM 設(shè)備表來(lái)同時(shí)創(chuàng)建多個(gè) PWM 設(shè)備:

static struct lpc_pwm lpc_pwm_obj[] =
{
#if defined(BSP_USING_CTIMER1_MAT0) || defined(BSP_USING_CTIMER1_MAT1) ||
defined(BSP_USING_CTIMER1_MAT2)
{
.tim = CTIMER1,
.name = "pwm1",
.channel = RT_NULL
},
#endif
#if defined(BSP_USING_CTIMER2_MAT0) || defined(BSP_USING_CTIMER2_MAT1) ||
defined(BSP_USING_CTIMER2_MAT2)
{
.tim = CTIMER2,
.name = "pwm2",
.channel = RT_NULL
},
#endif
};
/* 可以根據(jù)實(shí)際需求自行擴(kuò)展 */

選擇指定定時(shí)器的具體通道作為 PWM 輸出:

static void pwm_get_channel(void)
{
#ifdef BSP_USING_CTIMER1_MAT0
lpc_pwm_obj[PWM1_INDEX].channel |= 1 << 0;
#endif
#ifdef BSP_USING_CTIMER1_MAT1
lpc_pwm_obj[PWM1_INDEX].channel |= 1 << 1;
#endif
#ifdef BSP_USING_CTIMER1_MAT2
lpc_pwm_obj[PWM1_INDEX].channel |= 1 << 2;
#endif
#ifdef BSP_USING_CTIMER2_MAT0
lpc_pwm_obj[PWM2_INDEX].channel |= 1 << 0;
#endif
#ifdef BSP_USING_CTIMER2_MAT1
lpc_pwm_obj[PWM2_INDEX].channel |= 1 << 1;
#endif
#ifdef BSP_USING_CTIMER2_MAT2
lpc_pwm_obj[PWM2_INDEX].channel |= 1 << 2;
#endif
}
/* 可以根據(jù)實(shí)際需求自行擴(kuò)展 */

實(shí)現(xiàn)PWM設(shè)備的操作方法

PWM 設(shè)備只有一個(gè) control 方法, control 方法使用設(shè)備控制字 cmd 來(lái)區(qū)分操作,分別有ENABLE、DISABLE、SET、GET。這部分原先已經(jīng)基本實(shí)現(xiàn)過(guò)了,只需添加新的定時(shí)器判斷分支即可。

注冊(cè)PWM設(shè)備

原先是使用 rt_hw_pwm_init() 即可注冊(cè)定時(shí)器2通道1這一個(gè)定時(shí)器設(shè)備,但現(xiàn)在需要注冊(cè)的是多個(gè) PWM 設(shè)備,于是編寫(xiě) lpc_pwm_init() 將 PWM 設(shè)備表中的多個(gè) PWM 設(shè)備逐個(gè)進(jìn)行注冊(cè)。

static int lpc_pwm_init(void)
{
int i = 0;
int result = RT_EOK;
pwm_get_channel();
for (i = 0; i < sizeof(lpc_pwm_obj) / sizeof(lpc_pwm_obj[0]); i++)
{
/* pwm init /
if (rt_hw_pwm_init(&lpc_pwm_obj[i]) != RT_EOK)
{
LOG_E("%s init failed", lpc_pwm_obj[i].name);
result = -RT_ERROR;
goto __exit;
}
else
{
LOG_D("%s init success", lpc_pwm_obj[i].name);
/
register pwm device */
if (rt_device_pwm_register(&lpc_pwm_obj[i].pwm_device, lpc_pwm_obj[i].name, &lpc_drv_ops, lpc_pwm_obj[i].tim) == RT_EOK)
{
LOG_D("%s register success", lpc_pwm_obj[i].name);
}
else
{
LOG_E("%s register failed", lpc_pwm_obj[i].name);
result = -RT_ERROR;
}
}
}
__exit:
return result;
}
INIT_DEVICE_EXPORT(lpc_pwm_init);

至此,對(duì)于該 BSP 的 drv_pwm 的重構(gòu)基本完成,主要目的是更全面的對(duì)接 RT-Thread 設(shè)備框架,能夠同時(shí)使用多路 PWM 輸出,提高其適用性和靈活性。

聲明:本文內(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)投訴
  • LPC
    LPC
    +關(guān)注

    關(guān)注

    8

    文章

    136

    瀏覽量

    77677
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3254

    瀏覽量

    115143
  • CMD命令
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    8330
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1303

    瀏覽量

    40293
  • PWM輸出
    +關(guān)注

    關(guān)注

    1

    文章

    66

    瀏覽量

    5206
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    LPC55S69-RT-Thread Micropython移植日志

    LPC55S69也成功移植了RT-Thread的FINSH組件,點(diǎn)擊TAB鍵可查看Finsh控制臺(tái)命令,我們可以看到有一個(gè)python命令行簡(jiǎn)單測(cè)試下micropython,下面使用python命令運(yùn)行
    發(fā)表于 02-09 14:48

    LPC55S69對(duì)接RTduino的相關(guān)工作

    該文記錄 LPC55S69 開(kāi)發(fā)板體驗(yàn)期間,對(duì)接 RTduino 的相關(guān)工作。RTduino 是基于 RT-Thread 框架下進(jìn)一步的封裝,使得用戶可以像開(kāi)發(fā) Arduino 一樣快
    發(fā)表于 02-24 14:51

    LPC55S69開(kāi)發(fā)板的PWM踩坑寄錄

      LPC55S69 PWM踩坑寄錄  在使用 lpc55s69_nxp_evk 開(kāi)發(fā)板對(duì)接 rtduino 的過(guò)程,對(duì)接
    發(fā)表于 03-06 10:49

    LPC55S69 Flashmagic不編程的原因?

    我用 NXP LPC55S69 開(kāi)發(fā)了一塊電路板。我已經(jīng)用 Xpresso IDE 開(kāi)發(fā)了一個(gè)程序。我的應(yīng)用程序在 SWD 端口上使用 Segger Jlink 運(yùn)行良好。我在設(shè)計(jì)中在設(shè)備的USB1
    發(fā)表于 03-15 07:54

    LPC55S69對(duì)接RT-Thread PWM設(shè)備框架介紹

    LPC55S69對(duì)接RT-Thread PWM設(shè)備框架在使用
    發(fā)表于 03-16 14:01

    如何實(shí)現(xiàn)LPC55s69的USB固件更新?

    我們正在研究 LPC55s69,并計(jì)劃通過(guò) USB 而不是 ISP 更新固件。他們是否有任何類似的文章/代碼項(xiàng)目引用了 LPC55s69 板。如果沒(méi)有,那么我可以使用與文章中類似的類比來(lái)實(shí)現(xiàn) LPC55s69 的 USB 固件更
    發(fā)表于 03-20 06:19

    LPC55S69中的內(nèi)存如何訪問(wèn)仲裁?

    我叫 Ted,我正在開(kāi)發(fā)一個(gè)基于 Zephyr 的應(yīng)用程序以在 LPC55S69 上運(yùn)行。該應(yīng)用程序?qū)嶋H上是一對(duì)固件項(xiàng)目,此時(shí)它們通過(guò) LPC55S69 的處理器間郵箱 (IPM) 功能相互協(xié)調(diào)
    發(fā)表于 04-12 08:54

    LPC55S69 EVK調(diào)試期間出現(xiàn)Wire ACK錯(cuò)誤怎么解決?

    使用 LPC55S69 EVK 調(diào)試時(shí)出現(xiàn)以下錯(cuò)誤。我正在運(yùn)行 SDK 中的 B2B SPI 示例進(jìn)行測(cè)試。構(gòu)建過(guò)程清除沒(méi)有任何錯(cuò)誤,但我在調(diào)試期間收到此錯(cuò)誤。 任何解決方案?還有一種方法可以將 LPC55S69 EVK 板恢復(fù)出廠設(shè)置,例如恢復(fù)出廠設(shè)置?
    發(fā)表于 06-12 07:00

    RT-Thread設(shè)備模型框架及創(chuàng)建注冊(cè)設(shè)備的實(shí)現(xiàn)

    RT-Thread設(shè)備模型框架及創(chuàng)建注冊(cè)設(shè)備的實(shí)現(xiàn)方式介紹如下:
    的頭像 發(fā)表于 05-28 10:38 ?2218次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>設(shè)備</b>模型<b class='flag-5'>框架</b>及創(chuàng)建注冊(cè)<b class='flag-5'>設(shè)備</b>的實(shí)現(xiàn)

    RT-Thread文檔_PWM 設(shè)備

    RT-Thread文檔_PWM 設(shè)備
    發(fā)表于 02-22 18:35 ?1次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>PWM</b> <b class='flag-5'>設(shè)備</b>

    LPC55S69RT-Thread上的SDIO驅(qū)動(dòng)和文件系統(tǒng)

    本篇將介紹如何在LPC55S69_EVK開(kāi)發(fā)板上,使用RT-Thread的SDIO驅(qū)動(dòng)和FATFS文件系統(tǒng)組件實(shí)現(xiàn)SD卡上的文件讀寫(xiě)。
    的頭像 發(fā)表于 03-08 14:13 ?1265次閱讀
    <b class='flag-5'>LPC55S69</b>在<b class='flag-5'>RT-Thread</b>上的SDIO驅(qū)動(dòng)和文件系統(tǒng)

    LPC55S69RT-Thread上輕松搞定高速上網(wǎng)

    依然難覓,RW007便是其中之一。 本文使用LPC55S69_EVK開(kāi)發(fā)板連接RW007 WiFi 模塊,通過(guò)運(yùn)行RT-Thread操作系統(tǒng),讓開(kāi)發(fā)板輕松愉快的聯(lián)網(wǎng)。
    的頭像 發(fā)表于 03-27 16:06 ?846次閱讀

    淺析RT-Thread設(shè)備驅(qū)動(dòng)框架

    RT-Thread 設(shè)備框架屬于組件和服務(wù)層,是基于 RT-Thread 內(nèi)核之上的上層軟件。設(shè)備框架
    的頭像 發(fā)表于 08-07 15:39 ?2039次閱讀

    RT-Thread框架下的SMP支持

    最近報(bào)名參加了恩智浦社區(qū)的 LPC55S69 開(kāi)發(fā)板測(cè)評(píng)活動(dòng),由于其搭載的是一顆 Cortex-M33 Dual Core 的 CPU,而且有大佬已經(jīng)支持了 RT-Thread 的 BSP,就考慮
    的頭像 發(fā)表于 10-11 10:34 ?1184次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>框架</b>下的SMP支持

    LPC55S69 PWM踩坑寄錄

    在使用 lpc55s69_nxp_evk 開(kāi)發(fā)板對(duì)接 rtduino 的過(guò)程,對(duì)接 PWM 部分的時(shí)候,遇到了不少坑,在此記錄。
    的頭像 發(fā)表于 10-11 15:30 ?679次閱讀
    主站蜘蛛池模板: 99视频这里只有精品| 国产麻豆精品久久一二三| 主播蜜汁丝袜精品自拍| 国产精品私人玩物在线观看| 高清国语自产拍免费| 国产精品视频国产永久视频| 国产小视频免费在线观看| 韩日午夜在线资源一区二区| 久久99re6国产在线播放| 国产精品7777人妻精品冫| 国产精品视频免费视频| 国产在线观看黄| 久久精品一区| 男男免费看| 日韩欧美一级| 亚洲国产高清在线| 无码中文字幕热热久久| 亚洲免费精品视频| 777精品久无码人妻蜜桃| jlzz中国jizz日本老师水多| 高清AV熟女一区| 狠狠色狠狠色88综合日日91| 凌馨baby| 日韩亚洲人成在线| 亚洲理论片在线中文字幕| 最新精品国产| 成人精品综合免费视频| 国产亚洲AV精品无码麻豆| 久久永久免费视频| 日本亚洲精品无码区国产电影| 帅哥男男GV在线1080P| 亚洲一区二区免费看| gogo免费在线观看| 国产午夜精品鲁丝片| 麻豆成人啪啪色婷婷久久| 色男人的天堂久久综合| 一级毛片两人添下面| 厕所RXXX| 久久久国产精品免费A片3D| 日本中文字幕伊人成中文字幕| 亚洲人精品午夜射精日韩|