LM3S9B92 PB7口



LM3S9B92   PB7口输出高低电平 都是1.2V左右  其他的口都正常

  有没有单独一跟口线损坏了   其他的都正常

  • 比较少见,PB7有点特殊。

    你用下面的程序试一下,把外部电路割断,看看PB7会不会翻转。

    #include "inc/lm3s9b92.h"

    int

    main(void)

    {

       volatile unsigned long ulLoop;

       SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOB;

       ulLoop = SYSCTL_RCGC2_R;

       GPIO_PORTB_DIR_R |= 0x80;

       GPIO_PORTB_LOCK_R = 0x4C4F434B;

       GPIO_PORTB_CR_R =0x80;

       GPIO_PORTB_DEN_R |= 0x80;

       while(1)

       {

           GPIO_PORTB_DATA_R |= 0x80;

           for(ulLoop = 0; ulLoop < 200000; ulLoop++)

           {

           }

           GPIO_PORTB_DATA_R &= ~(0x80);

           for(ulLoop = 0; ulLoop < 200000; ulLoop++)

           {

           }

       }

    }

  • PB7同时作为NMI管脚,所以是比较敏感的管脚,其配置受到保护。如果要更改如下寄存器配置:

    GPIO Alternate Function Select (GPIOAFSEL)

    GPIO Pull Up Select (GPIOPUR)

    GPIO Pull-Down Select (GPIOPDR)

    GPIO Digital Enable (GPIODEN)

    则必须先通过GPIO Lock (GPIOLOCK)寄存器解锁,然后使能GPIO Commit (GPIOCR)响应位后才能更改其功能。

    怀疑楼主可能没有解锁就对其进行配置,所以配置都无效,PB7输出没变化。楼主可以参考Forrest的代码,就是先对PB7管脚的锁定进行解锁再进行配置。

    PC[3:0]是JTAG相关管脚,用起来也有同样的问题,需要先解锁。

  • 由于PB7默认功能时NMI模式,如果将其作为其他功能来使用的话 需要先进行解锁;

    将PB7设为IO使用的代码如下:      

    // 配置PB7为GPIO功能; PB7默认为NMI功能;          

         HWREG(GPIO_PORTB_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY_DD;

               HWREG(GPIO_PORTB_BASE + GPIO_O_CR) = 0x80;

               HWREG(GPIO_PORTB_BASE + GPIO_O_AFSEL) &= 0x7f;

               HWREG(GPIO_PORTB_BASE + GPIO_O_LOCK) = 0;