在 Keil 中对德州 Tiva c 系列进行编程时、我没有任何争议。 但我想让它:如果按下开关(PF4=0)、PF2切换(翻转位从0切换为1、或从1切换为0)、如果未按下开关(PF4=1)、则设置 PF2 (LED 亮起)
我已经写了一些东西。 但它不起作用。
#include "Texas .h"
#define PF4 (*(volatile unsigned long *) 0x40025040)
#define PF2 (*(volatile unsigned long *) 0x40025010)
#define GPIO_PORTF_DATA_R (*(volatile unsigned long *) 0x400253FC)
#define GPIO_PORTF_DIR_R (*(volatile unsigned long *) 0x40025400)
#define GPIO_PORTF_AFSEL_R (*(volatile unsigned long *) 0x40025420)
#define GPIO_PORTF_PUR_R (*(volatile unsigned long *) 0x40025510)
#define GPIO_PORTF_DEN_R (*(volatile unsigned long *) 0x4002551C)
#define GPIO_PORTF_AMSEL_R (*(volatile unsigned long *) 0x40025528)
#define GPIO_PORTF_PCTL_R (*(volatile unsigned long *) 0x4002552C)
#define SYSCTL_RCGC2_R (*(volatile unsigned long *) 0x400FE108)
#define SYSCTL_RCGC2_GPIOF 0x00000020 //端口 F 时钟门控控制
unsigned long in;
无符号超长整型;
//启动结束时定义的基本函数
void DisableInterrupts (void);//禁用中断
void EnableInterrupts (void);//启用中断
void delay (void){unsigned long volatile time;
unsigned long i;
while (time > 0){
I = 1333333;
while (i > 0){
I = I-1;
}
时间=时间-1;
}
}
int main (void){
TExaS (SW_PIN_PF4、LED_PIN_PF2);//激活渐变器并将系统时钟设置为80MHz
SYSCTL_RCGC2_R |= 0x00000020;//激活端口 F 的时钟
GPIO_PORTF_AMSEL_R = 0x00;//禁用 PF 上的模拟
GPIO_PORTF_PCTL_R = 0x00000000;PF4-0上的//PCTL GPIO
GPIO_PORTF_DIR_R = 0x04;
GPIO_PORTF_AFSEL_R = 0x00;
GPIO_PORTF_DEN_R = 0x14;
GPIO_PORTF_PUR_0x10;
GPIO_PORTF_DATA_R|=0x04;
EnableInterrupts();//为 Grader 启用中断
while (1)
{
delay();
IN=GPIO_PORTF_DATA_R&0x10;
如果(in ==0){
while (in=0)
{
OUT=GPIO_PORTF_DATA_R=(~0x04);
OUT=OUT^0x04;
GPIO_PORTF_DATA_R=OUT;
delay();
}
}
否则{
GPIO_PORTF_DATA_R=(0x04);
}
}
}