TIVA C Launchpad (EK-LM4F120XL LaunchPad) 一GPIO测试
在看视频教程时,
讲师:金尔雅提到过高速端口AHB总线,所以想测试下速度到底有多快,速度上去里是不是对驱动TFT 刷屏有益!
测试程序如下
#define PB0_1 HWREG(GPIO_PORTB_BASE + GPIO_O_DATA + (GPIO_PIN_0 << 2)) = GPIO_PIN_0
#define PB0_0 HWREG(GPIO_PORTB_BASE + GPIO_O_DATA + (GPIO_PIN_0 << 2)) = 0
void test_GPIO(void)
{
ROM_FPUEnable();
ROM_FPUStackingEnable();
//ROM_SysCtlClockSet( SYSCTL_XTAL_16MHZ |SYSCTL_USE_OSC | SYSCTL_OSC_MAIN);
// Set the clocking for a 80MHz system clock
//
ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ |
SYSCTL_OSC_MAIN);
//使能外设
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
//设置所选GPIO端口指定管脚的方向和模式
ROM_GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_0,GPIO_DIR_MODE_OUT);
//设置所选GPIO端口指定的管脚为输出模式
ROM_GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE,GPIO_PIN_0);
//设置所选GPIO端口指定管脚的驱动强度,推挽 类型
ROM_GPIOPadConfigSet(GPIO_PORTB_BASE,GPIO_PIN_0,GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD);
while(1)
{
PB0_1;
PB0_0;
}
}
//*******************AHB总线**************************************************
#define PB0_AHB_1 HWREG(GPIO_PORTB_AHB_BASE + GPIO_O_DATA + (GPIO_PIN_0 << 2)) = GPIO_PIN_0
#define PB0_AHB_0 HWREG(GPIO_PORTB_AHB_BASE + GPIO_O_DATA + (GPIO_PIN_0 << 2)) = 0
void test_AHB_GPIO(void)
{
ROM_FPUEnable();
ROM_FPUStackingEnable();
//ROM_SysCtlClockSet( SYSCTL_XTAL_16MHZ |SYSCTL_USE_OSC | SYSCTL_OSC_MAIN);
// Set the clocking for a 80MHz system clock
//
ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ |
SYSCTL_OSC_MAIN);
ROM_SysCtlGPIOAHBEnable(SYSCTL_PERIPH_GPIOB);
//使能外设
//ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
//设置所选GPIO端口指定管脚的方向和模式
ROM_GPIODirModeSet(GPIO_PORTB_AHB_BASE, GPIO_PIN_0,GPIO_DIR_MODE_OUT);
//设置所选GPIO端口指定的管脚为输出模式
ROM_GPIOPinTypeGPIOOutput(GPIO_PORTB_AHB_BASE,GPIO_PIN_0);
//设置所选GPIO端口指定管脚的驱动强度,推挽 类型
ROM_GPIOPadConfigSet(GPIO_PORTB_AHB_BASE,GPIO_PIN_0,GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD);
while(1)
{
PB0_AHB_1;
PB0_AHB_0;
}
}
int main(void)
{
//test_AHB_GPIO();
test_GPIO();
}
测试结果
直接置1,置切换在80MHZ时钟下,可以达5MHZ
gpio高速AHB总线下置1,置切换在80MHZ时钟下,可以达5.7MHZ