main.c

来自「在smartarmm2200上显示波形实现暂停退出的功能」· C语言 代码 · 共 180 行 · 第 1/2 页

C
180
字号
	  IO2SET=0xf0000000; 
	  IO2CLR=0x20000000;        //点亮
TargetInit();   
    
     
while (1)
{   key = ZLG7290GetKey();
     
     if(key&0x00FF)          // 如果有按键,则判断是否要发送按下消息
     {   if(s_key_sta==0)    // 按键单击                    
         {   /* 设置消息中的按键值。d7位表示按键状态,按下为1,
                   放开为0;d3--d0为相应的按键值。 */
                s_key_in = (key-1)&0x000F;      // 原按键值为1-16,所以要减1变为0-15
             s_key_in |= 0x80;
             OSMboxPost(KeyMbox, (void *)&s_key_in);
             
             s_key_sta = 1;  
         }
         else                // 按键连击
         {   /* 倘若是(摸拟)鼠标移动按键连击,则需要发送按键按下消息 */
             switch(key&0xFF)                 
             {   case 9:
                 case 10:
                 case 11:
                 case 14:
                     s_key_in = (key-1)&0x000F;
                     s_key_in |= 0x80;
                     OSMboxPost(KeyMbox, (void *)&s_key_in);
                     break;
             
                 default:
                     break;
             }
         }               
     }
     else    // 如果是没有按键,则判断是否要发送放开消息        
     {   if(s_key_sta != 0)  // 按键放开,则发送按键放开消息
         {   s_key_in &= 0x0F;
             OSMboxPost(KeyMbox, (void *)&s_key_in);                          
         } 
         
         s_key_sta = 0;        
     } 

     OSTimeDly(1);   
}
}
/*********************************************************************************************************
**                                任务1
**  定时刷新LCD
*******************************************************************************************************/ 
void Task1 (void *pdata)
{
	pdata=pdata;
    while(1)
    {
		OSSemPend(Lcd_Rw_Sem,0,&err);//由ADC完成中断服务程序提供该信号量置位,这里用定时器中断模拟
		IO2CLR=0x10000000;           //点亮
	    InvalidateRect(hMainWnd1,&rcWave,FALSE); //刷新函数

	}
	
}
/*********************************************************************************************************
**                                任务2
**  心电信号发生器
*******************************************************************************************************/ 
void Task2 (void *pdata)
{uint16 i;
 fp32 temp;            //定义32位浮点数

	while(1)
	{
	  for(i=0;i<=999;i++)
	  {
	  	  	OSSemPend(Adc_Rw_Sem,0,&err);
	  	  	IO2SET=0xf0000000;        //熄灭
	  	  	temp=256-(ecg[i]+1)*120;  //转换为坐标
	  	  	x=(int)temp;	  	
	
            OSTimeDly(2);//实现键盘响应!!!
	  	  	  
	  	   OSSemPost(Lcd_Rw_Sem);
	  }
	}
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?