打印

关于STM32的IO使用,请教香版

[复制链接]
3901|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liu_xf|  楼主 | 2009-5-19 13:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的MCU为STM32F103ZET6  144pin

用了FSMC挂NAND FLASH

部分接线图如下

FSMC的读写信号,还有数据为D2,D3,以及BAND2的片选分别为PD口的PD4、PD5、PD0、PD1、PD7。这里我想用PD6作为IO来使用点亮LED

我在软件里配制如下

//FSMC功能复用
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);  //使能GPIOD时钟
  
/*-- GPIO Configuration ------------------------------------------------------*/
/* CLE, ALE, D0->D3, NOE, NWE and NCE2  NAND pin configuration  */
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_14 | GPIO_Pin_15 |  
                                 GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 | 
                                 GPIO_Pin_7;           //选中管脚                        
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   //复用推挽输出

  GPIO_Init(GPIOD, &GPIO_InitStructure);  

//LED 配制
GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6;           //选中管脚                        
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;   //开漏输出

  GPIO_Init(GPIOD, &GPIO_InitStructure);  

------------
我按这样配制了,不能正常工作,当LED的引脚换到别的IO时可以正常,前面说过FSMC没有用到的引脚可以当作IO来用,不知道该用软件如何配制才能正常

请香版指点一下,谢谢。。。
沙发
liu_xf|  楼主 | 2009-5-19 13:25 | 只看该作者

补充一下

我配制FSMC 读写NAND FLASH能正常

如果加这段程序

//LED 配制
GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6;           //选中管脚                        
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;   //开漏输出

  GPIO_Init(GPIOD, &GPIO_InitStructure);  

整个程序就不能运行。。。。未知状态。

使用特权

评论回复
板凳
lut1lut| | 2009-5-19 13:39 | 只看该作者

怎么个不能运行

是LDC点不亮,还是NAND Flash读写不正确。

使用特权

评论回复
地板
浪淘沙| | 2009-5-19 13:59 | 只看该作者

PD6对应NAND模块的NWAIT输入引脚,不用复用功能时也不能当普

PD6对应NAND模块的NWAIT功能,当使能了FSMC的NAND功能后,从下表可以看出,NWAIT是输入功能;再依据管脚的输出配置图,输入功能始终是连接到外部引脚,也就是说把PD6配置为普通的输出模式时,不能断开它与FSMC模块的连接,所以当使能了FSMC以后,即使不用NWAIT功能,PD6不能再做普通的IO功能。

使用特权

评论回复
5
liu_xf|  楼主 | 2009-5-19 14:05 | 只看该作者

是LED常亮

本来是做的每秒闪一次

用别的IO可以正常

用PD6就不行。。

使用特权

评论回复
6
liu_xf|  楼主 | 2009-5-19 14:15 | 只看该作者

哦,原来是这样。。。。。手册看得不仔细

发现一个问题

当配制PD6为输出模式后,整个IO好像都乱了

LED一直亮

JTAG也用不了了。。。

程序下不了也擦不了

后来是从系统FLASH启动用内部的BOOT把片内擦除才恢复过来。

还好板上留了启动方式选择。。。

谢谢4楼的浪淘沙兄。。。

使用特权

评论回复
7
liu_xf|  楼主 | 2009-5-19 14:35 | 只看该作者

PD6是双向口

PD6是双向口,可以作为IO使用

可能是使能了FSMC后就不能当输出了吧。。。

使用特权

评论回复
8
浪淘沙| | 2009-5-19 14:50 | 只看该作者

对,使能了FSMC后PD6就不能当输出了

内部原理就是我在4楼贴的图和说明。

使用特权

评论回复
9
ijk| | 2009-5-19 14:52 | 只看该作者

PD6作为IO

  PD6作为IO,应该没有问题,记得我曾经试过。

使用特权

评论回复
10
浪淘沙| | 2009-5-19 14:58 | 只看该作者

9楼怎么做的?原理上好像讲不通,除非不同时用NAND接口

不同时用NAND接口时可以随意改变PD6,但使用NAND时PD6应该按照NWAIT的意义输出吧?

使用特权

评论回复
11
liu_xf|  楼主 | 2009-5-19 16:16 | 只看该作者

反正我是试了不行,

使能NAND

PD6当IO不行、

换别的IO行。。。。

使用特权

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

本版积分规则

68

主题

372

帖子

3

粉丝