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;