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.

[参考译文] TM4C1230H6PM:我可以#39;t 获取端口 B 的其他位来打开 LED

Guru**** 2439560 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/625778/tm4c1230h6pm-i-can-t-get-other-bits-of-port-b-to-turn-on-leds

器件型号:TM4C1230H6PM

大家好、我将 EduBase ARM 培训师与 LaunchPad 配合使用。  根据其中一个图表、LED 连接到端口 B、但只有 PB0亮起:

这是我拥有的代码、我在 Keil uVision5上运行该代码:  


Lab4_2.h

(三
#include 
#include 

#define SYSCTL_RCGC2_R(*(volatile UINT32_t*) 0x400FE108)
#define GPIO_PORTB_DATA_R(*(volatile UINT32_t*) 0x400053FC)
#define GPIO_PORTD_DATA_R(*(volatile UINT32_t*) 0x4000FC2/t2 0x000C2000_C2000_RC000B

时钟控制#define GPT/ SYSCTR门 控控制#define RC000B
/ SYSCTR门 控#define C2000_TREND/ SYSCC2000_TR门 控控制#define C2000_TRENTRENTREM_TREMTREM_TREM_ 


Lab4_2.c
(三
#include "Lab4_2.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"

int main (void){
uint32_t ui32Input;
bool res;

//设置 GPIO_sysbclock_pet_pet_gpet_ipt2



;gp2_ipt1_sysct2_gp2_ipt2|p_ipt2_ipt2_ipt2_ipt2_ipt2_ipt2|p_ipt_ipt1_s_ipt1_s_ipt2_ipt2_ipt2_ipt1_s_ipt1_syt1_r_ipt2_ipt1_syt1_s_ipt2_ipt2_ipt2|p_ipt_ipt_ipt_ipt2_ipt2_ipt2_ipt2_ipt2_ipt2_ipt_ipt2_ipt_ipt2_




GPIO_PIN_1);
GPIOPinTypeGPIOOutput (GPIO_PORTB_BASE、GPIO_PIN_0);

//将 PD0-PD3设置为输入引脚
GPIOPinTypeGPIOInput (GPIO_PORTD_BASE、GPIO_PIN_3);
GPIOPinTypeGPIOInput (GPIO_PORTD_BASE、GPIOPIN_BASE);GPIOPIN_BASE
(GPIOPIN_GPIO2) GPIO_PIN_1);
GPIOPinTypeGPIOInput (GPIO_PORTD_BASE、GPIO_PIN_0);

//检查两个端口是否都准备就绪、可供访问
= SysCtlPeripheralReady (SYSCTL_PERIPH_GPIOB)| SysCtl_Periph_GPIOD);

if = 0xTB_INPUT




(0x8)、GPIO_PRIM_1 (while)、GPIO_PRIM_IN_GPIO1 (0xT_IN_GPIOPT_IN_GPIO1);if = 0xTB_IN_IN_IN_TO_IN_IN_8 (while)

0x1);
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_2、0x1);
GPIOPinWrite (GPIO_PORTB_BASE、 GPIO_PIN_3、0x1);
SysCtlDelay (50000);
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_0、 0x0);
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_1、0x0);
GPIOPinWrite (GPIO_PORTB_BASE、 GPIO_PIN_2、0x0);
GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_3、0x0);
SysCtlDelay (50000);
}
}
}
}

我是否遗漏了什么?

谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    即使不阅读您的帖子(即仅注意(仅)您描述得很好的"主题行")、我/可能的其他人-"只知道您的问题!"    (当然是一种简单、即时的治疗...)

    这是您过去的经验和期望证明"不是您的朋友!"的一次机会   而且-此问题表明您没有太多时间(通过论坛"搜索框"(位于此论坛页面顶部)查看(数百)个论坛帖子、证明对新用户具有巨大价值)。

    "一般故障排除"的一种方法是查看"问题代码和/或硬件设计中常见的问题(即使"常见的问题")。"   您会注意到(仅) PB0的 LED 亮起。   因此、"代码和硬件连接"很可能是正确的!  现在、让我们来检查您的代码:

    "GPIOPinWrite ("Desired Port"、"Desired pin (s)"、"Value Fadived/those pin (s)")"

    在"全部三个"失败的 Port_B 写入中、常见的是使用"0x1"-在"希望打开该端口位"中。   (和连接的 LED)  、这适用于 PB0 -但不适用于其他3个端口 B 引脚。  (其他端口 B 引脚也不是!)

    在"GPIOPinWrite()"中的最后(第三个)参数必须保持"所需的端口引脚"的"位加权值"。   因此、PB0的工作方式是"0x1"、它的位加权值!   (不幸的是、只有 PB0的"开启状态!"的正确值才是正确的!)

    为了打开"其他"引脚(即 PB1)、采用其位加权值(0x2)-类似 PB2 (0x4)等。   多个位(此处显示您的所有位)在参数3设置为0xF (或仅15)的情况下打开。

    在许多其他协议中、使用"0x1"实际上是"设置位"。   但不在这里。   这种方法有一个优点!  (前身 MCU 公司"LMI "首次推出。)  如果您有兴趣、您应该能够考虑并确定这一点。

    您对"外设驱动程序用户指南"和许多代码示例的回顾:vendorWare/examples/peripherals、提供了极好的见解和速度/简化了您的学习...   很棒的航行!