打印

提一个我遇到的稀奇现象

[复制链接]
2270|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
songbangyan|  楼主 | 2010-5-14 11:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近使用STM32F103ZE做项目,然后由于需要使用FSMC外扩了一个SRAM,使用了SRAM3.由于使用的是8位的SRAM,于是在启动文件stm32f10x_vector.s中修改了相应的配置,并且把GPIOE中不使用的管脚定义为复位值。然后在原来的FSMC的数据线管脚上接了两个LED。现在的测试发现,在一些软件延时中接在GPIOE上的LED总是会出现一些异常,也就是莫名其妙的亮起,然后熄灭。一闪一闪的,知道延时结束。不清楚是怎么回事,不知道有没有人遇到过呢?
沙发
IJK| | 2010-5-14 14:09 | 只看该作者
“在启动文件stm32f10x_vector.s中修改了相应的配置”
这个做法挺奇怪,不应该在这里进行配置。

可以参考:
1.配置GPIO为GPIO_Mode_Out_PP,只是示例
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOE, &GPIO_InitStructure);

2.配置FSMC
  FSMC_Bank1->BTCR[4] = FSMC_DataAddressMux_Disable | FSMC_MemoryType_SRAM |
                        FSMC_MemoryDataWidth_8b | FSMC_WriteOperation_Enable |
                        FSMC_ExtendedMode_Disable | FSMC_AsyncWait_Disable;

使用特权

评论回复
板凳
songbangyan|  楼主 | 2010-5-14 14:34 | 只看该作者
2# IJK ; Enable FSMC clock

         LDR R0,= 0x00000114

         LDR R1,= 0x40021014

         STR R0,[R1]
                 

; Enable GPIOD, GPIOE, GPIOF and GPIOG clocks

         LDR R0,= 0x000001E0

         LDR R1,= 0x40021018

         STR R0,[R1]
   

; SRAM Data lines, NOE and NWE configuration
; SRAM Address lines configuration
; NOE and NWE configuration   
; NE3 configuration
; NBL0, NBL1 configuration


         LDR R0,= 0x44BB44BB

         LDR R1,= 0x40011400

         STR R0,[R1]




         LDR R0,= 0xBBBBB444

         LDR R1,= 0x40011404

         STR R0,[R1]




         LDR R0,= 0xB44444BB

         LDR R1,= 0x40011800

         STR R0,[R1]




         LDR R0,= 0x44444BBB

         LDR R1,= 0x40011804

         STR R0,[R1]




         LDR R0,= 0x44BBBBBB

         LDR R1,= 0x40011C00

         STR R0,[R1]
   


         LDR R0,= 0xBBBB4444

         LDR R1,= 0x40011C04

         STR R0,[R1]
   


         LDR R0,= 0x44BBBBBB

         LDR R1,= 0x40012000

         STR R0,[R1]



         LDR R0,= 0x44444B44

         LDR R1,= 0x40012004

         STR R0,[R1]      

         
; FSMC Configuration   
; Enable FSMC Bank1_SRAM Bank


        LDR R0,= 0x00001001

        LDR R1,= 0xA0000010

        STR R0,[R1]



        LDR R0,= 0x00000100

        LDR R1,= 0xA0000014

        STR R0,[R1]


我在启动码中这样子配置是不是也达到了你说的目的呢?这是我参照STM库文件中的一个SRAM例程修改的。
现在的问题我找到了,只是每次读取外部SRAM的时候才会导致LED亮,但是很奇怪的是我已经把该GPIO置位为复位值了,怎么还可以以PP模式驱动。也许还是没怎么搞明白,我继续查看一下。

使用特权

评论回复
地板
songbangyan|  楼主 | 2010-5-14 14:57 | 只看该作者
找到问题所在了,我在配置GPIOE的时候配置的有点问题,把不需要配置为PP模式的配位为PP模式了,而LED又正好接在了我配置了的这个GPIO上。所以每次读取外部SRAM的时候这个引脚虽然不起作用,但是被处理器默认置位了。所以LED就会亮一下!

使用特权

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

本版积分规则

个人签名:我不偏执,所以我不是彻底的技术员。

18

主题

293

帖子

0

粉丝