你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

求助各位兄弟 USB HID程序 KEIL移植IAR 程序不能正常运行

[复制链接]
ljwcoke 提问时间:2018-7-23 21:11 /
测试芯片: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两个版本打包

USB HID问题.rar

下载

4.44 MB, 下载次数: 4, 下载积分: ST金币 -1

收藏 评论7 发布时间:2018-7-23 21:11

举报

7个回答
x5y4z3 回答时间:2018-7-24 09:18:00
程序是否访问到指定区域之外去了?!

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

ljwcoke 回答时间:2018-7-24 11:14:47
其实也不是return返回死掉 像是定时死 断点打在return下一句 也能到 然后就死掉了  前面有一个步骤是复位14脚 14脚正好是SWD的TCK 应该没有影响吧 KEIL都能过
  

部分代码

部分代码


x5y4z3 回答时间:2018-7-25 09:54:44
依楼主描述又有点像是 Stack Overflow 了!
楼主您要不看一下,于 Keil 上的那个 Staerup 内有配置如 Stack Size 的地方,先找个小程序如 Hello Word 等来试试?!
再不就是函数重入的问题!最后还有找个程序看一下那 Big Endian or Little Endian 等问题了,这些都是可以测出来的。
另本人才疏学浅,也没用过 IAR。若最后非此所述造成上请楼主及各位谅解。我是抱着纯回复来取积分的!哈~

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

ljwcoke 回答时间:2018-7-25 14:09:04
x5y4z3 发表于 2018-7-25 09:54
依楼主描述又有点像是 Stack Overflow 了!
楼主您要不看一下,于 Keil 上的那个 Staerup 内有配置如 Stack ...

首先谢谢你提供的思路,IAR的堆栈设置比KEIL里大 整个程序也没什么变量,没有很多数据,
论坛看了下KEIL  STM32 默认是小端模式和IAR一样的     这个问题真的我点思路都没有
ljwcoke 回答时间:2018-7-25 16:06:58
QQ截图20180725160545.png 这是什么意思呢??

ljwcoke 回答时间:2018-7-25 16:45:08
硬件错误在给 uint32_t 赋值??? 请问到底是怎么回事呢?
QQ截图20180725162925.png
QQ截图20180725162955.png
x5y4z3 回答时间:2018-7-26 11:59:18
本帖最后由 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蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版