国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

NUCLEO-F411RE RT-Thread 體驗(yàn) (9) - GCC環(huán)境 PWM的驅(qū)動(dòng)移植以及簡單使用

這篇具有很好參考價(jià)值的文章主要介紹了NUCLEO-F411RE RT-Thread 體驗(yàn) (9) - GCC環(huán)境 PWM的驅(qū)動(dòng)移植以及簡單使用。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

NUCLEO-F411RE RT-Thread 體驗(yàn) (9) - GCC環(huán)境 PWM的驅(qū)動(dòng)移植以及簡單使用

驅(qū)動(dòng)移植

驅(qū)動(dòng)位于drv_pwm.c文件中,components層代碼位于rt_drv_pwm.c中。

修改Makefile文件

NUCLEO-F411RE RT-Thread 體驗(yàn) (9) - GCC環(huán)境 PWM的驅(qū)動(dòng)移植以及簡單使用

修改配置文件rtconfig.h

LED2鏈接PA5,而TIM2_CHANNEL1可從PA5輸出PWM,所以我們需要配置TIM2,并使能TIM2_CH1.
NUCLEO-F411RE RT-Thread 體驗(yàn) (9) - GCC環(huán)境 PWM的驅(qū)動(dòng)移植以及簡單使用
NUCLEO-F411RE RT-Thread 體驗(yàn) (9) - GCC環(huán)境 PWM的驅(qū)動(dòng)移植以及簡單使用

修改RT-Thread-basic/Core/Src/stm32f4xx_hal_msp.c

NUCLEO-F411RE RT-Thread 體驗(yàn) (9) - GCC環(huán)境 PWM的驅(qū)動(dòng)移植以及簡單使用
HAL_TIM_MspPostInit 函數(shù)在stm32_hw_pwm_init函數(shù)中被調(diào)用。主要配置PA5。
HAL_TIM_PWM_MspInit函數(shù)在HAL_TIM_PWM_Init中被調(diào)用。而HAL_TIM_PWM_Init在stm32_hw_pwm_init中被調(diào)用。

RT-Thread-basic/libraries/HAL_Drivers/config/f4/pwm_config.h

NUCLEO-F411RE RT-Thread 體驗(yàn) (9) - GCC環(huán)境 PWM的驅(qū)動(dòng)移植以及簡單使用
此處channel并不與實(shí)際channel1對(duì)應(yīng),后面會(huì)重新賦值。
NUCLEO-F411RE RT-Thread 體驗(yàn) (9) - GCC環(huán)境 PWM的驅(qū)動(dòng)移植以及簡單使用
編譯后,list_device后會(huì)出現(xiàn)pwm2設(shè)備
NUCLEO-F411RE RT-Thread 體驗(yàn) (9) - GCC環(huán)境 PWM的驅(qū)動(dòng)移植以及簡單使用

使用pwm命令測試

rt_drv_pwm.c中封裝了pwm_set pwm_get pwm_enable pwm_disable
假設(shè)設(shè)置1KHZ 占空比50%的波形,命令如下:
pwm_set pwm2 1 1000000 500000
pwm_enable pwm2 1
period單位為ns,1s = 1000 * 1000 * 1000 ns
1Khz,每個(gè)周期占1/1000 = 1ms,1ms = 1000 * 1000ns,duty cycle 占一半,為500*1000ns。
驅(qū)動(dòng)中如何設(shè)置的呢?
NUCLEO-F411RE RT-Thread 體驗(yàn) (9) - GCC環(huán)境 PWM的驅(qū)動(dòng)移植以及簡單使用
主要是做了個(gè)轉(zhuǎn)換,
1s = 1000 * 1000 * 1000,那么1ms = 1000 * 1000,換成100M的工作頻率即為1ms = 100 * 1000,所以period = (傳過來的periond * timeclock)/ (1000 * 1000 * 1000)。
這個(gè)period可以理解為一個(gè)周期里的計(jì)數(shù)次數(shù),
TIM的AutoReload的最大值也是這個(gè)period,但是在0-65535之間,如果大與65535,則要經(jīng)過perscaler設(shè)置一下分頻。所以這里psc = (period/MaxPperiod) + 1。意思是看看period大于幾倍的65535,就設(shè)置幾倍的分頻。

簡單測試程序

/*
 * Copyright (c) 2006-2018, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2018-11-25     misonyo      first implementation.
 */
/*
 * 程序清單:這是一個(gè) PWM 設(shè)備使用例程
 * 例程導(dǎo)出了 pwm_led_sample 命令到控制終端
 * 命令調(diào)用格式:pwm_led_sample
 * 程序功能:通過 PWM 設(shè)備控制 LED 燈的亮度,可以看到LED不停的由暗變到亮,然后又從亮變到暗。
*/
#include <rtthread.h>
#include <rtdevice.h>
#include "board.h"

#define LED_PIN_NUM         GET_PIN(A, 5)     /* LED PIN腳編號(hào),查看驅(qū)動(dòng)文件drv_gpio.c確定 */
#define PWM_DEV_NAME        "pwm2"  /* PWM設(shè)備名稱 */
#define PWM_DEV_CHANNEL     1       /* PWM通道 */
struct rt_device_pwm *pwm_dev;      /* PWM設(shè)備句柄 */

static int pwm_led_sample(int argc, char *argv[])
{
    rt_uint32_t period, pulse, dir;
    period = 500000;    /* 周期為0.5ms,單位為納秒ns */
    dir = 1;            /* PWM脈沖寬度值的增減方向 */
    pulse = 0;          /* PWM脈沖寬度值,單位為納秒ns */
    // /* 設(shè)置LED引腳腳模式為輸出 */
    // rt_pin_mode(LED_PIN_NUM, PIN_MODE_OUTPUT);
    // /* 拉高LED引腳 */
    // rt_pin_write(LED_PIN_NUM, PIN_HIGH);
    
    /* 查找設(shè)備 */
    pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);
    if (pwm_dev == RT_NULL)
    {
        rt_kprintf("pwm sample run failed! can't find %s device!\n", PWM_DEV_NAME);
        return RT_ERROR;
    }
    /* 設(shè)置PWM周期和脈沖寬度默認(rèn)值 */
    rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse);
    /* 使能設(shè)備 */
    rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);
    
    while (1)
    {
        rt_thread_mdelay(1000);
        if (dir)
        {
            pulse += 5000;      /* 從0值開始每次增加5000ns */
        }
        else
        {
            pulse -= 5000;      /* 從最大值開始每次減少5000ns */
        }
        if (pulse >= period)
        {
            dir = 0;
        }
        if (0 == pulse)
        {
            dir = 1;
        }
        /* 設(shè)置PWM周期和脈沖寬度 */
        rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse);
    }
}
/* 導(dǎo)出到 msh 命令列表中 */
MSH_CMD_EXPORT(pwm_led_sample, pwm sample);

代碼

代碼下載文章來源地址http://www.zghlxwxcb.cn/news/detail-496793.html

到了這里,關(guān)于NUCLEO-F411RE RT-Thread 體驗(yàn) (9) - GCC環(huán)境 PWM的驅(qū)動(dòng)移植以及簡單使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • RT-Thread STM32G070RB-Nucleo開發(fā)板的BSP說明

    RT-Thread STM32G070RB-Nucleo開發(fā)板的BSP說明

    本文檔為 STM32G070RB-Nucleo 開發(fā)板的 BSP (板級(jí)支持包) 說明。 主要內(nèi)容如下: 開發(fā)板資源介紹 BSP 快速上手 進(jìn)階使用方法 通過閱讀快速上手章節(jié)開發(fā)者可以快速地上手該 BSP,將 RT-Thread 運(yùn)行在開發(fā)板上。在進(jìn)階使用指南章節(jié),將會(huì)介紹更多高級(jí)功能,幫助開發(fā)者利用 RT-Thread 驅(qū)

    2024年02月03日
    瀏覽(23)
  • STM32F411RE NUCLEO標(biāo)準(zhǔn)庫:報(bào)錯(cuò)#47;#20

    STM32F411RE NUCLEO標(biāo)準(zhǔn)庫:報(bào)錯(cuò)#47;#20

    `關(guān)于STM32F411RE Nucleo開發(fā)板創(chuàng)建標(biāo)準(zhǔn)庫的過程和相關(guān)的一些二錯(cuò)誤解決 `這幾天心血來潮了,想起再次學(xué)習(xí)ST_MCU,手頭正好有STM32F411RE NUCLEO 官方的開發(fā)板一塊,于是又拾起信心了,現(xiàn)在不是流行HAL庫了嘛,但是對(duì)于我這個(gè)新手而言,HAL庫是不錯(cuò)的選擇,但是我發(fā)現(xiàn)了一個(gè)問題,HAL庫把你能

    2024年02月02日
    瀏覽(321)
  • RT-Thread學(xué)習(xí)(一)簡介及基礎(chǔ)環(huán)境配置

    RT-Thread學(xué)習(xí)(一)簡介及基礎(chǔ)環(huán)境配置

    之前學(xué)習(xí)了FreeRTOS,但是一直想深入學(xué)習(xí),但是沒有人指導(dǎo),又不知道該如何學(xué)習(xí),于是再學(xué)習(xí)一個(gè)操作系統(tǒng)看看情況。 RT-Thread是一個(gè)物聯(lián)網(wǎng)操作系統(tǒng),幾乎支持所有主流的MCU和Wi-Fi芯片,實(shí)時(shí)多線程操作系統(tǒng),主要用在32位的MCU上面。物聯(lián)網(wǎng)(Internet Of Things,IoT),RT-Threa

    2024年01月17日
    瀏覽(21)
  • 使用qemu在windows系統(tǒng)下搭建樹莓派3b環(huán)境運(yùn)行RT-Thread

    表1 下載資源 序號(hào) 資源名稱 下載地址 說明 1 raspi3b_run_rt_thread_in_Qemu.rar https://download.csdn.net/download/camelbrand/87371458 包含內(nèi)容: 1.qemu在windows環(huán)境下的安裝包以及win7 64位系統(tǒng)的dll補(bǔ)丁文件 2.rt-thread env配置腳本 3.rt-thread源碼包 4.編譯好的樹莓派3b運(yùn)行rt-thread的環(huán)境 5.aarch64在win64環(huán)

    2024年02月05日
    瀏覽(22)
  • RT-Thread 1. GD32移植RT-Thread Nano

    RT-Thread 1. GD32移植RT-Thread Nano

    1. RT-Thread Nano?下載 RT-Thread Nano 是一個(gè)極簡版的硬實(shí)時(shí)內(nèi)核,它是由 C 語言開發(fā),采用面向?qū)ο蟮木幊趟季S,具有良好的代碼風(fēng)格,是一款可裁剪的、搶占式實(shí)時(shí)多任務(wù)的 RTOS。其內(nèi)存資源占用極小,功能包括任務(wù)處理、軟件定時(shí)器、信號(hào)量、郵箱和實(shí)時(shí)調(diào)度等相對(duì)完整的實(shí)

    2024年02月05日
    瀏覽(29)
  • RT-Thread 7. RT-Thread Studio ENV修改MCU型號(hào)

    RT-Thread 7. RT-Thread Studio ENV修改MCU型號(hào)

    1. 修改MCU型號(hào) 2.在ENV界面輸入 3. dist下為更新后完整源代碼 4.導(dǎo)入RT-Thread Studio 發(fā)現(xiàn)GD32F330已經(jīng)生效了。 5. 自己編寫startup_gd32f3x0.S,準(zhǔn)確性待驗(yàn)證

    2024年02月06日
    瀏覽(27)
  • 【STM32&RT-Thread零基礎(chǔ)入門】 2. 新建RT-Thread項(xiàng)目

    【STM32&RT-Thread零基礎(chǔ)入門】 2. 新建RT-Thread項(xiàng)目

    硬件:STM32F103ZET6、ST-LINK、usb轉(zhuǎn)串口工具 RT-Thread的全稱是Real Time Thread,顧名思義,它是一個(gè)嵌入式實(shí)時(shí)多線程操作系統(tǒng)。相較于 Linux 操作系統(tǒng),RT-Thread 體積小,成本低,功耗低、啟動(dòng)快速,除此之外 RT-Thread 還具有實(shí)時(shí)性高、占用資源小等特點(diǎn),非常適用于各種資源受限(

    2024年02月13日
    瀏覽(25)
  • RT-Thread 9. VS2012下仿真RT-Thread 和LVGL

    RT-Thread 9. VS2012下仿真RT-Thread 和LVGL

    1. 在ENV中添加組件 2. 下載組件 3. 生成代碼 4. 打開代碼 雙擊project.vcxproj 編譯 5. 運(yùn)行

    2024年02月06日
    瀏覽(25)
  • 使用RT-Thread Studio搭配STM32CubeMX新建RT-Thread項(xiàng)目

    使用RT-Thread Studio搭配STM32CubeMX新建RT-Thread項(xiàng)目

    STM32CubeMX下載 RT-Thread Studio下載 安裝好RT-Thread Studio后,先打開RT-Thread SDK管理器確認(rèn)有沒有自己MCU需要的SDK包,直接安裝好之后里面是有STM32F1系列的SDK包,其他的需要自己安裝。 之后點(diǎn)擊文件→新建→RT-Thread項(xiàng)目,根據(jù)自己需要配置好后點(diǎn)擊完成就會(huì)生成RT-Thread項(xiàng)目。 新建項(xiàng)

    2024年02月11日
    瀏覽(21)
  • 【STM32&RT-Thread零基礎(chǔ)入門】8. 基于 CubeMX 移植 RT-Thread Nano

    【STM32&RT-Thread零基礎(chǔ)入門】8. 基于 CubeMX 移植 RT-Thread Nano

    硬件:STM32F103ZET6、ST-LINK、usb轉(zhuǎn)串口工具、4個(gè)LED燈、1個(gè)蜂鳴器、4個(gè)1k電阻、2個(gè)按鍵、面包板、杜邦線 利用RT_Thread操作系統(tǒng)實(shí)現(xiàn)三種不同的LED等閃爍 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 cubemx配置參考教程: 基于 CubeMX 移植 RT-Thread Nano 后面程序所需的引腳 RT

    2024年02月09日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包