求助各位兄弟 USB HID程序 KEIL移植IAR 程序不能正常运行
测试芯片:stm32f103c8t6 和 stm32f103zet6这是一个KEIL的USB HID程序,源程序能正常运行
移植IAR后,程序不能正常运行,在线仿真发现程序卡死在usb_pwr.c 的 第71行 return USB_SUCCESS;
KEIL和IAR编译均0错误 0警告
usb_pwr.c部分程序如下:
RESULT PowerOn(void)
{
#ifndef STM32F10X_CL
u16 wRegVal;
/*** cable plugged-in ? ***/
USB_Cable_Config(ENABLE);
/*** CNTR_PWDN = 0 ***/
wRegVal = CNTR_FRES;
_SetCNTR(wRegVal);
/*** CNTR_FRES = 0 ***/
wInterrupt_Mask = 0;
_SetCNTR(wInterrupt_Mask);
/*** Clear pending interrupts ***/
_SetISTR(0);
/*** Set interrupt mask ***/
wInterrupt_Mask = CNTR_RESETM | CNTR_SUSPM | CNTR_WKUPM;
_SetCNTR(wInterrupt_Mask);
#endif /* STM32F10X_CL */
return USB_SUCCESS;//程序在这里卡死
}
枚举:typedef enum _RESULT
{
USB_SUCCESS = 0, /* Process successfully */
USB_ERROR,
USB_UNSUPPORT,
USB_NOT_READY /* The process has not been finished, endpoint will be
NAK to further request */
} RESULT;
附件是KEIL和IAR两个版本打包
程序是否访问到指定区域之外去了?!
其实也不是return返回死掉 像是定时死 断点打在return下一句 也能到 然后就死掉了前面有一个步骤是复位14脚 14脚正好是SWD的TCK 应该没有影响吧 KEIL都能过
依楼主描述又有点像是 Stack Overflow 了!
楼主您要不看一下,于 Keil 上的那个 Staerup 内有配置如 Stack Size 的地方,先找个小程序如 Hello Word 等来试试?!
再不就是函数重入的问题!最后还有找个程序看一下那 Big Endian or Little Endian 等问题了,这些都是可以测出来的。
另本人才疏学浅,也没用过 IAR。若最后非此所述造成上请楼主及各位谅解。我是抱着纯回复来取积分的!哈~
x5y4z3 发表于 2018-7-25 09:54
依楼主描述又有点像是 Stack Overflow 了!
楼主您要不看一下,于 Keil 上的那个 Staerup 内有配置如 Stack ...
首先谢谢你提供的思路,IAR的堆栈设置比KEIL里大 整个程序也没什么变量,没有很多数据,
论坛看了下KEILSTM32 默认是小端模式和IAR一样的:):):) 这个问题真的我点思路都没有 这是什么意思呢??
硬件错误在给 uint32_t 赋值??? 请问到底是怎么回事呢?
本帖最后由 x5y4z3 于 2018-7-27 10:23 编辑
ljwcoke 发表于 2018-7-25 14:09
首先谢谢你提供的思路,IAR的堆栈设置比KEIL里大 整个程序也没什么变量,没有很多数据,
论坛看了下KEIL...
嗯,个人于十年前仅用过 IAR 的 MSP-430 捣鼓 Porting 了一个 uC/OS II 在 MSP-430 上跑跑玩玩。
而 IAR 其他系列的 Compiler 确实没用过,大多 Keil 能使的都用 Keil 来 Compiler 了!
建议楼主将规模弄得小一点让 IAR 编译后跑跑看,无问题再将全部曼满给加上。无论如何都祝楼主好运了。 :)
编辑原因: 最后一行输入错字,是...无问题再将全部慢慢的给加上!
页:
[1]