This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Tiva C 系列 Keil-软件问题

Guru**** 2328790 points
Other Parts Discussed in Thread: EK-TM4C123GXL
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/590914/tiva-c-series-keil-software-problem

Thread 中讨论的其他器件:EK-TM4C123GXL

在 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);





  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您没有提到您使用的器件或电路板。 根据您对 GPIO PF2和 PF4的描述、我认为您正在使用 EK-TM4C123GXL Launchpad。 是这样吗?

    我建议您不要使用 #define 和直接寄存器写入。 如果您尚未下载 TivaWare 库、请查看中的示例:
    C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\ek-tm4c123gxl\blinky

    此示例将向您展示如何使用驱动程序库函数来启用 GPIO 端口、配置引脚类型和操作 GPIO。 学习使用 TivaWare 驱动程序库将帮助您避免遇到问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    与供应商达成一致、即直接注册代码-就像您现在一样-会增加更多的时间/精力-包括您的代码工作-以及此处的代码工作!   这怎么会很好?

    对于您的问题: 此代码块(如下)-输入后-证明"不可避免" (只要在0中)-不能吗?   (您在 "while loop"上方的两行中读出"in"、因此"in"无法再次读出、而您在"while loop"中读出"被困"、您不同意吗?)

    while (in=0)

    OUT=GPIO_PORTF_DATA_R=(~0x04);
    OUT=OUT^0x04;
    GPIO_PORTF_DATA_R=OUT;
    delay();

    同时放置:

    IN=GPIO_PORTF_DATA_R&0x10;
    如果(in ==0){

    在(上面的) while 循环内、当 in 为非零时、启用该循环的"转义"。

    请注意、我没有/没有尝试确认所有先前的 DRM 样式代码、这些代码用于(尝试)配置端口 F