RT,用了RF_PHY例程,将发送定时器弄成100(原来定时是1000也就是1秒),运行后没有定时发送,只发送了一次,打印了STA:1,就死了,CH573没问题
热门产品 :
CH32V317: 互联型青稞RISC-V MCU
RT,用了RF_PHY例程,将发送定时器弄成100(原来定时是1000也就是1秒),运行后没有定时发送,只发送了一次,打印了STA:1,就死了,CH573没问题
tmos 的时间单位是0.625ms:
160 才是100ms,1600才是1s
其次,我猜测,你可能调用的是这个 api
bStatus_t tmos_start_task( tmosTaskID taskID, tmosEvents event, tmosTimer time );
这个函数调用 只会执行一次. 如果需要不断的执行,需要再每次事件里面再次调用 本api
还是建议,如有问题,贴些图,贴些代码片段出来,能尽量的描述清楚.
void RF_Init( void ) { uint8 state; rfConfig_t rfConfig; taskID = TMOS_ProcessEventRegister( RF_ProcessEvent ); rfConfig.accessAddress = 0x71764129; // 禁止使用0x55555555以及0xAAAAAAAA ( 建议不超过24次位反转,且不超过连续的6个0或1 ) rfConfig.CRCInit = 0x555555; rfConfig.Channel = 8; rfConfig.LLEMode = LLE_MODE_AUTO; rfConfig.rfStatusCB = RF_2G4StatusCallBack; state = RF_Config( &rfConfig ); PRINT("rf 2.4g init: %x\n",state); // { // RX mode // state = RF_Rx( TX_DATA,10, 0xFF, 0xFF ); // PRINT("RX mode.state = %x\n",state); // } { // TX mode tmos_set_event( taskID , SBP_RF_PERIODIC_EVT ); } }
if ( events & SBP_RF_PERIODIC_EVT ) { RF_Shut( ); RF_Tx( TX_DATA,10, 0xFF, 0xFF ); tmos_start_task( taskID , SBP_RF_PERIODIC_EVT ,100 ); return events^SBP_RF_PERIODIC_EVT; }
使用的就是bStatus_t tmos_start_task( tmosTaskID taskID, tmosEvents event, tmosTimer time );,但是已经在回调里面再次使用CH571F就是不行,在CH573下就没问题