📄 main.c
字号:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: 1.0
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
#include "stdlib.h"
uint8 num[10][8]={ //0~9十个数字,字体点阵为5X8
{
0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70
},
{
0x20,0xE0,0x20,0x20,0x20,0x20,0x20,0xF8
},
{
0x70,0x88,0x08,0x10,0x20,0x40,0x80,0xF8
},
{
0x70,0x88,0x08,0x30,0x08,0x08,0x88,0x70
},
{
0x08,0x18,0x28,0x48,0x88,0xFC,0x08,0x08
},
{
0xF8,0x80,0x80,0xF0,0x08,0x08,0x88,0x70
},
{
0x30,0x40,0x80,0xF0,0x88,0x88,0x88,0x70
},
{
0xF8,0x08,0x10,0x10,0x20,0x20,0x40,0x40
},
{
0x70,0x88,0x88,0x70,0x88,0x88,0x88,0x70
},
{
0x70,0x88,0x88,0x88,0x78,0x08,0x10,0x60
}};
uint8 hanzi[4][42]={ //0~9十个数字,字体点阵为5X8
{
/*------------------------------------------------------------------------------
; 源文件 / 文字: 周期
; 宽×高(像素) : 14×24
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xE4,
0x9E,0x24,0x2F,0xD2,0x2F,0x24,0x92,0x24,
0x27,0x9E,0x3F,0xA4,0x92,0x20,0x27,0x92,
0x2F,0x24,0x9E,0x29,0x2F,0xD2,0x4F,0x22,
0x92,0x40,0x24,0x52,0x80,0xE8,0x26,0x00,
0x00,0x00
},
{
/*------------------------------------------------------------------------------
; 源文件 / 文字: 点数
; 宽×高(像素) : 14×24
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x09,
0x50,0x07,0xC5,0x90,0x04,0x0F,0xDE,0x04,
0x03,0x24,0x3F,0x85,0xA4,0x20,0x89,0x54,
0x20,0x82,0x14,0x3F,0x8F,0xC8,0x00,0x04,
0x88,0x49,0x43,0x94,0xC9,0x2C,0x62,0x00,
0x00,0x00
},
{
/*------------------------------------------------------------------------------
; 源文件 / 文字: 清屏
; 宽×高(像素) : 14×24
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x07,
0xFC,0x5F,0xE4,0x04,0x02,0x07,0xFC,0x8F,
0xC5,0x08,0x42,0x04,0x90,0x3F,0xE5,0xFC,
0x48,0x44,0x90,0x4F,0xC7,0xFE,0xC8,0x44,
0x90,0x4F,0xC9,0x10,0x48,0x4A,0x10,0x00,
0x00,0x00
},
{
/*------------------------------------------------------------------------------
; 源文件 / 文字: 启动
; 宽×高(像素) : 14×24
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
0x10,0x3F,0xCF,0x90,0x20,0x40,0x10,0x20,
0x40,0x3E,0x3F,0xCF,0xD2,0x20,0x02,0x12,
0x3F,0xC5,0x12,0x30,0x48,0x92,0x50,0x4F,
0xA2,0x50,0x48,0x44,0x9F,0xC0,0x9C,0x00,
0x00,0x00
}};
uint8 Dispnum[4];
uint8 Dispnum1[4];
uint32 samp1[100];
#define LED1 1<<21
#define LED2 1<<22
#define LED3 1<<23
#define BEEP 1<<25
#define IO_KEY1 (1<<16)
#define IO_KEY2 (1<<17)
#define IO_KEY3 (1<<18)
#define IO_KEY4 (1<<19)
#define IO_KEYALL (IO_KEY1|IO_KEY2|IO_KEY3|IO_KEY4)
#define TaskStkLengh 512 // 定义用户任务0的堆栈长度
OS_STK TaskKeyStk[TaskStkLengh]; // 定义用户任务0的堆栈
OS_STK TaskDispStk[TaskStkLengh]; // 定义用户任务0的堆栈
OS_STK TaskDelaySampStk[TaskStkLengh]; // 定义用户任务0的堆栈
OS_STK TaskIntSampStk[TaskStkLengh]; // 定义用户任务0的堆栈
void TaskDisp(void *pdata); // Task0 任务0
void TaskKey(void *pdata); // Task0 任务0
void TaskDelaySamp(void *pdata); // Task0 任务0
void TaskIntSamp(void *pdata); // Task0 任务0
OS_EVENT *sem;
OS_EVENT *MyMbox;
OS_EVENT *ReMsgQeue;
void *MsgQeueTb[100];
/****************************************************************************
* 名称: main()
* 功能: 初始化uC/OS-II操作系统,建立第一个任务,然后启动系统。
****************************************************************************/
int main(void)
{
OSInit ();
GUI_Initialize(); // 初始化LCD
GUI_SetColor(1, 0);
//GUI_PutString(0,0, "Hello ZLG/GUI!"); // 设置前景色和背景色
OSTaskCreate (TaskKey,(void *)0, &TaskKeyStk[TaskStkLengh - 1], 8); //创建按键任务
OSStart ();
return 0;
}
uint8 keyin (void)
{
uint32 i;
uint32 io_dat;
uint8 key;
if((IO1PIN&IO_KEYALL)!=IO_KEYALL)
{
OSTimeDly(2);
io_dat=IO1PIN;
if((io_dat&IO_KEYALL)!=IO_KEYALL)
{
if((io_dat&IO_KEY1)==0) key=1;
if((io_dat&IO_KEY2)==0) key=2;
if((io_dat&IO_KEY3)==0) key=3;
if((io_dat&IO_KEY4)==0) key=4;
for(i=0;i<1000000000;i++)
{
if((IO1PIN&IO_KEYALL)==IO_KEYALL)
{
OSTimeDlyHMSM(0,0,0,20);
if((IO1PIN&IO_KEYALL)==IO_KEYALL)
break;
}
}
return(key);
}
}
return(5);
}
/*********************************************************************************************************
** TaskKey 任务Key 优先级为2
********************************************************************************************************/
void TaskKey (void *pdata)
{
uint8 key,jishu=0,i,weizhi=0,flag=0,dangqian=0,jishu1=0;
uint8 arr[4],err;
uint16 cond[2],zhouqi,dianshu;
pdata = pdata;
TargetInit ();
PINSEL2 = 0x00000000; //设置四个按键的口线为输入状态p1.16~p1.19
IO1DIR = 0x00000000;
PINSEL1 = 1<<28 ; //设置P0.30连接到AD0.3同时将其它的口设为GPIO口
IO0DIR = IO0DIR|LED1|LED2|LED3|BEEP; //设置IO0DIR|LED1|LED2|LED3|BEEP为输出口
IO0SET = LED1|LED2|LED3|BEEP; //初始化蜂鸣器不响,LED不亮
/* 进行ADC模块设置 */
ADCR =
(1 << 3) | // 选择通道0
((Fpclk / 1000000 - 1) << 8) | // CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
(0 << 16) | // BURST=0,软件控制转换操作
(0 << 17) | // CLKS=0, 使用11clock转换
(1 << 21) | // PDN=1,正常工作模式
(0 << 22) | // TEST1:0=00,正常工作模式
(1 << 24) |
(0 << 27); // 直接启动ADC转换时,此位无效
OSTimeDly(10);
OSTaskCreate (TaskDisp,(void *)0, &TaskDispStk[TaskStkLengh - 1], 10); // 创建显示任务
ReMsgQeue=OSQCreate(&MsgQeueTb[0],100); // 创建消息队列最多可以存放20条消息
sem=OSMutexCreate(4,&err);
OSTaskCreate (TaskIntSamp,(void *)0, &TaskIntSampStk[TaskStkLengh - 1], 15);
while (1)
{
key=keyin();
switch(dangqian+1)
{
case 1:
switch(key)
{
case 1:
arr[0]=1;
jishu++;if(jishu==10)jishu=0; //显示的数字
arr[1]=jishu;
OSQPost(ReMsgQeue,(void*)arr);
break;
case 2:
arr[0]=2;
OSQPost(ReMsgQeue,(void*)arr);
break;
case 3:
arr[0]=3;
flag=!flag;
arr[1]=flag;
OSQPost(ReMsgQeue,(void*)arr);
break;
case 4:
arr[0]=4;
dangqian++;
if(dangqian==4)dangqian=0;
OSQPost(ReMsgQeue,(void*)arr);
break;
default:
break;
}
break;
case 2:
switch(key)
{
case 1:
arr[0]=5;
jishu1++;if(jishu1==10)jishu1=0;
arr[1]=jishu1;
OSQPost(ReMsgQeue,(void*)arr);
break;
case 2:
arr[0]=6;
OSQPost(ReMsgQeue,(void*)arr);
break;
case 3:
arr[0]=7;
flag=!flag;
arr[1]=flag;
OSQPost(ReMsgQeue,(void*)arr);
break;
case 4:
arr[0]=4;
dangqian++;
if(dangqian==4)dangqian=0;
OSQPost(ReMsgQeue,(void*)arr);
break;
default:
break;
}
break;
case 3:
if(key==3)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -