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.

[参考译文] CCS/CC1312R:定时器类型和 Timer_Params ->周期之间有什么关系?

Guru**** 1747040 points
Other Parts Discussed in Thread: CC1312R, SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/884040/ccs-cc1312r-what-is-the-relation-between-timer-type-and-timer_params----period

器件型号:CC1312R
Thread 中讨论的其他器件: SysConfig

工具/软件:Code Composer Studio

大家好、

我知道、CC1312R 凸轮支持 4×32位计时器或8×16位计时器。 如果我使用16位定时器、我可以设置 Timer_Params -> Period exceed 0xFFFF (period is uint32_t)吗? 在我的测试中、当周期为300000而不是400000时、计时器可以正确打开。 你有什么建议吗? 下面显示了我的设置、谢谢

正常情况:  

//keyHoldTimer
Timer_Params_init (&keyHoldParams);
KeyHoldParams.Period = 300000;//300msec
KeyHoldParams.periodUnits = Timer_Period_US;
KeyHoldParams.timerMode = Timer_OneShot_callback;
keyHoldParams.timerCallback = keyHoldTimerCallback;

KeyHoldTimerHandle = Timer_open (CONFIG_TIMER_0、&keyHoldParams);

if (keyHoldTimerHandle == NULL){
/*初始化计时器失败*/
while (1){}

NG 案例:  

//keyHoldTimer
Timer_Params_init (&keyHoldParams);
KeyHoldParams.Period =  400000;//400msec
KeyHoldParams.periodUnits = Timer_Period_US;
KeyHoldParams.timerMode = Timer_OneShot_callback;
keyHoldParams.timerCallback = keyHoldTimerCallback;

KeyHoldTimerHandle = Timer_open (CONFIG_TIMER_0、&keyHoldParams);

if (keyHoldTimerHandle == NULL){
/*初始化计时器失败*/
while (1){}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我假设(正如您建议的)问题是由于所选的定时器的大小。

    在本例中、我建议您使用32位计时器。 为此,请使用 SysConfig (计时器>计时器类型:32位)或使用以下代码片段修改驱动程序配置:

    /*
    === timerCC26XXHWAttrs ===
    //
    const TimerCC26XX_HWAttrs timerCC26XXHWAttrs[CONFIG_TIMER_COUNT]={
    {
    .gpTimerUnit = CONFIG_GPTIMER_0、
    .subTimer = TimerCC26XX_timer32
    },
    }; 

    我希望这将有所帮助、

    此致、