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 + -
显示快捷键?