天津理工嵌入式实验5Linux应用程序开发--按键控制LED灯

《嵌入式系统》实验考核表
实验名称:实验五:嵌入式Linux应用程序开发-按键控制LED灯2015级班时间: 2017年11月28日组号:
表二
注:
●每组1-2人,必须在一个教学班中,学生自由组合完成本课程所有实验,实验过程中不允
许换人换组。

●表1除“成绩”栏外由学生填写,表2由老师填写。

每个成员在表1的“分工情况”一栏
中详细填写实验中的分工。

●本页打印,附在实验报告正文前。

●实验报告如发现雷同,一律以0分计。

实验报告
一、实验目的
编写程序运行LED和按键控制程序。

二、实验内容
1. 在Linux的开发环境下,使用GCC、VI、Makefile、GDB等工具完成简单程序开发
2. 基本要求如下:
a. 运行已有的Led程序和按键Key程序;
b.合并Led和Key程序,完成以下功能:在开发板上按键,控制开发板上的灯点亮,再次按开发
板上按键,控制开发板上的灯熄灭。

c. 在ARM端运行可执行程序;
d. 观测实验结果。

三、实验要求
实验报告中体现全部实验内容,可以粘贴代码,运行结果图等。

四、实验步骤
1.进入目录/UP-CPU210-II /SRC/KERNEL/LINUX-
2.6.35.7/
2.使用make menuconfig 指令来配置内核对LED模块的支持
3.退出保存配置,重新编译内核,执行make命令
Scripts/kconfig/comf -s arch/arm/Kconfig
CHK include/linux/version/h
SYMLINK include/asm-arm/arch -> include/agm-arm/arch-s3c2410
Make[1]: ‘include/asm-arm/mach-types.h’ is up to date
CHK include/linux/compile.h
编译LED应用测试程序
1.进入实验目录
2.清除中间代码重新编译
3.生成可执行程序test_led
1、启动Contex-A8的开发板,连上电源线、连好网线、串口线。

尝试通过串口终端挂载宿主机实验目录。

2、通过修改Contex-A8的开发板的IP地址与电脑同步,是Contex-A8的开发板挂载主机的文件目录,进入串口终端的共享实验目录。

#include <stdlib.h>
#include <string.h>
#include "def.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "mmu.h"
#include "def.h"
#include "Option.h"
void delay(unsigned long dly)
{
for(; dly > 0; dly--);
}
void __irq IRQ_KEY()
{
if(rINTPND==BIT_EINT8_23)
{
ClearPending(BIT_EINT8_23);//清除中断标志
if(rEINTPEND&(1<<8))
{
rGPBDAT = ~(1<<5);//点亮led1,其他灯灭
}
else if(rEINTPEND&(1<<11))
{
rGPBDAT = ~(1<<6);//点亮led2
}
else if(rEINTPEND&(1<<13))
{
rGPBDAT = ~(1<<7);//点亮led3
}
else if(rEINTPEND&(1<<14))
{
rGPBDAT = ~(1<<8);//点亮led4
}
else if(rEINTPEND&(1<<15))
{
rGPBDAT = ~(0xf<<5);//设置GPB5.GPB6.GPB7.GPB8引脚输出设置成0,则CPU输出电压为3.3V,GPB5.GPB6.GPB7.GPB8引脚对应的LED灯亮
}。

合集下载

嵌入式系统——使用GPIO固件库综合编程(通过按键控制LED灯与蜂鸣器的状态)

嵌入式系统——使用GPIO固件库综合编程(通过按键控制LED灯与蜂鸣器的状态)

嵌⼊式系统——使⽤GPIO固件库综合编程(通过按键控制LED灯与蜂鸣器的状态)led.h#ifndef LED_H#define LED_H#include "stm32f4xx.h"typedef enum LED_ID_T{LED_D1 = 1,LED_D2,LED_D3,LED_D4} LED_ID;void led_init(void);void led_one_on(LED_ID num);void led_one_off(LED_ID num);void delay(int num);void led_loop(void);#endifled.c#include "LED.h"#include "systick.h"#define Total_time 0x2000000void led_init(){RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE|RCC_AHB1Periph_GPIOF, ENABLE);GPIO_InitTypeDef p;p.GPIO_Mode = GPIO_Mode_OUT;p.GPIO_OType = GPIO_OType_PP;p.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10;p.GPIO_PuPd = GPIO_PuPd_NOPULL;p.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOF, &p);p.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14;GPIO_Init(GPIOE, &p);GPIO_SetBits(GPIOF, GPIO_Pin_9 | GPIO_Pin_10);GPIO_SetBits(GPIOE, GPIO_Pin_13 | GPIO_Pin_14);}void led_one_on(LED_ID led_now){if(led_now == 1){GPIO_ResetBits(GPIOF, GPIO_Pin_9);GPIO_SetBits(GPIOF, GPIO_Pin_10);GPIO_SetBits(GPIOE, GPIO_Pin_13 | GPIO_Pin_14);}else if(led_now == 2){GPIO_ResetBits(GPIOF, GPIO_Pin_10);GPIO_SetBits(GPIOF, GPIO_Pin_9);GPIO_SetBits(GPIOE, GPIO_Pin_13 | GPIO_Pin_14); }else if(led_now == 3){GPIO_ResetBits(GPIOE, GPIO_Pin_13);GPIO_SetBits(GPIOF, GPIO_Pin_9 | GPIO_Pin_10);GPIO_SetBits(GPIOE, GPIO_Pin_14);}else if(led_now == 4){GPIO_ResetBits(GPIOE, GPIO_Pin_14);GPIO_SetBits(GPIOF, GPIO_Pin_9 | GPIO_Pin_10);GPIO_SetBits(GPIOE, GPIO_Pin_13);}}void led_one_off(LED_ID led_now){if(led_now == 1){GPIO_SetBits(GPIOF, GPIO_Pin_9);}else if(led_now == 2){GPIO_SetBits(GPIOF, GPIO_Pin_10);}else if(led_now == 3){GPIO_SetBits(GPIOE, GPIO_Pin_13);}else if(led_now == 4){GPIO_SetBits(GPIOE, GPIO_Pin_14);}}void delay(int num){while(num--);}void led_loop(){LED_ID led_now = LED_D1;for (led_now = LED_D1;led_now <= LED_D4;led_now++){ led_one_on(led_now);delay(Total_time);//Delay_ms(2000);}}key.h#ifndef KEY_H#define KEY_H#include "stm32f4xx.h"#include "beep.h"#include "LED.h"void key_init();void key_check();#endifkey.c#include "key.h"int tmp0 = 0;void key_init(){RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOE, ENABLE); GPIO_InitTypeDef P;P.GPIO_Pin= GPIO_Pin_0;P.GPIO_Mode = GPIO_Mode_IN;P.GPIO_Speed = GPIO_Speed_50MHz;//P.GPIO_OType = GPIO_OType_PP;P.GPIO_PuPd = GPIO_PuPd_NOPULL;GPIO_Init(GPIOA,&P); //初始化key0P.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;GPIO_Init(GPIOE,&P); //初始化key1,key2,key3}void key_check(){if(!GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)){//key0被按下//flag1 ? led_one_on(LED_D1) : led_one_off(LED_D1); flag1 ^= 1;//GPIO_ToggleBits(GPIOF, GPIO_Pin_9);tmp0 = 1;//delay(5500);}else if(!GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_2)){//key1被按下//flag2 ? led_one_on(LED_D2) : led_one_off(LED_D2); flag2 ^= 1;GPIO_ToggleBits(GPIOF, GPIO_Pin_10);delay(5500);}else if(!GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_3)){//key2被按下GPIO_ToggleBits(GPIOE, GPIO_Pin_13);delay(5500);}else if(!GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_4)){//key3被按下GPIO_ToggleBits(GPIOE, GPIO_Pin_14);delay(5500);GPIO_SetBits(GPIOF, GPIO_Pin_8);//置1,蜂鸣器响起delay(0x666666);GPIO_ResetBits(GPIOF, GPIO_Pin_8);//置0}}beep.h#ifndef BEEP_H#define BEEP_H#include "stm32f4xx.h"#include "systick.h"void beep_init(int f);void music_fun();#endifbeep.c#include "beep.h"void beep_init(int f){RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); GPIO_InitTypeDef P;P.GPIO_Pin= GPIO_Pin_8;P.GPIO_Mode = GPIO_Mode_OUT;P.GPIO_Speed = GPIO_Speed_50MHz;P.GPIO_PuPd = GPIO_PuPd_NOPULL;GPIO_Init(GPIOF,&P); //初始化BEEPGPIO_PinAFConfig(GPIOF, GPIO_PinSource8, GPIO_AF_TIM13); GPIO_ResetBits(GPIOF, GPIO_Pin_8);//初始化置0}main.cled_init();//初始化LEDkey_init();//初始化keybeep_init();//初始化蜂鸣器while (1){key_check();//等待key响应}。

实验5 嵌入式Linux Led程序设计

实验5 嵌入式Linux Led程序设计

实验5 嵌入式Linux Led程序设计一、实验目的:1.了解实验板的硬件资源。

2.掌握嵌入式Linux Led程序设计。

3.掌握嵌入式linux程序下载运行方法。

二、实验板介绍1.Smart210 核心板介绍2.Smart210 底板介绍3.用户LED二、实验内容:1.启动终端(快捷键ctrl+alt+t),在ubuntu下的/mnt/nfs建立hello文件夹(如果已经创建忽略此步),使用Gedit软件编辑hello.c程序,文件名为hello.c. 编译程序生成可执行代码。

(5)输入源代码:(6)输入编译链接命令:(7)运行执行文件,在ubuntu上运行该文件查看运行结果hello_arm:2.minicom的使用实验内容:在终端运行minicom,设置相关参数,实现与ARM实验板的COM0通信。

步骤:(1)将实验箱的串口与PC电脑的串口相连。

(2)在电脑端插入USB转串口线,将USB转串口直接连接到ubuntu,如果成功显示为:出现minicom的配置界面,通过上下键进入Serial port setup选项。

修改“SerialDevice”为/dev/ttyUSB0,修改”Bps/Par/Bits”为”115200 8N1”。

直接“EXIT”,回到minicom的操作界面。

正确的话,进入实验板的嵌入式linux终端,按回车键显示如下:3.将hello程序运行在嵌入式linux(1)将实验步骤1生成的hello_arm,拷贝到u盘。

(2)将U盘插入实验板的usb口。

Minicom上会显示如下信息(3)查看嵌入式自动挂载U盘,挂载目录为/udisk运行执行文件,在实验板上运行hello_arms看运行结果4.嵌入式linux Led程序(1)进入/mnt/nfs(2)创建led文件夹:(3)进入led目录(4)使用Gedit软件编辑ledtest.c程序(5)输入源代码:(6)编译ledtest.c5.式linux,并运行,并观察结果。

LINUX下控制LED

LINUX下控制LED
程序来实现的.设备驱动程序
为应用程序屏蔽了硬件的细节,
这样在应用程序看来,硬件设
备只是一个设备文件, 应用程
序可以象操作普通文件一样对 硬件设备进行操作.
步骤一: LED驱动编写、调试、安装
1、编写LED驱动程序我们首先要对LED的硬件电路有所了解
根据图示:二极管正向导通特点,输入端为0灯亮,1灯灭
2、驱动程序编写 要求:学生能读懂驱动程序,可以修改使之与我们开发板上 硬件匹配。
在LINUX内核中已经有对LED灯控制的驱动,我们只需 要拿来修改使用 方法: 1).cd /opt/EmbedSky/linux2.6.30.4/drivers/char 找到EmbedSky_GPIO.c文件打开阅读该驱动程序
执行 rmmod leds.ko 卸载驱动程序
步骤二: LED应用程序编写、编译、调试
1。编写应用程序led-test.c
打开驱动程序
亮 灭器编译应用程序 Arm-linux-gcc leds-test.c -o led 没有错误产生led的可执行文件 3、将测试程序下载到开发板上 4、改变 led权限 chmod 777 led 5、运行程序 ./led 观察开发板上LED亮灭情况
任务:这次课程内容是编写应用程序控
制开发板上LED的亮灭
要求:实现:两部分 1、驱动设计安装
2、应用程序编写,调试
(应用程序调用驱动实现点亮)
(课程任务要求学生能读懂驱动程序,学会修改驱动 程序.并能编写基于驱动程序上的应用程序.)
在嵌入式LINUX操作系统
下编写应用程序对硬件设备进
行控制一般都是利用设备驱动
将更改后的驱动程序改名为ledsc驱动程序阅读加入硬件引脚说明驱动程序中的ioctl函数3驱动程序编译安装geditkconfig添加驱动选项geditmakefile添加驱动选项3退到根目录?执行makemenuconfig找到你新添加的设备devicedriverscharacterdevices?空白不选?内核选择?m作为模块选择?执行makemodules产生模块文件ledsko下载模块ledsko文件到开发板执行insmodledsko安装驱动程序执行rmmodledsko卸载驱动程序步骤二

实验四 在嵌入式Linux上开发LED显示应用程序

实验四 在嵌入式Linux上开发LED显示应用程序

应用程序访问物理设备的方法
• 在嵌入式Linux中应用程序或用户通过设备 驱动程序(模块)提供的能力来操作物理 设备 • 设备文件是连接应用程序或用户与设备驱 动程序之间的桥梁
应用程序访问物理设备的方法
实验内容
• 在嵌入式Linux上开发应用程序,通过LED控 制电路设备驱动(实验三中已开发)的能 力操作LED控制电路,实现三个LED灯交替 点亮与熄灭的跑马灯功能
在嵌入式Linux上开发LED显示应用程序实验
• 实验设备
– 硬件:PC机、博创PXA270-DVP实验箱、博创 FPGA扩展板 – 软件: Altera Quartus II、Red Hat Linux 、GNU 跨平台开发工具链
在嵌入式Linux上开发LED显示应用程序实验
• 实验原理
– 应用程序、设备驱动程序与硬件操作之间的关 系 – 嵌入式Linux设备文件 – 嵌入式Liux中应用程序访问物理设备的方法
在嵌入式Linux上开发LED显示应用程序实验
• • • •
实验目的 实验设备 实验原理 实验内容
在嵌入式Linux上开发LED显示应用程序实验
• 实验目的
– 理解应用程序、设备驱动程序与硬件操作之间 的关系 – 掌握嵌入式Linux中设备文件的概念 – 掌握嵌入式Linux中应用程序访问物理设备的方 法
嵌入式Linux设备文件
嵌入式Linux设备文件
• 设备文件的创建
– 在设备驱动程序模块加载后使用mknod命令创 建(针对字符设备和块设备) – 使用主、从设备号来描述此设备 – 主设备号对应于不同的设备驱动程序,从设备 号用来区分具有相同主设备号的不同设备
• 设备文件的操作
– 将硬件设备看成普通文件,可以通过文件操作 的系统调用来打开、关闭、读取和写入设备

嵌入式系统-流水灯、按键、定时器实验报告

嵌入式系统-流水灯、按键、定时器实验报告

嵌入式系统应用实验报告姓名:学号:学院:专业:班级:指导教师:实验1、流水灯实验编程控制实验板上LED灯轮流点亮、熄灭,中间间隔一定时间。

实验主要考察对STM32F10X系列单片机GPIO的输出操作。

参阅数据手册可知,通过软件编程,GPIO可以配置成以下几种模式:◇输入浮空◇输入上拉◇输入下拉◇模拟输入◇开漏输出◇推挽式输出◇推挽式复用功能◇开漏式复用功能根据实验要求,应该首先将GPIO配置为推挽输出模式。

由原理图可知,单片机GPIO输出信号经过74HC244缓冲器,连接LED灯。

由于74HC244的OE1和OE2都接地,为相同电平,故A端电平与Y端电平相同且LED灯共阳,所以,如果要点亮LED,GPIO应输出低电平。

反之,LED灯熄灭。

软件方面,在程序启动时,调用SystemInit()函数〔见附录1〕,对系统时钟等关键部分进行初始化,然后再对GPIO进行配置。

GPIO配置函数为SZ_STM32_LEDInit()〔见附录2〕,函数中首先使能GPIO 时钟:RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE);然后配置GPIO输入输出模式:GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;再配置GPIO端口翻转速度:GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;最后将配置好的参数写入寄存器,初始化完成:GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure)。

初始化完成后,程序循环点亮一个LED并熄灭其他LED,中间通过Delay()函数进行延时,到达流水灯的效果〔程序完整代码见附录3〕。

实验程序流程图如下:硬件方面,根据实验指南,将实验板做如下连接:实验二、按键实验利用STM32读取外部按键状态,按键按下一次产生一次外部中断在中断处理函数中使按键所对应的灯亮起。

单个按键控制4个LED实验报告

单个按键控制4个LED实验报告

单个按键控制4个LED (入门级实验)实验介绍:通过单个按键控制4个LED 灯的亮灭状态。

正常情况下,一个按键控制1 个灯。

在本次实验中,要求使用1个按键,控制4个LED 灯。

通过按键按下的 次数,控制LED 的亮灭状态。

按下1次,1个LED 灯点亮,按下2次,2个LED 灯点亮,按下3次,3个LED 灯点亮,按下4次,4个LED 灯点亮,按下5次, 所有LED 灯都熄灭,如此循环。

如此就可以通过单个按键控制4个LED 灯的亮 灭。

在照明场所,控制LED 灯的点亮个数,就可以控制亮度。

实验目的:在使用单片机等控制器控制周边元件的时候,经常会遇到I/O 口不够用的情 况。

因此在使用的时候,尽量省着用。

本次实验通过单个按键控制4个LED 灯 的亮灭状态,正常情况下需要4个按键,因而达到了节省单片机I/O 口的目的。

通过此次实验室,学习单片机按键的编程控制方法,学习LED 灯输出的控 制方法。

学习最简单的输入设备(按键)控制最简单的输出设备(LED 灯)的 控制方法。

仿真原理图:在仿真软件Pwteus 中绘制仿真原理图如上图所示。

(注意事项:在进行实物 制作时,发光二极管串联的电阻可以省略,因为单片机引脚灌电流的能力有限, 限制了通过发光二极管电流的大小。

在仿真过程中,电阻R2〜R9的大小要合适, 太大LED 将无法点亮。

)VCC AXIA" O19C3 O4.7uF 于X13L2 O►XTAL1POO ADO XTAL2P0.1AO1 P02AD2 PM 仏 D3 R3TPO/lj^W P05AM P06AD6 P0.7AD7psef P2.QW8 P2.1/A9P2.2 心10P2・3fA" ALEP2.4fA12EA "P2.50M3 P1.0 P2.6fA14P2.MM5P3.CMRXD P1.1P3.1/TXDPI .2PI .3 P3.3tlT1PI .4P3.4/T0PI .5 P3.5H1 PI .6P3.&WFPI .7 P37爪DD2.LED <TE :KT>D4LED <TEXT>C11-2-3- 4-s f一亠丄U19AT99CS1 c7EXT>91D1 . LED <TEXT>R2203<TEXT>R5203 <TEXr>D3.LED WF <TE :KT>编程思路:当单片机上电后,所有的I/O 口默认高电平,因而四个发光二极管在单片机上电后,都为熄灭状态。

嵌入式linux 的LED 实验


(4)设备释放函数:
static int s3c2440_led_release(struct inode *inode, struct file *filp) { printk(KERN_INFO DEVICE_NAME ": released.\n"); return 0; }
(5)模块入口函数:
#define DEVICE_NAME "led" #define LEDRAW_MINOR 1 //注 2 MODULE_LICENSE("Dual BSD/GPL"); static int ledMajor = 233; //注 3 ① 注1,GPIO 寄存器的包含文件。 ② 注2,设备的次设备号定义为1。 ③ 注3,主设备号定义为233
实验内容:
1.阅读S3C2440 的数据手册,熟悉IO 端口的原理。 2.编写LED 应用程序。 3.编写makefile 文件。 4.下载并调试LED 应用程序。
预备条件:
首先在目标文件系统中手动创建一个 led 字符设备:
mknod dev/led c 233 1 试验设备及工具:
1.硬件:GEC2440开发板。 2.软件:PC 操作系统RED AS4.0 ,minicom,arm-linux开发环境,内核版本2.6.24 3.为编译配置所需的内核。 注意:.config 文件是默认的内核配置文件,我们在编译内核模块之前需要先把内核配置 成默认配置。当然还可以根据其他相关平台的配置文件,在其基础上用make menuconfig 进 一步配置生成目标配置文件; 配置完成并保存退出,产生.config 文件.
基于GEC2440的嵌入式linux
LED 实验

嵌入式led控制实验报告

嵌入式led控制实验报告嵌入式LED控制实验报告引言:嵌入式系统是一种集成了计算机硬件和软件的特殊计算机系统,广泛应用于各个领域,包括家电、汽车、医疗设备等。

而LED(Light Emitting Diode)则是一种半导体器件,可以将电能转化为光能。

在嵌入式系统中,LED的控制是一项重要的实验,本文将介绍嵌入式LED控制的实验过程和结果。

实验目的:本次实验的目的是通过嵌入式系统控制LED灯的亮灭,进一步理解嵌入式系统的工作原理以及学习如何编写相应的程序。

实验器材和方法:实验器材包括嵌入式开发板、LED灯、电源和连接线。

实验方法如下:1. 将LED灯连接到嵌入式开发板的GPIO引脚上;2. 使用开发板提供的编程软件,编写控制LED灯亮灭的程序;3. 将程序下载到开发板中;4. 运行程序,观察LED灯的亮灭情况。

实验结果:经过实验,LED灯可以根据程序的控制实现亮灭的变化。

通过改变程序中GPIO 引脚的电平状态,可以控制LED灯的亮灭。

例如,将GPIO引脚的电平设置为高电平,LED灯将亮起;将GPIO引脚的电平设置为低电平,LED灯将熄灭。

实验分析:本次实验的结果表明,嵌入式系统可以通过编写相应的程序来控制外部设备,如LED灯。

这是因为嵌入式系统中的GPIO引脚可以通过改变电平状态来控制外部设备的工作。

在本实验中,通过将GPIO引脚的电平设置为高电平或低电平,可以控制LED灯的亮灭。

嵌入式系统中的GPIO引脚是一种通用输入输出引脚,可以通过编程来控制其电平状态。

在实际应用中,可以将GPIO引脚连接到各种外部设备上,如传感器、电机等,通过改变引脚的电平状态,实现对外部设备的控制。

嵌入式系统的优势之一是其实时性和可靠性。

在本实验中,LED灯的亮灭可以实时响应程序的控制指令,没有明显的延迟。

这使得嵌入式系统在需要对外部设备进行快速响应的应用中具有优势,如工业自动化、智能家居等。

此外,嵌入式系统还具有较小的体积和低功耗的特点。

嵌入式ARM键盘控制LED灯实验报告

实验六键盘控制LED灯实验1实验目的(1) 通过实验掌握中断式键盘控制与设计方法;(2) 熟练编写S3C2410中断服务程序。

2 实验设备(1) S3C2410嵌入式开发板,JTAG仿真器。

(2) 软件:PC机操作系统Windows XP,ADS1.2集成开发环境,仿真器驱动程序,超级终端通讯程序。

3 实验内容编写中断处理程序,处理一个键盘中断,并在串口打印中断及按键显示信息。

4 实验步骤(1) 参照模板工程,新建一个工程keypad,添加相应的文件,并修改keypad 的工程设置;(2) 创建keypad.c并加入到工程keypad中;(3) 编写键盘中断程序;参考代码如下:①串口初始化程序void uart_init()/* UART串口初始化*/{GPHCON |= 0xa0; //GPH2,GPH3 used as TXD0,RXD0GPHUP = 0x0; //GPH2,GPH3内部上拉ULCON0 = 0x03; //8N1UCON0 = 0x05; //查询方式为轮询或中断;时钟选择为PCLKUFCON0 = 0x00; //不使用FIFOUMCON0 = 0x00; //不使用流控UBRDIV0 = 26; //波特率为57600,PCLK=12Mhz}②发送数据while( ! (UTRSTAT0 & TXD0READY) );UTXH0 = c;③接收数据while( ! (UTRSTAT0 & RXD0READY) );return URXH0;④打印数据int i = 0;while( str[i] ){putc( (unsigned char) str[i++] );}return i;⑤按键初始化int key_init()/* 按键初始化*/{GPFCON = 0x55aa;GPFUP = 0xff;printk("按键初始化OK\r\n");return 0;}⑥中断初始化void irq_init()/* 中断初始化*/{INTMSK &= ~(3<<2);printk("中断初始化OK\r\n");}(5) 编译keypad;(6) 运行超级终端,选择正确的串口号,并将串口设置位:波特率(115200)、奇偶校验(None)、数据位数(8)和停止位数(1),无流控,打开串口;(7) 运行程序,在超级终端中输入的数据将回显到超级终端上,结果如图5.4所示:图6.1 初始化运行结果图6.2 main运行结果5 实验总结通过这次实验我巩固了上次实验的串口的使用方法,串口初始化、发送数据和接收数据,同时也熟悉了中断的处理过程,即保护现场、中断处理、恢复现场并返回。

嵌入式课程三个实验结合

嵌入式课程三个实验结合
这是一个嵌入式课程的三个实验结合的示例:
1. LED闪烁控制实验
说明:在这个实验中,我们将使用C语言编程控制LED灯闪烁。

实验步骤:
- 连接电路:将LED连接到开发板的GPIO口。

- 编写程序:在开发板上使用C语言编写程序,使LED从亮到灭闪烁。

- 调试程序:在开发板上运行程序,观察LED是否从亮到灭闪烁。

- 利用按键控制LED闪烁频率:使用按键来控制LED闪烁的频率。

例如,按下按键后,闪烁频率变快,再按下按键后,闪烁频率变慢。

2. 蜂鸣器控制实验
说明:在这个实验中,我们将使用C语言编程控制蜂鸣器发出声音。

实验步骤:
- 连接电路:将蜂鸣器连接到开发板的GPIO口。

- 编写程序:在开发板上使用C语言编写程序,使蜂鸣器发出声音。

- 调试程序:在开发板上运行程序,听取蜂鸣器发出的声音。

- 利用按键控制蜂鸣器的声音:使用按键来控制蜂鸣器发出的声音。

例如,按下按键后,蜂鸣器发出高频声音,再按下按键后,蜂鸣器发出低频声音。

3. 温度传感器实验
说明:在这个实验中,我们使用温度传感器来测量环境温度。

实验步骤:
- 连接电路:将温度传感器连接到开发板的GPIO口。

- 编写程序:在开发板上使用C语言编写程序,读取温度传感器测量到的环境温度,并将其显示在开发板上。

- 调试程序:在开发板上运行程序,并读取显示温度的值。

- 利用LED显示温度:使用LED来显示温度。

例如,当温度达到一定值时,LED会亮起来,表示环境温度过高或过低。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档