<big><br />// 基于LM3S驱动库的Stellaris系列单片机GPIO演示程序<br /><br /><br />// 包含必要的头文件<br />#include <hw_types.h><br />#include <hw_memmap.h><br />#include <hw_sysctl.h><br />#include <hw_gpio.h><br />#include <sysctl.h><br />#include <gpio.h><br /><br /><br />// 将较长的标识符定义为较短的形式<br />#define SysCtlPeriEn SysCtlPeripheralEnable<br />#define SysCtlPeriDis SysCtlPeripheralDisable<br />#define GPIOPinTypeIn GPIOPinTypeGPIOInput<br />#define GPIOPinTypeOut GPIOPinTypeGPIOOutput<br /><br />// 定义按键<br />#define KEY_PORT SYSCTL_PERIPH_GPIOA<br />#define KEY_PIN GPIO_PORTA_BASE , GPIO_PIN_4<br />#define KeyGet() GPIOPinRead(KEY_PIN)<br /><br />// 定义LED<br />#define LED_PORT SYSCTL_PERIPH_GPIOD<br />#define LED_PIN GPIO_PORTD_BASE , GPIO_PIN_7<br />#define LedOn() GPIOPinWrite(LED_PIN , 0 << 7)<br />#define LedOff() GPIOPinWrite(LED_PIN , 1 << 7)<br /><br /><br />// 防止JTAG失效<br />void WaitJTAG(void)<br />{<br /> SysCtlPeriEn(KEY_PORT); // 使能按键所在的GPIO端口<br /> GPIOPinTypeIn(KEY_PIN); // 设置按键所在管脚为输入<br /> if ( KeyGet() == 0x00 ) // 如果有键按下,则进入<br /> {<br /> for (;;); // 死循环,以等待JTAG连接<br /> }<br /> SysCtlPeriDis(KEY_PORT); // 禁止按键所在的GPIO端口<br />}<br /><br /><br />// 延时<br />void TimeDelay(unsigned long ulVal)<br />{<br /> while ( --ulVal != 0 );<br />}<br /><br /><br />int main(void)<br />{<br /> WaitJTAG(); // 防止JTAG失效,重要!<br /> SysCtlPeriEn(LED_PORT); // 使能LED所在的GPIO端口<br /> GPIOPinTypeOut(LED_PIN); // 设置LED所在管脚为输出<br /> for (;;)<br /> {<br /> LedOn(); // 点亮LED<br /> TimeDelay(400000UL);<br /> LedOff(); // 熄灭LED<br /> TimeDelay(500000UL);<br /> }<br />}<br /></big><br /><br />(zlgmcu_wdx)
|