單片機TM4C123學習(九):PWM


1.頭文件與變量定義

#include "tiva_pwm.h"                // PWM

 

2.初始化

// PWM 初始化,頻率為1000,占空比為0
    M1PWM7_init(1000, 0);

// 具體函數內容
void M1PWM7_init(uint32_t freq, float duty)
{
    //設置PWM時鍾為系統時鍾的1分頻
    SysCtlPWMClockSet(SYSCTL_PWMDIV_1);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM1);
    //配置引腳為PWM功能
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
    GPIOPinConfigure(GPIO_PF3_M1PWM7);
    GPIOPinTypePWM(GPIOF, Pin3);    //M1PWM7
    //配置 PWM1 Generator3·發生器
    PWMGenConfigure(PWM1_BASE, PWM_GEN_3, PWM_GEN_MODE_UP_DOWN|PWM_GEN_MODE_NO_SYNC);
    //配置 PWM1 Generator3 周期
    PWMGenPeriodSet(PWM1_BASE, PWM_GEN_3, SysCtlClockGet()/freq - 1);
    //配置 PWM1 Generator3 占空比
    PWMPulseWidthSet(PWM1_BASE, PWM_OUT_7, PWMGenPeriodGet(PWM1_BASE, PWM_GEN_3)*duty - 1);
    //使能 PWM1 輸出
    PWMOutputState(PWM1_BASE, PWM_OUT_7_BIT, true);
    //使能 PWM1 發生器模塊
    PWMGenEnable(PWM1_BASE, PWM_GEN_3);
}

改變占空比

M1PWM7_set_duty(duty);

// 具體函數內容
void
M1PWM7_set_duty(float duty) { //配置 PWM1 Generator3 占空比 PWMPulseWidthSet(PWM1_BASE, PWM_OUT_7, PWMGenPeriodGet(PWM1_BASE, PWM_GEN_3)*duty - 1); PWMOutputState(PWM1_BASE, PWM_OUT_7_BIT, true); //使能 PWM1 ·發生器模塊 PWMGenEnable(PWM1_BASE, PWM_GEN_3); }

3.調用示例

*由於PF3對應的是擴展板上的白色LED燈,滅燈操作為

PWMOutputState(PWM1_BASE, PWM_OUT_7_BIT, false);    // 滅燈

 4.管腳


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM