打印

请教一下关于uCOS中调用OSSemPend()导致硬件错误的问题

[复制链接]
1838|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gress01|  楼主 | 2012-8-31 10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
调用OSSemPend()时,执行完这一段后跳转(信号量有效),
  if (pevent->OSEventCnt > 0u) { /* If sem. is positive, resource available ... */
  pevent->OSEventCnt--; /* ... decrement semaphore only if positive. */
  OS_EXIT_CRITICAL();
  *perr = OS_ERR_NONE;
  return;
但跳转到了启动代码中这一段
HardFault_Handler\
  PROC
  EXPORT HardFault_Handler [WEAK]
  B .
  ENDP
请问这里的硬件错误一般是什么错误,是什么原因导致的(改过堆栈大小,但结果还是一样)

相关帖子

沙发
gress01|  楼主 | 2012-8-31 14:39 | 只看该作者
将启动代码中的处理语句做如下更改后,程序居然能够正常运行(输出结果正确)
HardFault_Handler\
  PROC
  EXPORT HardFault_Handler [WEAK]
  BX LR ;直接返回,用于调试
  ;B .         ;原本的语句
  ENDP
请教一下错误是什么原因导致的

使用特权

评论回复
板凳
gress01|  楼主 | 2012-8-31 15:43 | 只看该作者
void  OSSemPend (OS_EVENT  *pevent,
                 INT32U     timeout,
                 INT8U     *perr)
参数perr问题,如果定义INT8U *OSSemperr,调用一直引发硬件错误中断,但定义为INT8U OSSemperr[1]就没问题了

使用特权

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

本版积分规则

0

主题

8

帖子

0

粉丝