主题中讨论的其他器件:EK-TM4C123GXL
下午好!
我正在尝试设置 TM4C 微控制器、以将端口 B (引脚0 - 2)用作数字输入。 数据表显示引脚2是特殊的、它可能与此错误有任何关系、也可能没有关系。
无论我如何尝试、对端口 B 寄存器的任何访问之后的下一条指令都会导致硬故障。
按照手册中指示的说明、我已经尝试过:
-配置 SYSCTRL_RCGCGPIO 寄存器包括端口 B
-通过向 DIR 寄存器写入0将端口 B 配置为输入
-通过写入0x4C4F434B 禁用 PORTB_LOCK
-写入提交寄存器(似乎是必要的,但我不管怎样做)
-设置 AFSEL 为0
-通过向 DEN 寄存器写入相应的位配置为 I/O。
几乎每一个可能的顺序和组合。 在执行了与端口 B 有关的任何操作后、它似乎总是抛出硬故障。 我可以设置 SYSCTRL_RCGCGPIO 寄存器并观察寄存器情况良好、但任何与端口 B 相关的指令似乎都会引起硬件故障。 我不确定是否有办法可以获得更多有关其实际原因的信息。
下面是一个代码片段:
#define PORT_A (1U << 0)
#define PORT_B (1U <<1)
#define PORT_C (1U <<2)
#define PORT_D (1U <<3)
#define PORT_E (1U <<4)
#define PORT_F (1U <<5)
#define PORT_G (1U <<6)
#define PORT_H (1U <<7)
#define PORT_J (1U <<8)
#define PORT_K (1U <<9)
#define PORT_L (1U <<10)
#define PORT_M (1U <<11)
#define PORT_N (1U <<12)
#define PORT_P (1U <<13)
#define PIN_0 (1U <<0)
#define PIN_1 (1U <<1)
#define PIN_2 (1U <<2)
#define PIN_3 (1U <<3)
#define PIN_4 (1U <<4)
#define PIN_5 (1U <<5)
#define PIN_6 (1U <<6)
#define PIN_7 (1U <<7)
#define PIN_ALL 0xFF
...
SYSCTL_RCGCGPIO_R |=(PORT_A|PORT_B|PORT_D|PORT_G|PORT_H|PORT_J|PORT_L|PORT_M|PORT_N);
SYSCTL_GPIOHBCTL_R |=(PORT_J|PORT_L|PORT_M|PORT_N);
/*端口 A 初始化...*/
//端口 B
GPIO_PORTB_LOCK_R = 0x4C4F434B;
GPIO_PORTB_CR_R = 0x07;//将始终出现硬故障,无论顺序如何
GPIO_PORTB_AFSEL_R = 0x0;
GPIO_PORTB_DEN_R =(PIN_0|PIN_1|PIN_2);
GPIO_PORTB_DIR_R = 0x0;
GPIO_PORTB_PCTL_R = 0x0;
感谢任何协助。