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

求助各位兄弟 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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版