LM3S5956 在控制PB7口时,不能翻转电平

LM3S5956 在控制PB7口时,不能翻转电平,具体来说是无法置高电平。(PB7一直保持低电平)其他IO口都可以任意翻转,问什么?

我写的函数是: GPIOPinWrite(GPIO_PORTB_BASE,GPIO_PIN_7,0xff);  //B电机控制输入端口IN_4为高电平

  • 楼主可以检查下GPIOBFSEL这个寄存器第7位是不是0以确定GPIO功能是否配置正常。

    此外楼主可以检查下自己的电路。最简单办法就是断开PB7与其它电路的连接,观察软件设置电平时端口电平是否有变化

  • 发现配置不正常。可是我配置PB口其他的位,都可以置位。问什么单独配置PB7这个具有NMI功能管脚时不行?我需要解锁这个管脚?就是对于这种特殊管脚怎么处理?专家,我还有个问题没能解决。就是LM3S5956会被锁住吗?为什么我第一次焊完芯片(5956),下载程序之前,都需要用软件解锁后才能下载?

  • 发现配置不正常。可是我配置PB口其他的位,都可以置位。问什么单独配置PB7这个具有NMI功能管脚时不行?我需要解锁这个管脚?就是对于这种特殊管脚怎么处理?专家,我还有个问题没能解决。就是LM3S5956会被锁住吗?为什么我第一次焊完芯片(5956),下载程序之前,都需要用软件解锁后才能下载?

  • Jingbing Wang :

      问什么单独配置PB7这个具有NMI功能管脚时不行?问题就在这嘛,它是NMI管脚,比一般管脚要复杂点咯,要解锁,也就是确认修改。参看GPIO部分说明中的Commit Control段描述

  • 要解锁只需要在配置GPIO前加入下面代码就可以了:

       // Unlock GPIO Commit

       HWREG(GPIO_PORTB_BASE + GPIO_O_LOCK) = 0x1ACCE551;

       // Manually Write CR Register for PB7

       HWREG(GPIO_PORTB_BASE + GPIO_O_CR) |= (1 << 7);

  • 另外,关于楼主5956芯片锁住的问题。不知道楼主手上的芯片是全新的不。

    M3芯片在时钟配置错误的时候会锁住芯片。比方说代码配置的是使用外部晶振,但发现外部并没有晶振,这时芯片就会锁住,这样做的原因是为了防止一些不良行为比方说破解盗取代码等。所以楼主可以看看自己芯片里是不是已经有程序配置使用了某个晶振,而楼主的板子上的晶振是不同频率的。