2019-07-22 16:49发布
xyz549040622 发表于 2016-5-6 15:27 PF0是NMI引脚,这是个特殊的引脚,默认是锁住的,你需要把他给解锁。
djz1992 发表于 2016-5-6 16:55 NMI是什么功能,看了资料没理解。。。要用什么函数来解锁呢
最多设置5个标签!
NMI是什么功能,看了资料没理解。。。要用什么函数来解锁呢
NMI是不可屏蔽中断。
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: iTivaWare_C_Series-1.0examplesoardsek-tm4c123gxldriversuttons.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;//重新锁定
一周热门 更多>