主题中讨论的其他器件:SysConfig
您好!
我不熟悉 PWM、因此我的问题以 TI 的现有示例项目为基础: pwmled2
首先、我的环境是:
用于 ARM 9.32.1的 IAR 嵌入式 Workench
SDK: simplelink_cc13xx_cc26xx_sdk_7_10_02_23
芯片 MCU:CC1352P1
我的目标是使用 PWM 使特定 DIO (在 SysConfig、PWM 选项卡中设置)上的 LED 闪烁。
我的传感器需要创建一个固定波:1秒周期和10%占空比。 (即100mSec 开机时间和900mSec 关机时间)
我可以看到 LED 在闪烁、并使用专用 DIO 上的 Logic Pro 测量时间帧。
但是、我无法达到1秒的周期。
使用的参数包括:
params.periodUnits = PWM_PERIOD_US;
params.periodValue = 1000000; //1sec
或
params.periodUnits = PWM_PERIOD_Hz;
params.periodValue = 1; //1Hz
然后是 PWM_OPEN()失败。
是否可以使用指定的 SDK 生成此类波形?
如果某些设置不正确、欢迎提出意见和建议、以及如何通过其他方式产生这一波。
谢谢你。
下面是正在使用的函数:
空初始化 StrobePWMInterface()
{
uint32_t pwmPeriod = 3000;
uint32_t DUTY = 0;
uint32_t dutyInc = 100;
/*以微秒为单位的睡眠时间*/
uint32_t time = 50000;
PWM_Handle pwm2 = NULL;
PWM_Params 参数;
/*调用驱动程序初始化函数。 */
PWM_INIT();
PWM_PARAMS_INIT (¶ms);
//params.periodUnits = PWM_PERIOD_US;
//params.periodValue = 1000000; // 1秒
//params.dutyUnits = PWM_DUTY_US;
//params.dutyValue = 0;
params.periodUnits = PWM_PERIOD_Hz;
params.periodValue = 5;//5Hz
params.dutyUnits = PWM_Duty_Fraction;
params.dutyValue = 0;
pwm2 = pwm_open (CONFIG_PWM_2、¶ms);
如果(pwm2 == NULL)
{
/* CONFIG_PWM_0未打开*/
while (1){}
}
PWM_START (pwm2);
DUTY =(uint32_t)((((uint64_t) PWM_DUTY_FRATION_MAX * 10)/ 100);
/*循环永远递增 PWM 占空比*/
while (1)
{
//PWM_setDutyAndPeriod (pwm2、Duty、pwmPeriod);
PWM_setDuty (pwm2、占空比);
Duty =(Duty + dutyInc);
如果(DUTY == pwmPeriod ||(!DUTY))
{
dutyInc =-dutyInc;
}
usleep (时间);
}
}