请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C123GH6PM 我目前正在项目中使用多个 GPIO、两个 SSI 通道和两个 I2C 通道。 直到我添加了 PB5作为 GPIO 输出来控制 ADC CS 引脚为止、一切都进展顺利。 我在 Booster Pack J1-2的引脚上有一个示波器、输出始终为高电平。 下面是设置 GPIO 的代码片段。 我已经三重检查了引脚分配冲突、在软件中找不到任何冲突。 如果我在查看底部的同时单步执行、则引脚输出永远不会切换。 它只是保持高电平。 有什么想法吗? 我觉得我缺少了一些明显的东西、但我无法使它正常工作、我花了比我希望更多的时间。
谢谢!
void GpioInit (void){
//启用以下 GPIO 引脚:
// PE1 -用于4kHz 环路的定时器测试。 无战术功能。
// PD6 -用于控制 AZ ADC 上的* CS 线路。
// PC7 -用于控制 EL ADC 上的*CS 线路。
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA); //启用 GPIO A
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB); //启用 GPIO B
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC); //启用 GPIO C
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD); //启用 GPIO D
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE); //启用 GPIO E
SysCtlDelay (500);
ROM_GPIOPinTypeGPIOOutput (GPIO_Porta_base、GPIO_PIN_3);//将 PA3配置为 GPIO 输出。
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTB_BASE、GPIO_PIN_5);//将 PB5配置为 GPIO 输出。
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTC_BASE、GPIO_PIN_7);//将 PC7配置为 GPIO 输出。
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_6);//将 PD6配置为 GPIO 输出。
ROM_GPIOPinTypeGPIOOutput (GPIO_Porte _BASE、GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5);//将 PE1/PE4/PE5配置为 GPIO 输出。
ROM_GPIOPinTypeGPIOInput (GPIO_PORTD_BASE、GPIO_PIN_1);
ROM_GPIOPinTypeGPIOInput (GPIO_PORTD_BASE、GPIO_PIN_2);
ROM_SysCtlDelay (500); //延迟几个时钟周期以允许更改在更改状态之前应用。
//初始化 ADC *CS 引脚高电平输出。 CS 为低电平有效。
//使用直接寄存器写入(DMA)进行 GPIO 控制以最大限度地减少延迟。
GPIO_PORta_data_R |= GPIO_PIN_3;
GPIO_PORTB_DATA_R |= GPIO_PIN_5;
GPIO_PORTC_DATA_R |= GPIO_PIN_7;
GPIO_PORTD_DATA_R |= GPIO_PIN_6;
GPIO_Porte DATA_R |= GPIO_PIN_4;
GPIO_Porte DATA_R |= GPIO_PIN_5;
GPIO_Porte DATA_R &&~GPIO_PIN_1;
while (1){
GPIO_PORTB_DATA_R &=~GPIO_PIN_5;
GPIO_PORTB_DATA_R |= GPIO_PIN_5;
}
}