工具/软件:TI-RTOS
您好!
我想将默认的1000US 时钟更改为100us。 这一个:
/*========================= 时钟配置======================== */
var Clock = xdc.useModule('ti.sysbios.knl.Clock');
var Mailbox = xdc.useModule('ti.sysbios.knl.Mailbox');
var HTTP = xdc.useModule('ti.ndk.config.Http');
//
*默认值取决于系列。 例如、Linux 系统通常仅
*支持最短时间为10000us、是10000 us 的倍数。
* TI 平台的默认值为1000us。
*/
Clock.tickPeriod = 100;
在我实例化时钟实例的每个任务中、我都更新了周期值(将它们乘以10)以获得正确的时序。 在我的应用中、我必须使用 custom_ndk_thread、以便将 clockParams.period 设置为1000:
//--------------------------------------------------------------
//自定义 NDK 线程
void custom_NDK_config_Global_stackThread (UArg0、UArgarg1)
{
System_printf ("自定义 NDK 堆栈线程正在运行");
system_flush();
内部 RC;
句柄 hCfg;
TI_SYSBIOS_KNL_Clock_Params 时钟参数;
/*创建 NDK 心跳*/
TI_SYSBIOS_KNL_Clock_Params_init (&clockParams);
clockParams.startFlag = true;
//默认值为100,但时钟周期减少
clockParams.period = NDK_tick_period;
TI_SYSBIOS_KNL_Clock_create (&llTimerTick、clockParams.period、&clockParams、NULL);
/*这必须是应用程序中做的第一件事!! *
RC = NC_SystemOpen (NC_Priority_LOW、NC_OPMODE_INTERRUPT);
如果(RC){
XDC_runtime_System_abort ("NC_SystemOpen Failed (%d)\n");
}
/*从头开始创建和构建系统配置。 *
hCfg = CfgNew();
如果(!hCfg){
xdc_runtime_System_printf ("无法创建配置\n");
转至 MAIN_EXIT
;}
{
extern void hook_StackInit();
/*调用用户定义的堆栈初始化挂钩*/
HOOK_StackInit (hCfg);
}
//等等
我的问题如下:
我正在使用 select()函数来检查套接字上是否有数据等待读取:
静态 int read_packet (int timeout)
{
if (timeout >0)
{
fd_set readfds;
struct timestimal tmv;
//初始化文件描述符 set
fd_zero (&readfds);
fd_set (socket_id、&readfds);
//初始化超时数据结构
tmV.tv_tv_sec = timeout;
tval.tv =
NULL、tv = 1、intu_usec、int2、int2 = NULL、int2、int2 = NULL;int
//如果超时,select 返回0;如果输入可用,则返回1;如果(
RetVal <=0)
返回 RetVal,则返回-1;
}
int total_bytes = 0,bytes_rcvd,packet_length;
memset (packet_buffer,0, sizeof (packet_buffer));
if ((bytes_rcvd = recv (socket_id、(packet_buffer+total_bytes)、RCVBUFSIZE、0))<= 0){
System_printf ("套接字错误:%d\n",fdError());System_flush();
返回-1;
}
但是 tV_sec 忽略更新后的时钟、它似乎可以处理设置值的第10个。 (当我设置10超时时、实际超时为1秒)如果我为 NDK 设置了正确的时序、为什么会忽略 sec 参数? 我有什么问题吗?
感谢你的答复