在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 2485|回复: 0

[原创] 多个PRD的使用

[复制链接]
发表于 2008-7-16 19:47:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 cjsb37 于 2013-4-29 09:04 编辑

目前我在使用多个PRD来建立LED的闪灯方式,我的程序请见下,我有如下疑问:
请问我怎样把led这个变量通过PRD0控制的control_prd函数的参数k传递给PRD1控制的led_on函数中的参数i(或者PRD2控制的led_off函数中的参数j)。我所用的PRD0.fxnobj.arg0=led这种方式是否有效?请高手指教下。十分谢谢!
  int TotalEvents =0, NumEvents=0, EventCount=0,led=0;
. something;
if(TotalEvents)
  {
   NumEvents = Function(pSensorContext[channelCount], EvocBuffer, ((TotalEvents > NUM_EVENTS) ? NUM_EVENTS: TotalEvents));
   
   for(EventCount=0; EventCount < NumEvents; EventCount++)
   {   
       ////
       PRD0.fxnobj.arg0=led;
       PRD_start(&ampRD0);
       PRD_stop(&ampRD0);
       ////  
    switch(EvocBuffer[EventCount].eventDescription.type)
    {
    case TRIPWIRE_EVENT:
            led=1;
     printf(something      );
      
     ////
     PRD0.fxnobj.arg0=led;
     PRD_start(&ampRD0);
           PRD_stop(&PRD0);
     ////
     
     break;


//对应的PRD函数所控制的函数:
extern PRD_Obj PRD1;
extern PRD_Obj PRD2;
Void control_prd(Int k)  //control_prd对应PRD0,10ms,设置为one-shot
{
   DM642_GPIO_Init();
   PRD1.fxnobj.arg0=k;
   PRD_start(&PRD1);    //PRD1调用led_on函数,控制灯开,设置为one-shot,50ms
   PRD2.fxnobj.arg0=k;
   PRD_start(&PRD2);    //PRD2调用led_off函数,控制灯灭,设置为one-shot,150ms
}
   
Void led_on(Int i)      
{
   switch(i)
   {
   case 0:
       DM642_GPIO_SetValue(0, 1);
       break;
   case 1:  
       DM642_GPIO_SetValue(1, 1);
       break;
   case 2:  
       DM642_GPIO_SetValue(2, 1);
       break;
   case 3:  
       DM642_GPIO_SetValue(3, 1);
       break;
   case 4:  
       DM642_GPIO_SetValue(4, 1);
       break;
   case 5:  
       DM642_GPIO_SetValue(5, 1);
       break;
   case 6:  
       DM642_GPIO_SetValue(6, 1);
       break;
   case 7:  
       DM642_GPIO_SetValue(7, 1);
       break;
   default:
       break;
   }
}

Void led_off(Int j)
{
   switch(j)
   {
   case 0:
       DM642_GPIO_SetValue(0, 0);
       break;
   case 1:  
       DM642_GPIO_SetValue(1, 0);
       break;
   case 2:  
       DM642_GPIO_SetValue(2, 0);
       break;
   case 3:  
       DM642_GPIO_SetValue(3, 0);
       break;
   case 4:  
       DM642_GPIO_SetValue(4, 0);
       break;
   case 5:  
       DM642_GPIO_SetValue(5, 0);
       break;
   case 6:  
       DM642_GPIO_SetValue(6, 0);
       break;
   case 7:  
       DM642_GPIO_SetValue(7, 0);
       break;
   default:
       break;
   }
}







您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-14 15:22 , Processed in 0.015285 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表