OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8399|回复: 3

我在ucos中测试邮箱,2个led切换时,是慢慢变亮,过了大概50个时钟才稳定到正常闪烁状态,什么原因哦?急盼指教

[复制链接]

3

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2012-8-31
在线时间
0 小时
发表于 2012-9-13 19:06:39 | 显示全部楼层 |阅读模式

#include "includes.h"

static  OS_STK  Start_task_stk[START_TASK_STK_SIZE]; 
static  OS_STK  task1_stk[TASK1_STK_SIZE];    
static  OS_STK  task2_stk[TASK2_STK_SIZE];   

void task1(void * p_arg);   
void task2(void * p_arg);
void Start_task(void * p_arg);

OS_EVENT *My_Box;           
INT8U  err;   
char buf[10]= {0} ;
char *ss ;
INT8U Times = 0;         
static void systick_init(void)            
{
 RCC_ClocksTypeDef  rcc_clocks;
 RCC_GetClocksFreq(&rcc_clocks);  
 SysTick_Config(rcc_clocks.HCLK_Frequency / OS_TICKS_PER_SEC);                                        
}

int main(void)
{  
       
 SystemInit();  
    OSInit();

 My_Box = OSMboxCreate((void*)0);                  

    OSTaskCreate(Start_task,(void *)0,&Start_task_stk[START_TASK_STK_SIZE - 1],START_TASK_PRIO);
 
 OSStart();
 return 0;
}

void Start_task(void *p_arg)
{
 BSP_Init();
 systick_init();          //必须在OSStart()后才能调用时钟节拍
 OSTaskCreate(task1,0,&task1_stk[TASK1_STK_SIZE - 1],TASK1_PRIO);
 OSTaskCreate(task2,0,&task2_stk[TASK2_STK_SIZE - 1],TASK2_PRIO);
 while(1)          
 {
  OSTaskSuspend(OS_PRIO_SELF);                                                       
 }         
}

static void task1(void *p_arg)
{
    p_arg=p_arg; 
 while(1)
 {
     OSSemPend(Sem,0,&err);
//  sprintf(buf,"%d",Times);                
  led_on(LED1);  
  led_off(LED2);
  OSMboxPost(My_Box,buf);
  Times ++; 
  if(Times >255)
  {
   Times = 0;
  }              
        OSTimeDlyHMSM (0, 0, 0, 500 ); 
 }    
}

static void task2(void *p_arg) 
{  
    p_arg = p_arg;
    while(1)
 { 
     ss=OSMboxPend(My_Box,10,&err);   
  led_on(LED2);  
     led_off(LED1);
  printf("任务切换次数 %s\r\n",ss);          
        OSTimeDlyHMSM (0, 0, 0, 500);    
 }
}

my_box0913.rar

1.76 MB, 下载次数: 135

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2233
金钱
2233
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-9-13 21:12:10 | 显示全部楼层
亮暗不对的话,感觉应该是亮的时间短,暗的时间长吧,、、
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-9-14 00:25:09 | 显示全部楼层
50个时钟怎么测试的啊?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
181
金钱
181
注册时间
2012-1-9
在线时间
24 小时
发表于 2012-9-16 10:56:07 | 显示全部楼层
没有下载楼主的程序,就看了一下你贴出来的程序,有几个地方不太清楚。一是看不出两个任务的优先级,二是task1是OSSEMPEND,task2是OSMBOXPEND,但是没有找到OSSEMPOST.三是建议把OSMBOXPOST放到任务的最后试试。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 19:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表