TI论坛
直播中

仲娜娜

8年用户 184经验值
私信 关注
[问答]

请问CC2540中有没有delay这种指令可以用?

请问在CC2540中,有没有delay这种指令可以用?
我有看到是用osal_start_timerEx
osal_start_timerEx( SimpleOsal_TaskID, SBP_START_DEVICE_EVT, 2000 );
但我中间没有定义事件(SBP_START_DEVICE_EVT),只想先停2秒再往下做事

以下用uart来说明,先送出ABC,2秒后再送出DEF
SerialPrintString("ABC");
delay 2 sec -->有没有这个指令???
SerialPrintString("DEF");

回帖(3)

仲娜娜

2019-10-9 10:12:58
谢谢TY的回应,
以下这样写,我发现在UART都没有传东西出来
然后我用LCD只有看到EVENT1之后,就没有看到EVENT2

首先我在SipleOsal.h定义
#define EVENT1    0x0005
#define EVENT2    0x0006
 
接下来在启动装置内的SBP_START_DEVICE_EVT写EVENT1与EVENT2
  if ( events & SBP_START_DEVICE_EVT )
  [
    if ( events & EVENT1)
     [
       SerialPrintString("ABC");
       osal_start_timerEx( SimpleOsal_TaskID, EVENT2, 2000 );
       HalLcdWriteString( "EVENT1", HAL_LCD_LINE_3 );
       return (events ^ EVENT1);
     ]
 
    if ( events & EVENT2)
     [
       SerialPrintString("DEF");
       HalLcdWriteString( "EVENT2", HAL_LCD_LINE_4 );
       return (events ^ EVENT2);
     ]
          //8s之后再次启动
        osal_start_timerEx( SimpleOsal_TaskID, EVENT2, 8000 );
    return ( events ^ SBP_START_DEVICE_EVT );
  ]
举报

凌云志

2019-10-9 10:24:43
引用: 60user56 发表于 2019-10-9 11:23
谢谢TY的回应,
以下这样写,我发现在UART都没有传东西出来
然后我用LCD只有看到EVENT1之后,就没有看到EVENT2

事件不能定义成0x5,0x6,要定义为0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080.....
你0x05  是00000101,6是00000110,有两个bit。看来不了解OSAL原理的还是挺多的。
                                                                          
举报

李子月

2019-10-9 10:43:01
短的毫秒延时可以用nop指令。                                                                          
提供德州仪器蓝牙和射频cc2540,cc2541,cc26系列,cc13系列脱机烧录工具。



 
举报

更多回帖

发帖
×
20
完善资料,
赚取积分