打印

STM32程序跑飞

[复制链接]
5602|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jxmzzr|  楼主 | 2013-7-11 19:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
是通过boot指定调到地址
#define NVIC_VectTab_FLASH           ((u32)0x08008000)

int  main (void)
{


    OSInit();
    OSTaskCreate(TaskStart, (void*)0 , &TaskStartStk[TSK_STK_SIZE-1], 20);
//stm32中断向量表的默认位置是0x8008000,如果要改到0x8008000处运行,需要设置中断向量表的位置NVIC_SetVectorTableNVIC_VectTab_FLASH, 0x0000);
   OSStart();                                             
}
但是问题出现了,当程序运行到OSStart()内部的OSStartHighRdy()语句时跑飞了到到FLASH的0x08008136,是hard fault处。
可能自己还没有吃透uCOS,请玩过uCOS的朋友指点一下,大家都可以交流交流。谢谢大家了.
沙发
cjhk| | 2013-7-11 20:52 | 只看该作者
帮你顶一个   谢谢了   楼主   很不错

使用特权

评论回复
板凳
lin34337151| | 2013-7-11 22:53 | 只看该作者
应该不是ucos的问题,跳转之后RCC时钟需要另外配置,有些时钟需要复位,你把时钟另外调用一下应该没问题,还有就是ROM设置的时候有没设置对

使用特权

评论回复
地板
sjnh| | 2013-7-12 08:43 | 只看该作者
改了中断向量地址,中断程序的定位都要做相应的改动,需要你在编译器中配置程序放置的地址

使用特权

评论回复
5
拿起书本| | 2013-7-12 10:29 | 只看该作者
没用过uCos,只用其他的几个系统,教训表明一般跑飞是初始化阶段的寄存器设置不对
例如
1.对于一些写保护的寄存器没有关掉写保护
2.任务中清掉了SYSTICK导致操作系统不工作了
3.不经意的重复创建任务或者RAM没给够导致系统崩溃了

使用特权

评论回复
6
outstanding| | 2013-7-12 14:01 | 只看该作者
是否在MDK软件中修改成对应的地址区域

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

460

主题

2188

帖子

12

粉丝