
嵌入式实验一.docx
6页本文格式为Word版,下载可任意编辑嵌入式实验一 测验一GPIO测验 一、 测验目的 学会编程操纵 GPIO口 二、 测验设备 计算机、LM3S9B92开发板、USB A型公口转 Mini B型 5Pin 数据线1 条 三、 测验原理 LM3s9b92包含九个GPIO模块,每个模块对应一个GPIO端口(PA、PB、PC、PD、PE、PF、PG、PH)每个GPIO端口包含8个管脚,如PA端口是PA0~PA7GPIO模块遵循FiRM(Foundation IP for Real-Time Microcontrollers)模范,并且支持多达60个可编程输入/输出管脚(概括取决于与GPIO复用的外设的使用处境) 图3-1 该开发板的PJ7引脚外接输入按键SW1,PF3引脚通过电阻R11可以驱动LED1,如图3-1所示测验要求通过编程操纵和配置GPIO引脚,实现按键SW1操纵LED1的闪烁 四、 测验步骤 1、连接测验设备:使用USB mini B线缆的mini端与开发板ICDI口相连,另一端接到PC机的USB插口上。
2、根据光盘内供给的blinky例程,在Keil开发环境下搭建新的工程,并举行相关配置调试程序,运行程序,查看运行结果 五、 测验结果与分析 1、结合开发板电路原理图,分析程序实现两个LED灯闪烁的原理 一、 调用函数SysCtlPeriEnable( )使能LED所在的GPIO模块; 调用函数GPIOPinTypeOut( )配置LED所在的GPIO管脚为推挽输出; 调用函数GPIOPinWrite( )对LED所在的GPIO管脚写0和写1来操纵LED 的亮灭,并在中间插入函数SysCtlDelay( )举行延时操纵,以达成闪烁发光的效果 测验一中,PF3管脚设置为输出,当PF3置1时,LED亮,当PF3置0时,LED灭通过变更PF3输出状态使LED闪烁一个循环实现交替不断的闪烁 测验二中,当key按键被按下,PJ7为低电平,使能LED1操纵端口PF3,置0,LED不亮,反之那么亮通过变更按键key状态使LED闪烁 2、给出程序流程图 系统初始化 使能LED所在GPIO端口 for循环对应端口置0,灭灯 延时 对应端口置1,亮灯 延时 3、说明程序中调用了哪些库和库函数,并说明各库的功能。
一、调用inc,driverlib库 hw_types.h、hw_memmap.h、hw_sysctl.h、hw_gpio.h、sysctl.h、gpio.h hw_types.h里包含了一些重要的根本定义,如布尔类型tBoolean、硬件寄放器访问宏等 hw_memmap.h里定义有全部片内外设在存储器里的基地址及其次功能选择的地址 hw_sysctl.h存放定义了系统操纵寄放器的地址、运行模式时钟配置寄放器地址 hw_gpio.h定义了GPIO初始化函数及常用IO输入出的相关函数 sysctl.h定义LDO操纵、时钟操纵、复位操纵、片内外设操纵、睡眠与深度睡眠、中断操作、时钟验证、器件标识片面及函数组成 gpio.h定义GPIO操纵寄放器名称,利用地址对应实现布局体内部变量操作对物理地址操作 库函数:SysCtlPeripheralEnable、SysCtlPeripheralDisable、GPIOPinTypeGPIOInput、GPIOPinTypeGPIOOutput、SYSCTL_PERIPH_GPIOx、GPIO_PORTF_BASE、GPIO_PIN_x、SysCtlLDOSet、SysCtlClockSet、SysCtlDelay、 GPIOPinRead、GPIOPinWrite、GPIOPinTypeIn、GPIOPinTypeOut 测验一代码 #include \// 定义 LED #define LED_PERIPH SYSCTL_PERIPH_GPIOF #define LED_PORT GPIO_PORTF_BASE #define LED_PIN GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 // 主函数(程序入口) int main(void) { //jtagWait( ); // 防止 JTAG 失效,重要! clockInit( ); // 时钟初始化:晶振, 16MHz SysCtlPeriEnable(LED_PERIPH); // 使能 LED 所在的 GPIO 端口 GPIOPinTypeOut(LED_PORT, LED_PIN); // 设置 LED 所在管脚为输出 for (;;) { GPIOPinWrite(LED_PORT, LED_PIN, 0x00); // 点亮 LED SysCtlDelay(150 * (TheSysClock / 3000)); // 延时约 150ms GPIOPinWrite(LED_PORT, LED_PIN, 0xFF); // 熄灭 LED SysCtlDelay(850 * (TheSysClock / 3000)); // 延时约 850ms } } 六、 测验二开发 参照实现LED灯闪烁的原理,实现通过开发板上按键SW1操纵LED1的亮与灭,给出程序框图和源代码。
系统初始化 使能LED所在GPIO端口 for循环 KEY按下,对应端口置0,灭灯 KEY松开,对应端 口置1,亮灯 延时 测验二代码 #include \// 定义 LED #define LED_PERIPH SYSCTL_PERIPH_GPIOF #define LED_PORT GPIO_PORTF_BASE #define LED_PIN GPIO_PIN_3 #define KEY_PERIPH SYSCTL_PERIPH_GPIOJ #define KEY_PORT GPIO_PORTJ_BASE #define KEY_PIN GPIO_PIN_7 // 主函数(程序入口) int main(void) { //jtagWait( ); // 防止 JTAG 失效,重要! clockInit( ); // 时钟初始化:晶振, 16MHz SysCtlPeriEnable(LED_PERIPH); // 使能 LED 所在的 GPIO 端口 GPIOPinTypeOut(LED_PORT, LED_PIN); // 设置 LED 所在管脚为输出 SysCtlPeriEnable(KEY_PERIPH); // 使能 KEY 所在的 GPIO 端口 GPIOPinTypeIn(KEY_PORT, KEY_PIN); // 设置 KEY 所在管脚为输入 for (;;) { if(GPIOPinRead(KEY_PORT, KEY_PIN)== 0x00)//假设按下KEY GPIOPinWrite(LED_PORT, LED_PIN, 0x00); // 熄灭 LED else GPIOPinWrite(LED_PORT, LED_PIN, 0xFF); // 点亮 LED SysCtlDelay(10* (TheSysClock / 3000)); // 延时约 10ms } } 1 一 月 产品名称 数量 金额 利润 合 计 四 月 产品名称 合 计 数量 金额 利润 合 计 产品名称 五 月 数量 金额 利润 产品名称 合 计 六 月 数量 金额 利润 合 计 二 月 合 计 三 月 利润 产品名称 数量 金额 利润 产品名称 数量 金额 — 6 —。
