OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4151|回复: 6

STM32F105 USB MSC 和 RCC_APB2Periph_GPIOB 冲突 附源码

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2015-10-16
在线时间
1 小时
发表于 2015-10-16 09:52:08 | 显示全部楼层 |阅读模式
5金钱
STM32F105一块板子,用了读写U盘,单独跑USB的程序,读写都没有问题,一旦加上
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
这句话,USB就不能正常读写了,会停在HOST_USR_INPUT状态。
[mw_shl_code=c,true]int main(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //这句加与不加都没问题 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //---就她不行,就是她,就是她,怎么都是她 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //这句加与不加都没问题 USBH_Init(&USB_OTG_FS_dev, &MSC_cb , &USR_Callbacks); while (1) { USBH_Process(); } } [/mw_shl_code]
只开了个个时钟,为什么会出现这种情况了,求指导

IAR_Project-加GPIOB时钟问题.rar

12.54 MB, 下载次数: 393

最佳答案

查看完整内容[请看2#楼]

结贴! 跟踪代码,原因找到,USB库中,有个GPIOB 9 的按键程序,因为开了时钟,故而启动了这个,去掉就好了。 我这文件名称(根据开发板各有不同):stm32f10c_eval.h [mw_shl_code=c,true]#define KEY_BUTTON_PIN GPIO_Pin_9 #define KEY_BUTTON_GPIO_PORT GPIOB #define KEY_BUTTON_GPIO_CLK RCC_APB2Periph_GPIOB #define KEY_BUTTON_EXTI_LINE EXTI_Line9 #d ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2015-10-16
在线时间
1 小时
 楼主| 发表于 2015-10-16 09:52:09 | 显示全部楼层
结贴!
跟踪代码,原因找到,USB库中,有个GPIOB 9 的按键程序,因为开了时钟,故而启动了这个,去掉就好了。
我这文件名称(根据开发板各有不同):stm32f10c_eval.h
[mw_shl_code=c,true]#define KEY_BUTTON_PIN GPIO_Pin_9 #define KEY_BUTTON_GPIO_PORT GPIOB #define KEY_BUTTON_GPIO_CLK RCC_APB2Periph_GPIOB #define KEY_BUTTON_EXTI_LINE EXTI_Line9 #define KEY_BUTTON_EXTI_PORT_SOURCE GPIO_PortSourceGPIOB #define KEY_BUTTON_EXTI_PIN_SOURCE GPIO_PinSource9 #define KEY_BUTTON_EXTI_IRQn EXTI9_5_IRQn[/mw_shl_code]

回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11553
金钱
11553
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-10-16 10:25:47 | 显示全部楼层
也遇到过类似问题,原因不明,似乎是芯片的bug,

后来用锁定寄存器解决。
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2015-10-16
在线时间
1 小时
 楼主| 发表于 2015-10-16 10:43:25 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
端口配置锁定寄存器(GPIOx_LCKR) :
我用的固件库试的,不知道您说的是否是这样操作的:

  我在USBH_Init()之前调用了这个函数:
  GPIO_PinLockConfig(GPIOB,GPIO_Pin_All);


不知道我的操作时候是和您的一样,结果还是没有好转,
同样停留在HOST_USR_INPUT状态,不知与您当时的操作一样呢?
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11553
金钱
11553
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-10-16 11:42:05 | 显示全部楼层
情况不太一样。

我的现象:B口MODE字被莫名修改,导致B口IO功能失常。
我的方法:先系统初始化,再USB初始化,再自己的初始化,然后立刻锁定。
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2015-10-16
在线时间
1 小时
 楼主| 发表于 2015-10-16 11:44:47 | 显示全部楼层
回复【4楼】xuande:
---------------------------------
嗯,是有点不一样,我倒是我锁定了也不顶事,有点颓废T_T
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-10-16 22:22:24 | 显示全部楼层
回复【6楼】风九:
---------------------------------
谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 21:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表