gress01 发表于 2012-8-31 10:23

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

调用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
B .
ENDP
请问这里的硬件错误一般是什么错误,是什么原因导致的(改过堆栈大小,但结果还是一样)

gress01 发表于 2012-8-31 14:39

将启动代码中的处理语句做如下更改后,程序居然能够正常运行(输出结果正确)
HardFault_Handler\
PROC
EXPORT HardFault_Handler
BX LR ;直接返回,用于调试
;B .       ;原本的语句
ENDP
请教一下错误是什么原因导致的

gress01 发表于 2012-8-31 15:43

voidOSSemPend (OS_EVENT*pevent,
               INT32U   timeout,
               INT8U   *perr)
参数perr问题,如果定义INT8U *OSSemperr,调用一直引发硬件错误中断,但定义为INT8U OSSemperr就没问题了
页: [1]
查看完整版本: 请教一下关于uCOS中调用OSSemPend()导致硬件错误的问题