- TM4C123x的PF0和PD7脚有锁,在解锁后方可以指定管脚功能。详细信息请参考GPIO部分的GPIOLOCK和GPIOCR寄存器及相关描述。
如果需要调整PF0的功能,需要在使能PF脚后执行如下操作:
HWREG(BUTTONS_GPIO_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;//解锁
HWREG(BUTTONS_GPIO_BASE + GPIO_O_CR) |= 0x01;// (GPIOCR 寄存器的内容只有在 GPIOLOCK 寄存器解锁时才能被修改)确认相应的位如果是PD7解锁应该写入0x80
HWREG(BUTTONS_GPIO_BASE + GPIO_O_LOCK) = 0;//重新锁定
要包含的头文件
#include "inc/hw_types.h"
#include "inc/hw_gpio.h"
实际上不只是PD7和PF0,PC[3:0]也是有锁的。因为PD7和PF0是和NMI中断复用的,NMI中断优先级很高(仅次于复位中断),为了防止程序误动作,加锁可以起到保护作用。PC[3:0]是Jtag。也是一种保护。
可参考例程
C:\ti\TivaWare_C_Series-1.0\examples\boards\ek-tm4c123gxl\drivers\buttons.c
//PF0解锁
HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;//解锁
HWREG(GPIO_PORTF_BASE + GPIO_O_CR) |= 0x01;//确认
HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = 0;//重新锁定
GPIOPinTypeGPIOInput(GPIO_PORTC_BASE,GPIO_PIN_4|GPIO_PIN_5 |GPIO_PIN_6);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);//使能GPIOF
//PD7解锁
HWREG(GPIO_PORTD_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY;//解锁
HWREG(GPIO_PORTD_BASE + GPIO_O_CR) |= 0x80;//确认
HWREG(GPIO_PORTD_BASE + GPIO_O_LOCK) = 0;//重新锁定