打印

how to: 将STM32 的 PB3 当作GPIO

[复制链接]
14520|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
armtft|  楼主 | 2008-8-1 16:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32F103 的 JTAG, 默认状态是Full SWJ。
The default state after reset is “000” (whole pins assigned for a full JTAG-DP connection).

PB3作为JDO,被JTAG占用。
在 TRACE Asynchronous mode,PB3还是TRACESWO。

若系统不需要JTAG,将PB3当作GPIO,需要如下设置:

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB , ENABLE);
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);

第一句中的 RCC_APB2Periph_AFIO 设置 AFIOEN(如果没有这一句,后面两句失效)。
如果一个模块的clock DISABLE,那么,寄存器的值也无法读写。

有了上面两句,就可以进一步对PB3进行操作了。
例如
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

  GPIOB->ODR = 0x08;
沙发
hkap| | 2008-8-1 16:59 | 只看该作者

不错哦,顶下

使用特权

评论回复
板凳
香水城| | 2008-8-1 17:29 | 只看该作者

哈哈,功能很强大!

请参考STM32技术参考手册的第7.3.4节(JTAG/SWD alternate function remapping),下面第一个语句可以释放PB3、PB4和PA15做普通I/O口,下面的第二个语句可以进一步释放PA13和PA14做普通I/O口;如果只需要使用PB3做普通I/O口,只使用第一个语句即可,第二个语句多余了。

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);

使用特权

评论回复
地板
armtft|  楼主 | 2008-8-1 18:08 | 只看该作者

连JTAG都用了,当然是用光了IO

所以,第二个语句并没有 多余。

呵呵

PB3作为JDO,被JTAG占用。
在 TRACE Asynchronous mode,PB3还是TRACESWO。


TRACESWO if async trace  is enabled      PB3


所以,连 SWJ 也 Disable

使用特权

评论回复
5
香水城| | 2008-8-1 18:18 | 只看该作者

哈哈,如果第二个语句不多余,第一个语句就是多余的啦

使用特权

评论回复
6
simon21ic| | 2008-8-1 23:15 | 只看该作者

区别

GPIO_Remap_SWJ_JTAGDisable 是使能SWJ,禁用JTAG
GPIO_Remap_SWJ_Disable 是全部禁用

使用特权

评论回复
7
Cheribat| | 2014-5-12 16:49 | 只看该作者
学习了

使用特权

评论回复
8
Q85038427| | 2014-6-5 15:19 | 只看该作者
学习了

使用特权

评论回复
9
wang3763| | 2014-7-31 10:28 | 只看该作者
刚刚试过了配置好了之后,要拔掉仿真器重新上电不然PB3一直是低电平。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

354

帖子

1

粉丝