《基于LM3S1138对跑马灯的控制设计.doc》由会员分享,可在线阅读,更多相关《基于LM3S1138对跑马灯的控制设计.doc(8页珍藏版)》请在三一文库上搜索。
1、基于LM3S1138对跑马灯的控制设计很简单了哈,这里不罗嗦了。LED.h头文件#ifndef _LED_H_#define _LED_H_/ 定义LED名称#define LED1 0x01#define LED2 0x02#define LED3 0x04/ 初始化指定的LEDextern void LED_Init(unsigned char ucLED);/ 点亮指定的LEDextern void LED_On(unsigned char ucLED);/ 熄灭指定的LEDextern void LED_Off(unsigned char ucLED);/ 反转指定的LEDextern
2、 void LED_Toggle(unsigned char ucLED);#endif / _LED_H_LED.c文件:/ 包含必要的头文件#include “LED.H”#include#include#include#include#include#include/ 将较长的标识符定义成较短的形式#define SysCtlPeriEnable SysCtlPeripheralEnable#define SysCtlPeriDisable SysCtlPeripheralDisable#define GPIOPinTypeOut GPIOPinTypeGPIOOutput/*功能:初始
3、化指定的LED参数:ucLED是LED名称,取值下列值之一或者它们之间的“或运算”组合形式LED1LED2LED3返回:无*/void LED_Init(unsigned char ucLED)if ( ucLED SysCtlPeriEnable(SYSCTL_PERIPH_GPIOD); / 使能GPIOD端口GPIOPinTypeOut(GPIO_PORTD_BASE , GPIO_PIN_0); / 设置PD0为输入类型LED_Off(LED1); / 熄灭LED1if ( ucLED SysCtlPeriEnable(SYSCTL_PERIPH_GPIOG); / 使能GPIOG端口
4、GPIOPinTypeOut(GPIO_PORTG_BASE , GPIO_PIN_2); / 设置PG2输入类型LED_Off(LED2); / 熄灭LED2if ( ucLED SysCtlPeriEnable(SYSCTL_PERIPH_GPIOG); / 使能GPIOG端口GPIOPinTypeOut(GPIO_PORTG_BASE , GPIO_PIN_3); / 设置PG3输入类型LED_Off(LED3); / 熄灭LED3/*功能:点亮指定的LED参数:ucLED是LED名称,取值下列值之一或者它们之间的“或运算”组合形式LED1LED2LED3返回:无*/void LED_O
5、n(unsigned char ucLED)if ( ucLED GPIOPinWrite(GPIO_PORTD_BASE , GPIO_PIN_0 , 0x00); / PD0输出低电平if ( ucLED GPIOPinWrite(GPIO_PORTG_BASE , GPIO_PIN_2 , 0x00); / PG2输出低电平if ( ucLED GPIOPinWrite(GPIO_PORTG_BASE , GPIO_PIN_3 , 0x00); / PG3输出低电平/*功能:熄灭指定的LED参数:ucLED是LED名称,取值下列值之一或者它们之间的“或运算”组合形式LED1LED2LED
6、3返回:无*/void LED_Off(unsigned char ucLED)if ( ucLED GPIOPinWrite(GPIO_PORTD_BASE , GPIO_PIN_0 , 0x01); / PD0输出高电平if ( ucLED GPIOPinWrite(GPIO_PORTG_BASE , GPIO_PIN_2 , 0x01 2); / PG2输出高电平if ( ucLED GPIOPinWrite(GPIO_PORTG_BASE , GPIO_PIN_3 , 0x01 3); / PG3输出高电平/*功能:反转指定的LED参数:ucLED是LED名称,取值下列值之一或者它们之
7、间的“或运算”组合形式LED1LED2LED3返回:无*/void LED_Toggle(unsigned char ucLED)unGPIOPinWrite(GPIO_PORTG_BASE , GPIO_PIN_3 , ucVal); / 更新PG3的输出状态主函数main.c/ 基于Stellaris外设驱动库的例程:两只LED交替闪烁/ 包含必要的头文件#include “LED.H”#include#include#include#include#include#include/ 将较长的标识符定义成较短的形式#define SysCtlPeriEnable SysCtlPeriphe
8、ralEnable#define SysCtlPeriDisable SysCtlPeripheralDisable#define GPIOPinTypeIn GPIOPinTypeGPIOInput#define GPIOPinTypeOut GPIOPinTypeGPIOOutput/ 定义KEY#define KEY_PERIPH SYSCTL_PERIPH_GPIOG#define KEY_PORT GPIO_PORTG_BASE#define KEY_PIN GPIO_PIN_5/ 防止JTAG失效void JTAG_Wait(void)SysCtlPeriEnable(KEY_PE
9、RIPH); / 使能KEY所在的GPIO端口GPIOPinTypeIn(KEY_PORT , KEY_PIN); / 设置KEY所在管脚为输入if ( GPIOPinRead(KEY_PORT , KEY_PIN) = 0x00 ) / 如果复位时按下KEY,则进入for (;); / 死循环,以等待JTAG连接SysCtlPeriDisable(KEY_PERIPH); / 禁止KEY所在的GPIO端口/ 定义全局的系统时钟变量unsigned long TheSysClock = 12000000UL;/ 延时void Delay(unsigned long ulVal)while (
10、-ulVal != 0 );/ 系统初始化void SystemInit(void)SysCtlLDOSet(SYSCTL_LDO_2_50V); / 设置LDO输出电压SysCtlClockSet(SYSCTL_USE_OSC | / 系统时钟设置,采用主振荡器SYSCTL_OSC_MAIN |SYSCTL_XTAL_6MHZ |SYSCTL_SYSDIV_1);/*SysCtlLDOSet(SYSCTL_LDO_2_75V); / 配置PLL前将LDO电压设置为2.75VSysCtlClockSet(SYSCTL_USE_PLL | / 系统时钟设置,采用PLLSYSCTL_OSC_MAI
11、N | / 主振荡器SYSCTL_XTAL_6MHZ | / 外接6MHz晶振SYSCTL_SYSDIV_10); / 分频结果为20MHz*/TheSysClock = SysCtlClockGet(); / 获取系统时钟,单位:HzLED_Init(LED1 | LED2|LED3); / 初始化LED1和LED2/ 主函数(程序入口)int main(void)JTAG_Wait(); / 防止JTAG失效,重要!SystemInit(); / 系统初始化for (;)LED_On(LED1);Delay(200 * (TheSysClock / 4000); / 延时约200msLED_Off(LED1);LED_On(LED2);Delay(200 * (TheSysClock / 4000); / 延时约200msLED_Off(LED2);LED_On(LED3);Delay(200 * (TheSysClock / 4000); / 延时约200msLED_Off(LED3);
链接地址:https://www.31doc.com/p-3411007.html