历史上的今天
今天是:2024年10月12日(星期六)
2020年10月12日 | ucos-ii示例6:消息量集测试
2020-10-12 来源:eefocus
环境:
主机:WIN8
开发环境:MDK4.72
ucgui版本:3.90
ucos版本:ucos-ii
mcu: stm32f103VE
说明:
本示例中task2设置信号量集的最后2位为1,task1读取最后2位,发现是1则显示
源码:
#define TASK_STK_SIZE 512
/*********************************************************************
* 静态函数
**********************************************************************/
static void task_start(void *pdata);
static void task1(void *pdata);
static void task2(void *pdata);
/*********************************************************************
* 静态变量
**********************************************************************/
/*********************************************************************
* 任务堆栈空间
**********************************************************************/
static OS_STK Task_Start_Stk[TASK_STK_SIZE];
static OS_STK Task1_Stk[TASK_STK_SIZE];
static OS_STK Task2_Stk[TASK_STK_SIZE];
/*********************************************************************
* 信号量集
**********************************************************************/
OS_FLAG_GRP *Semaphore;
/*********************************************************************
* 消息队列数组
**********************************************************************/
void *Msg_Group[10];
char Msg_Arr[10][30];
uint8_t Index_Msg_Arr = 0;
/*********************************************************************
* 函数
**********************************************************************/
int main(void)
{
//初始化内核
OSInit();
//创建任务
OSTaskCreate(task_start,(void *)0,Task_Start_Stk + TASK_STK_SIZE - 1,10);
//启动任务
OSStart();
}
/*********************************************************************
* 任务函数
**********************************************************************/
static void task_start(void *pdata)
{
uint8_t err = 0;
//载入世界
world_load();
//设置背景色
GUI_SetBkColor(0xb07c17);
GUI_Clear();
GUI_SetColor(GUI_BLACK);
//信号量集初始化为0
Semaphore = OSFlagCreate((OS_FLAGS)0,&err);
//新建任务
OSTaskCreate(task1,(void *)0,Task1_Stk + TASK_STK_SIZE - 1,11);
OSTaskCreate(task2,(void *)0,Task2_Stk + TASK_STK_SIZE - 1,12);
while(1)
{
OSTimeDlyHMSM(0,0,3,0);
}
}
static void task1(void *pdata)
{
char str[30] = {0};
uint8_t err = 0;
while(1)
{
//等待信号集满足条件
OSFlagPend(Semaphore,(OS_FLAGS)0x3,OS_FLAG_WAIT_SET_ALL | OS_FLAG_CONSUME,0,&err);
//显示
sprintf(str,"task1 time:%ds",OSTimeGet());
GUI_DispStringHCenterAt(str, 120, 5);
WM_Exec();
OSTimeDlyHMSM(0,0,1,0);
}
}
static void task2(void *pdata)
{
char str[30] = {0};
uint8_t err = 0;
while(1)
{
//将末两位置1
OSFlagPost(Semaphore,(OS_FLAGS)0x3,OS_FLAG_SET,&err);
//将最后1位置1
//OSFlagPost(Semaphore,(OS_FLAGS)0x1,OS_FLAG_SET,&err);
//显示
sprintf(str,"task2 time:%ds",OSTimeGet());
GUI_DispStringHCenterAt(str, 120, 20);
WM_Exec();
OSTimeDlyHMSM(0,0,3,0);
}
}
上一篇:ucos-ii示例4:邮箱测试
下一篇:ucos-ii示例1:新建任务
史海拾趣
|
随着奥运会的召开,第三代移动通信系统离我们的生活越来越近了,中国移动TD-SCDMA的试商用,使我们国人终于有机会在国内就可以享受3G给我们带来的基于高速率数据传输的各种服务;相信不远的将来,另外两种技术(WCDMA与CDMA2000)也将会走进我们的生 ...… 查看全部问答> |
|
今天实现了wince作为U盘的功能,不过插上后PC设别到了U盘,不过有一个问题是进不了U盘,提示需要格式化。 如果格式化了,那么我flash里面的程序不就没了,如何解决? 不知道是否跟flash的格式有关系。… 查看全部问答> |
|
板子只有一个串口,没有网络口。 开发机Target Server用串口和板子联系。下载程序等都没问题。 问题是devs一下,唯一的一个串口不见了。就算下载程序后关掉Target Server,板子上的串口也无法用在应用程序上。 各位大侠遇到过此类问题没,给点建 ...… 查看全部问答> |
|
“小马哥”改装触摸屏走红引“技术男”叫板 本报讯 (记者申志民)花费190元,旧笔记本电脑可改装成PAD……近日,北京邮电大学大一学生马钧轶成功将笔记本改成触屏笔记本后,网友纷纷热赞(本报曾报道)。“小马哥”走红 ...… 查看全部问答> |
|
上个月去参加北京的艾睿合众达-TI MCU技术研讨会,会上说待会后将按提交的反馈表给参会者寄送开发板,不过,到现在我都没收到,不知道有没有朋友同样参加北京那场会收到开发板的?感觉艾睿这种公司不能骗人啊?… 查看全部问答> |
|
{初始化设置; while(1) { if(Power) { GetData();//采集数据 if(ucIfbrk==0) //采集无错数据转换 { DataChg(); DataSend(); //串口发送数据 UART0_Send_Byte(\'#\'); delay_ms(1000); } els ...… 查看全部问答> |
|
zigbee用来定位是要设置成什么模式,api? rssi信号是从串口得来,还是某一管教? 得到的rssi信号是和中心的rssi吗?如果是和其它终端的rssi?如何识别是哪个终端的呢?… 查看全部问答> |




