This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我在使用ZStack-CC2530-2.3.0-1.4.0 时需要用到us级别的定时,和pwm输出,现在想通过使用定时器实现以上功能,但是定时器没有工作,不知道在zstack中使用定时器要有哪些步骤呢?谢谢!我已经做了以下工作:
1,配置HAL_TIMER == TRUE;
2,初始化定时器
HalTimerConfig(HAL_TIMER_3,HAL_TIMER_MODE_CTC,HAL_TIMER_CHANNEL_A,HAL_TIMER_CH_MODE_OUTPUT_COMPARE,TRUE,CallBack);
HalTimerStart(HAL_TIMER_3,100);
3,编写定时处理函数
static void CallBack( uint8 timerId, uint8 channel, uint8 channelMode)
{
HalLedSet (HAL_LED_2, HAL_LED_MODE_FLASH);
}
没发觉有什么问题,
不知道你有没有单步调试过,
以上程序都执行到了么,
是不是不能进入CallBack啊?
打开pwm功能,
我觉得就是设置一下定时器外设的引脚(设置PERCFG和PxSEL寄存器),
再设置一下匹配时的操作就行了吧(设置CCTL寄存器的CMP[2:0])。
uint8 HalTimerConfig (uint8 timerId, uint8 opMode, uint8 channel, uint8 channelMode,
bool intEnable, halTimerCBack_t cBack)
{ uint8 hwtimerid;
hwtimerid = halTimerRemap (timerId);
if ((opMode & HAL_TIMER_MODE_MASK) && (timerId < HAL_TIMER_MAX) &&
(channelMode & HAL_TIMER_CHANNEL_MASK) && (channel & HAL_TIMER_CHANNEL_MASK))
{
halTimerRecord[hwtimerid].configured = TRUE;
halTimerRecord[hwtimerid].opMode = opMode;
halTimerRecord[hwtimerid].channel = channel;
halTimerRecord[hwtimerid].channelMode = channelMode;
halTimerRecord[hwtimerid].intEnable = intEnable;
halTimerRecord[hwtimerid].callBackFunc = cBack;
}
else
{
return HAL_TIMER_PARAMS_ERROR;
}
return HAL_TIMER_OK;
}
如果使用其他定时器也是不行的