4257|1

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32跑UCOSII有问题,疯了 [复制链接]

代码如下,先说问题,为何程序烧尽去后,有时候任务能跑不起来,有时候却可以,但中断串口无论什么时候都可以被执行到,被折磨的不行





int main(void)
{
CPU_INT08U os_err;

//禁止CPU中断
CPU_IntDis();
SystemInit();//为了使能48M
//UCOS 初始化
OSInit(); /* Initialize "uC/OS-II, The Real-Time Kernel". */

//硬件平台初始化
NVIC_Configuration(); //中断优先级初始化
HW_Init(); //初始化串口1,2
Tim2Config(); //定时器初始化



//建立主任务, 优先级最高 建立这个任务另外一个用途是为了以后使用统计任务
os_err = OSTaskCreate((void (*) (void *)) App_TaskStart, //指向任务代码的指针
(void *) 0, //任务开始执行时,传递给任务的参数的指针
(OS_STK *) &App_TaskStartStk[APP_TASK_START_STK_SIZE - 1], //分配给任务的堆栈的栈顶指针 从顶向下递减
(INT8U) APP_TASK_START_PRIO); //分配给任务的优先级

//ucos的节拍计数器清0 节拍计数器是0-4294967295 对于节拍频率100hz时, 每隔497天就重新计数
OSTimeSet(0);
OSStart(); /* Start multitasking (i.e. give control to uC/OS-II). */
/* Start multitasking (i.e. give control to uC/OS-II). */

return (0);
}


static void App_TaskStart(void* p_arg)
{

(void) p_arg;
//初始化ucos时钟节拍
OS_CPU_SysTickInit(); /* Initialize the SysTick. 1MS产生一个滴答 */

//使能ucos 的统计任务
#if (OS_TASK_STAT_EN > 0)
//----统计任务初始化函数
OSStatInit(); /* Determine CPU capacity. */
#endif
//建立其他的任务
App_TaskCreate();

//启动心跳包
TimDelay2(0);
//启动24小时定时
TimDelay3(0);
while (1)
{
//1秒一次循环
//OSTimeDlyHMSM(0, 0,10, 0);

OSTaskSuspend(OS_PRIO_SELF);

}
}

此帖出自stm32/stm8论坛

最新回复

这问题不在这一堆代码里面~~~  详情 回复 发表于 2012-2-28 00:01
点赞 关注
 

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这问题不在这一堆代码里面~~~
此帖出自stm32/stm8论坛
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表