请教大家一个问题:
我将simplelink_cc13x0_sdk_1_60_00_版本SDK中PWM例程移植到Sensor例程中,发现PWM打开失败。最终发现,程序停在了这里
pwm1 = PWM_open(Board_PWM0, ¶ms);
if (pwm1 == NULL) {
/* Board_PWM0 did not open */
while (1);
}、
进入到pwm_open函数中调试。
/* Get handle for this driver instance */
handle = (PWM_Handle) &(PWM_config[index]);
这是handle还不为空,,但执行了下边这个,handle就变成了空。
handle = handle->fxnTablePtr->openFxn(handle, params);
请问问题出在了哪
Viki Shi:
handle为空的可能性有很多,是否能提供更详细描述或完整程序?另外排查一下你是否使用了其他driver及相关引脚,是否配置正确
Invoker:
回复 Viki Shi:
您好:
1、我在sensor.c中定义了全局变量
uint16_t pwmPeriod = 3000;uint16_t duty = 0;uint16_t dutyInc = 100;
/* Sleep time in microseconds */uint32_t time = 50000;PWM_Handle pwm1 = NULL;PWM_Handle pwm2 = NULL;PWM_Params params;
在Sensirinit()函数的最后增加了
/* Call driver init functions. */ PWM_init(); PWM_Params_init(¶ms); params.dutyUnits = PWM_DUTY_US; params.dutyValue = 0; params.periodUnits = PWM_PERIOD_US; params.periodValue = pwmPeriod; pwm1 = PWM_open(CC1310_LAUNCHXL_PWM0, ¶ms); if (pwm1 == NULL) { /* Board_PWM0 did not open */ while (1); }
PWM_start(pwm1);
PWM接的IO接的是LED, 对应5*5封装IOID_9。其余管脚配置为PIN_UNASSIGNED
/* PWM Outputs */#define CC1310_LAUNCHXL_PWMPIN0 IOID_9#define CC1310_LAUNCHXL_PWMPIN1 PIN_UNASSIGNED#define CC1310_LAUNCHXL_PWMPIN2 PIN_UNASSIGNED#define CC1310_LAUNCHXL_PWMPIN3 PIN_UNASSIGNED#define CC1310_LAUNCHXL_PWMPIN4 PIN_UNASSIGNED#define CC1310_LAUNCHXL_PWMPIN5 PIN_UNASSIGNED#define CC1310_LAUNCHXL_PWMPIN6 PIN_UNASSIGNED#define CC1310_LAUNCHXL_PWMPIN7 PIN_UNASSIGNED
2、其他的driver我用到了UART,对应的IO是0 和 1,没有和PWM冲突,UART之前一直在用,没问题。这次只是增加了PWM。
Alvin Chen:
回复 Invoker:
你单独在测试PWM时时正常的对吧?
你有按照你pwm的demo的板级文件去配置你sensor的板级文件?
Invoker:
回复 Alvin Chen:
您好:我移植了board.h 和CC1310LAUNCHXL的.c和.h文件,但只是移植了PWM对应的部分。
Alvin Chen:
回复 Invoker:
5×5 io没那么多,你对应手册把IO设置一下试试。
Invoker:
回复 Alvin Chen:
您好:IO的配置我已改成5*5的了,而且已经跑通了。没用的IO已全部注释掉,现在是有一个用到PWM的需求。所以加上了这个
Alvin Chen:
回复 Invoker:
pwm1 = PWM_open(Board_PWM0, ¶ms);
设置为上面这样试试,CC1310LAUNCHXL.c中改一下io就可以。
Invoker:
回复 Alvin Chen:
非常感谢您的回答:
您说的CC1310LAUNCHXL.c中修改,我在SDK安装目录下的和Sensor例程的工程里的CC1310LAUNCHXL.c都没找到,在PWM的历程中的CC1310LAUNCHXL.h中找到了。我是这样修改的我在Sensor的工程里添加了.c和.h文件,将PWM例程中CC1310LAUNCHXL.c和CC1310LAUNCHXL.h
中PWM的相关部分移植了过来。包括您说的那个IO宏定义。
nsonninnnooakdf
testpwm.h
Invoker:
回复 Alvin Chen: