7542|7

12

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

STM32F103RB, USB 调不通,请教。 [复制链接]

我买的 STM32F103RB 开发板,硬件好使,干别的都可以的。
主时钟 8M,USB D- 用跳线通过1.5k 电阻连 3.3V。
下载 STM 的 U转串 DEMO。

主程序部分:
  Set_System();
  Set_USBClock();
  USB_Interrupts_Config();
  USB_Init();
到 USB_Interrupts_Config() 执行中,就进 HardFault_Hander 了。

跟踪进去,是在这:
  NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN_RX0_IRQChannel;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
这个 USB 中断一设定就死了。

在 IAR 里面修改了 LCF:
ROM 和 RAM 的大小和位置都是对的。
STACK SIZE 0x800, HEAP SIZE 0x400

前辈帮忙看看,哪块没想到的?
此帖出自stm32/stm8论坛

最新回复

这个不是进中断.NVIC是设置中断优先级.USB首发数据才能触发中断.嗯..我是这么想的  详情 回复 发表于 2011-4-25 14:51
点赞 关注
 

回复
举报

2131

帖子

0

TA的资源

至上芯片

沙发
 

回复 楼主 sujingmeng 的帖子

怎么会一设定就死呢,发生异常了吗?
此帖出自stm32/stm8论坛
 
个人签名处处留心皆学问!
 

回复

1059

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
是设置NVIC死还是中断进去了死?
此帖出自stm32/stm8论坛
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 板凳 astwyg 的帖子

是这句:
NVIC_Init(&NVIC_InitStructure);
单步运行到这,就下不去了。
肯定是进中断了。
我去找找这个中断在哪定义的。
此帖出自stm32/stm8论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 4楼 sujingmeng 的帖子

问题比较奇怪,我再描述一下:
主程序:main.c
  Set_System();
  Set_USBClock();
  USB_Interrupts_Config();
  USB_Init();

其中,有时候死在 USB_Interrupts_Config(); 有时候死在  USB_Init();
死在  USB_Interrupts_Config() 的时候,是在设定完中断之后死。
死在 USB_Init(); 的时候,是在这里:
/*******************************************************************************
* Function Name  : Virtual_Com_Port_init.
* Description    : Virtual COM Port Mouse init routine.
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
void Virtual_Com_Port_init(void)
{

  pInformation->Current_Configuration = 0;
  /* Connect the device */
  PowerOn();
  /* USB interrupts initialization */
  /* clear pending interrupts */
  _SetISTR(0);
  wInterrupt_Mask = IMR_MSK;
  /* set interrupts mask */
  _SetCNTR(wInterrupt_Mask);
  pInformation->Current_Feature = Virtual_Com_Port_ConfigDescriptor[7];
  /* configure the USART 1 to the default settings */
  USART_Config_Default();
  /* Wait until device is configured */
  while (pInformation->Current_Configuration == 0)
  {
    NOP_Process();
  }
  bDeviceState = CONFIGURED;
}

这个 while   while (pInformation->Current_Configuration == 0)
会一直出不来。应该是 USB 设备总不能被配置完毕。
我的这块开发板并不是用 GPIO 设定 D- 的那个 1.5k 电阻,而使用跳线。

也就是说,我感觉有两种可能:
一种是,我跳线没插上,于是这个 while 一直在等着配置-- 肯定等不到嘛。
另一种是,我跳线插上了,但是 PC 的配置过程有数据到 MCU 里面,这时候一打开中断就不知道怎么处理了,于是硬件错误。

另外,请问这个 USB 涉及到的中断在哪定义啊?
是这个函数吗  void USB_Istr(void)
为什么我在这里面没法设断点啊?
是不是根本就没 link 进去?
会不会是我的 USB 中断服务程序没链接进去?
此帖出自stm32/stm8论坛
 
 
 

回复

1059

帖子

0

TA的资源

纯净的硅(高级)

6
 

回复 4楼 sujingmeng 的帖子

这个不是进中断.NVIC是设置中断优先级.USB首发数据才能触发中断.嗯..我是这么想的
此帖出自stm32/stm8论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 6楼 astwyg 的帖子

闂傚倷绀侀幖顐ゆ偖椤愶箑纾块柛鎰嚋閼板潡鏌涘☉娆愮稇閻庢艾顦伴妵鍕箳閸℃ぞ澹曠紓鍌欑劍椤ㄥ棝鏁冮姀鐘垫殾婵°倕鎳庢儫闂佸疇妗ㄧ粈浣规叏閵堝鐓熼柣姗€浜跺鐑芥煕閺傝法绠绘い銏$懇楠炲鏁傞懞銉︾彨闁诲骸鍘滈崑鎾绘煕閹邦厼鍔ゆ繛鍫嫹闂傚倷娴囬惃顐﹀幢閳轰焦顔勭紓鍌氬€哥粙鍕箯閿燂拷闂傚倷鑳堕幊鎾绘偤閵娾晜鍋嬮柣鎰惈閻掑灚銇勯幒鎴敾閻庢熬鎷�濠电姷鏁搁崑娑⑺囬銏犵鐎光偓閸曨偉鍩為梺璺ㄥ櫐閹凤拷
此帖出自stm32/stm8论坛
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(中级)

8
 

回复 7楼 sujingmeng 的帖子

闂傚倷绀侀幖顐ゆ偖椤愶箑纾块柛鎰嚋閼板潡鏌涘☉娆愮稇閻庢艾顦伴妵鍕箳閸℃ぞ澹曠紓鍌欑劍椤ㄥ棝鏁冮姀鐘垫殾婵°倕鎳庢儫闂佸疇妗ㄧ粈浣规叏閵堝鐓熼柣姗€浜跺鐑芥煕閺傝法绠绘い銏$懇楠炲鏁傞懞銉︾彨闁诲骸鍘滈崑鎾绘煕閹邦厼鍔ゆ繛鍫嫹闂傚倷娴囬惃顐﹀幢閳轰焦顔勭紓鍌氬€哥粙鍕箯閿燂拷闂傚倷鑳堕幊鎾绘偤閵娾晜鍋嬮柣鎰惈閻掑灚銇勯幒鎴敾閻庢熬鎷�濠电姷鏁搁崑娑⑺囬銏犵鐎光偓閸曨偉鍩為梺璺ㄥ櫐閹凤拷
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表