OpenEdv-开源电子网

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

请问正点哥,战舰STM32开发板的ucos例程是不是有问题

[复制链接]

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-5-17
在线时间
0 小时
发表于 2013-5-17 15:37:19 | 显示全部楼层 |阅读模式

//开始任务
void start_task(void *pdata)
{
    OS_CPU_SR cpu_sr=0;
 pdata = pdata;

 Uart5_SendB(0xEE);
 Uart5_SendB(0xE1);
 Uart5_SendB(0xE2);

 
   OS_ENTER_CRITICAL();   //进入临界区(无法被中断打断)   
  OSTaskCreate(led0_task,(void *)0,(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],LED0_TASK_PRIO);        
  OSTaskCreate(led1_task,(void *)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);        
 OSTaskSuspend(START_TASK_PRIO); //挂起起始任务.
 OS_EXIT_CRITICAL();    //退出临界区(可以被中断打断)
}


 //开始任务挂起了,为什么还一直重复运行


2分钟内串口收到的数据  EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2 EE E1 E2

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

使用道具 举报

96

主题

762

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1228
注册时间
2012-10-19
在线时间
15 小时
发表于 2013-5-17 15:50:10 | 显示全部楼层
不要在临界段内使用UCOS自带函数,会发生一些你不希望看见的东西!临界断的两个函数删除即OK
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-17 16:00:00 | 显示全部楼层
这个软件仿真下,就知道是什么问题了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-5-17
在线时间
0 小时
 楼主| 发表于 2013-5-20 09:36:47 | 显示全部楼层
回复【2楼】tian123chi:
不要在临界段内使用UCOS自带函数,会发生一些你不希望看见的东西!临界断的两个函数删除即OK
---------------------------------
临界断没有函数啊
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-5-17
在线时间
0 小时
 楼主| 发表于 2013-5-20 09:37:31 | 显示全部楼层
回复【3楼】正点原子:
这个软件仿真下,就知道是什么问题了。
---------------------------------
软件仿真是正常的不会出现这种现像 ,硬件仿真就会出现,这样不知可不可以判断是硬件问题,比如电源不稳之类的,我是用笔记本取电源的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-20 17:24:25 | 显示全部楼层
回复【5楼】hqjeff:
---------------------------------
你上传工程,我测试下。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

96

主题

762

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1228
注册时间
2012-10-19
在线时间
15 小时
发表于 2013-5-21 10:58:49 | 显示全部楼层
回复【4楼】hqjeff:
---------------------------------
临界段你挂起任务了,也建立任务了
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-5-17
在线时间
0 小时
 楼主| 发表于 2013-5-21 16:31:40 | 显示全部楼层
回复【7楼】tian123chi:
回复【4楼】hqjeff: --------------------------------- 临界段你挂起任务了,也建立任务了
---------------------------------例程就是这样的
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-5-17
在线时间
0 小时
 楼主| 发表于 2013-5-21 16:32:31 | 显示全部楼层
回复【6楼】正点原子:
回复【5楼】hqjeff: --------------------------------- 你上传工程,我测试下。
---------------------------------
怎么上传
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-5-17
在线时间
0 小时
 楼主| 发表于 2013-5-21 16:36:27 | 显示全部楼层
 整个工程在附件

实验53 UCOSII实验1-任务调度.zip

1.14 MB, 下载次数: 157

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-21 21:31:16 | 显示全部楼层
回复【10楼】hqjeff:
---------------------------------
我测试你这个没问题
我在:
void start_task(void *pdata)
{
    OS_CPU_SR cpu_sr=0;
pdata = pdata; 

Uart5_SendB(0xEE);
Uart5_SendB(0xE1);
Uart5_SendB(0xE2);


   OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断)    
  OSTaskCreate(led0_task,(void *)0,(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],LED0_TASK_PRIO);    
  OSTaskCreate(led1_task,(void *)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);      
OSTaskSuspend(START_TASK_PRIO); //挂起起始任务.
OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断)
}
里面设置断点,然后发现该函数只会执行一次,后续没有再执行。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-5-17
在线时间
0 小时
 楼主| 发表于 2013-5-22 16:50:42 | 显示全部楼层
回复【11楼】正点原子:
回复【10楼】hqjeff: --------------------------------- 我测试你这个没问题 我在: void start_task(void *pdata) {     OS_CPU_SR cpu_sr=0; pdata = pdata;  Uart5_SendB(0xEE); Uart5_SendB(0xE1); Uart5_SendB(0xE2);    OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断)       OSTaskCreate(led0_task,(void *)0,(OS_STK*)&LED0_TASK_STK[LED0_STK_SIZE-1],LED0_TASK_PRIO);       OSTaskCreate(led1_task,(void *)0,(OS_STK*)&LED1_TASK_STK
......
---------------------------------
我的板上会,不定时的,可能要等个30分钟才会出现也可能
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-22 21:02:12 | 显示全部楼层
.......
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-5-22 21:02:43 | 显示全部楼层
你是开发板重启了吧...
电脑插入USB设备,或者usb设备拔出,导致STM32复位了...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-5-17
在线时间
0 小时
 楼主| 发表于 2013-5-23 09:34:52 | 显示全部楼层
回复【14楼】正点原子:
---------------------------回复【14楼】正点原子:
你是开发板重启了吧... 电脑插入USB设备,或者usb设备拔出,导致STM32复位了...
---------------------------------
能不能讲解清除,  我是用电脑USB取电的,是拔插其它USB口引起的吧,不过也不是,因为有出现连续多次复位,但我没拔插其它USB口

我找个外接电源试下,看看是不是USB取电引起的
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-5-17
在线时间
0 小时
 楼主| 发表于 2013-6-3 13:01:31 | 显示全部楼层
提出问题后,在这边做下总结吧,

开始以为是代码问题,所以我自已移了个官网的UCOS,发现重启现像好了一些,但有时还会出现,
所以开始排查是否硬件问题,针对复位脚,发现USB转232烧写代码的电路的对复位脚操作,所以就不用这个USB取电,
后来经过一个星期的没在出现开发板重启,现判断应该是USB有时有某些信号引起复位脚信号改变使开发板重启,我接笔记本和台式机都是一样的,建议不要用USB取电,烧写完就拔掉USB以免受干扰
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 01:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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