TM4C123GH6PM的PF0引脚不能用的问题

2019-07-22 16:49发布

TM4C123GH6PM的PF0使能后无论怎么write,都吾非改变它的状态,不会高低变化。同样的PF1和PF4都可以高低变化,而且我用read读取引脚的状态,在调试运行里看K的值,是可以0和1变化的,但是示波器去测引脚,就没有任何反应。
这是我在使用PF0,作为RS485的控制脚的时候发现的问题。到底是PF0比较特殊,还是芯片的问题?
注:1.芯片引脚与后续电路已经断开,无其他电路影响。
2.另一块板子的这个芯片这个PF0一样的现象。

QQ截图20160506150837.png

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
djz1992
1楼-- · 2019-07-22 21:49
@dirtwillfly @xyz549040622 两位大神,帮忙看看呢
xyz549040622
2楼-- · 2019-07-23 00:34
 精彩回答 2  元偷偷看……
dirtwillfly
3楼-- · 2019-07-23 03:50
xyz549040622 发表于 2016-5-6 15:27
PF0是NMI引脚,这是个特殊的引脚,默认是锁住的,你需要把他给解锁。

djz1992
4楼-- · 2019-07-23 05:02
xyz549040622 发表于 2016-5-6 15:27
PF0是NMI引脚,这是个特殊的引脚,默认是锁住的,你需要把他给解锁。

NMI是什么功能,看了资料没理解。。。要用什么函数来解锁呢
xyz549040622
5楼-- · 2019-07-23 09:58
djz1992 发表于 2016-5-6 16:55
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;//重新锁定
10299823
6楼-- · 2019-07-23 15:24
特殊引脚呢

一周热门 更多>