器件型号:CC3220
工具/软件:TI C/C++编译器
尊敬的 TI 团队:
我 需要通过 PWM 在 CC3220上生成8MHz、并且我已成功实现它、但仅在 PWM 初始化期间频率设置为8.5MHz 时才实现。
导致这种变化的原因是什么?
在 PWM 初始化中、频率更新为8MHz 时、PWM 输出也为7.2MHz。
下面是代码的代码片段。
PWM 初始化
PWM_init();
//初始化 PWM 参数
PWM_PARAMS_INIT (&pwmParams);
pwmParams.idleLevel = PWM_IDLE_LOW;// PWM 未运行时输出低电平
pwmParams.periodUnits = PWM_PERIOD_Hz;//周期以 Hz 为单位
pwmParams.periodValue = 8500000;// 8MHz
pwmParams.dutyUnits = PWM_Duty_fraction;//占空比为小数百分比
pwmParams.dutyValue = 0;// 0%初始占空比
//打开 PWM 实例
PWM = PWM_OPEN (Board_PWM0、&pwmParams);
if (PWM == NULL){
// PWM_open()失败
while (1);
}
PWM_START (PWM);//以0%占空比启动 PWM
while (1)
{
PWM_setDuty (PWM、(PWM_Duty_Frite_MAX / 2));//将占空比设置为50%
}
PWM 驱动器
/*
*========================================= PWM ================================================
*
#include
#include
PWMTimerCC32XX_Object pwmTimerCC3220SObjects[CC3220S_LAUNCHXL_PWMCOUNT;
CONST PWMTimerCC32XX_HWAttrsV2 pwmTimerCC3220SHWAttrs[CC3220S_LAUNCHXL_PWMCOUNT ={
{/* CC3220S_LAUNCHXL_PWM6 *
pwmPin = PWMTimerCC32XX_PIN_01
}、
{* CC3220S_LAUNCHXL_PWM7 */
pwmPin = PWMTimerCC32XX_PIN_02
}
};
用于 PWM 的引脚
#define PWMTimerCC32XX_PIN_01 (PWMTimerCC32XX_T3A | PWMTimerCC32XX_GPIO10 | 0x0300)/*!<@hidealizer */
计时器驱动器
/*
*========================================= 计时器=========================================
*
#include
#include
TimerCC32XX_Object timerCC3220SObjects[CC3220S_LAUNCHXL_TIMERCOUNT];
const TimerCC32XX_HWAttrs timerCC3220SHWAttrs[CC3220S_LAUNCHXL_TIMERCOUNT]={
{
baseAddress = TIMERA0_BASE、
.subTimer = TimerCC32XX_timer32、
.intNum = INT_TIMERA0A、
.intPriority =~0
}、
{
baseAddress = TIMERA1_base、
.subTimer = TimerCC32XX_timer16A、
.intNum = INT_TIMERA1A、
.intPriority =~0
}、
{
baseAddress = TIMERA1_base、
.subTimer = TimerCC32XX_timer16B、
.intNum = INT_TIMERA1B、
.intPriority =~0
}、
};