OpenEdv-开源电子网

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

uc/os II 移植出现问题

[复制链接]

15

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
327
金钱
327
注册时间
2014-4-18
在线时间
68 小时
发表于 2014-4-29 12:02:15 | 显示全部楼层 |阅读模式
 直接运行例程 中断全开后能进入AppTaskStart(因为对应的灯可以亮 灯初始化在AppTaskStart中) 但是一到任务切换函数  硬件错误卡死

实验一:
OSInit();
 LED_Init();
  SysTick_Init();

OSTaskCreateExt(AppTaskStart,(void *)0,(OS_STK *)&AppTaskStartStk[APP_TASK_START_STK_SIZE-1],APP_TASK_START_PRIO,APP_TASK_START_PRIO,(OS_STK *)&AppTaskStartStk[0],APP_TASK_START_STK_SIZE,(void *)0,OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);
OSTimeDlyHMSM(0,0,10,0);
 
这样写而且 AppTaskStart不加任务切换函数 能正常运行AppTaskStart 而且时钟中断正常 加上后硬件错误卡死;
实验二:

OSInit();
 LED_Init();
  SysTick_Init();
OSTimeDlyHMSM(0,0,10,0);
能进入ostaskidle() 而且时钟中断正常;OSIntNesting正常增加 因为主程序没真正跑 OSIdleCtr增加 

目前看只要在AppTaskStart中加入任务切换就会硬件卡死  但从上面两个例子看ostaskidle()和AppTaskStart()却可以正常切换
请问各位可能是什么原因 




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

使用道具 举报

15

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
327
金钱
327
注册时间
2014-4-18
在线时间
68 小时
 楼主| 发表于 2014-4-29 13:34:26 | 显示全部楼层
貌似是低优先级能转到高优先级运行 但是高优先级任务切换不到低优先级
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165225
金钱
165225
注册时间
2010-12-1
在线时间
2107 小时
发表于 2014-4-29 15:53:17 | 显示全部楼层
帮顶
回复 支持 反对

使用道具 举报

15

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
327
金钱
327
注册时间
2014-4-18
在线时间
68 小时
 楼主| 发表于 2014-4-30 12:56:39 | 显示全部楼层
问题是任务栈被清 函数返回0x0000000进入硬件错误中断 
 OS_TaskStkClr(pbos, stk_size, opt); 

不使能任务栈清理可以解决 但是这样会有什么问题吗
还有其他方法吗 比如修改堆栈指针
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-1 12:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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