嵌入式 实验5 RTC实验
- 格式:doc
- 大小:82.00 KB
- 文档页数:12
《嵌入式操作系统》实验报告班级计算机学号姓名指导教师庄旭菲内蒙古工业大学信息工程学院计算机系2018年6月实验一 Linux内核移植与编译实验1. 实验目的了解 Linux 内核相关知识与内核结构了解 Linux 内核在 ARM 设备上移植的基本步骤和方法掌握 Linux 内核裁剪与定制的基本方法2. 实验内容分析 Linux 内核的基本结构,了解 Linux 内核在 ARM 设备上移植的一些基本步骤及常识。
学习 Linux 内核裁剪定制的基本配置方法,利用 UP-Magic210 型设备配套 Linux 内核进行自定义功能(如helloworld 显示)的添加,并重新编译内核源码,生成内核压缩文件 zImage,下载到 UP-Magic210 型设备中测试。
3. 实验步骤实验目录:/UP-Magic210/SRC/kernel/编译内核:在宿主机端为UP-Magic210 设备的Linux 内核编写简单的测试驱动(内核)程序并修改内核目录中相关文件,添加对测试驱动程序的支持。
(1)、使用 vim 编辑器手动编写实验代码内如如下:#include <linux/>#include <linux/>MODULE_LICENSE("Dual BSD/GPL");(3)、进入实验内核源码目录修改 driver/char/目录下的 Makefile 文件,按照内核中Makefile 语法添加 helloworld程序的编译支持[root@localhost vi drivers/char/Makefile在 Makefile 中(大约在 91 行)添加如下一行obj-$(CONFIG_TOSHIBA) +=obj-$(CONFIG_I8K) +=obj-$(CONFIG_DS1620) +=obj-$(CONFIG_HW_RANDOM) += hw_random/obj-$(CONFIG_HELLO_MODULE) +=obj-$(CONFIG_PPDEV) +=(4)、运行 make menuconfig 配置内核对 helloworld 程序的支持:[root@localhost make distclean[root@localhost make menuconfig先加载内核配置单,如图:然后进入到 Device Drivers --->菜单中如图:进入到 Character devices--->如图:进入该菜单会发现[ ] Hello World Test 选项,按下空格将其静态编译进内核退出保存内核配置(5)、重新编译内核在内核源码的顶层目录下编译内核[root@localhost makescripts/kconfig/conf -s arch/arm/KconfigCHK include/linux/CHK include/generated/make[1]:“include/generated/”是最新的。
CVT6410按键中断实验一、实验目的1. 熟悉RVDS2.2开发环境。
2. 掌握S3C6410内部相关寄存器的操作方法,最终实现对外部设备的控制。
3. 熟悉在ARM裸机环境下的C语言编程。
4. 熟悉S3C6410按键中断的原理以及编程。
二、实验内容建立RVDS开发环境。
利用按键中断实现对开发板上发光二极管LED的跑马灯控制。
三、实验设备1. 硬件:CVT6410教学实验箱、PC机;2. 软件:PC机操作系统Windows 98(2000、XP) +RVDS开发环境。
3. JLINK仿真器。
四、基础知识中断的基本概念:CPU与外设之间传输数据的控制方式通常有三种:查询方式、中断方式和DMA方式。
查询方式的优点是硬件开销小,使用起来比较简单。
但在此方式下,CPU要不断地查询外设的状态,当外设未准备好时,CPU就只能循环等待,不能执行其它程序,这样就浪费了CPU的大量时间,降低了CPU的利用率。
为了解决这个矛盾,通常采用中断传送方式:即当CPU进行主程序操作时,外设的数据已存入输入端口的数据寄存器;或端口的数据输出寄存器已空,由外设通过接口电路向CPU发出中断请求信号,CPU在满足一定的条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后CPU再返回并继续执行原来被中断的主程序。
这样CPU就避免了把大量时间耗费在等待、查询状态信号的操作上,使其工作效率得以大大地提高。
能够向CPU 发出中断请求的设备或事件称为中断源。
系统引入中断机制后,CPU 与外设(甚至多个外设)处于“并行”工作状态,便于实现信息的实时处理和系统的故障处理。
中断方式的原理示意图如下所示。
图5-7 中断处理示意图1)中断响应中断源向CPU发出中断请求,若优先级别最高,CPU在满足一定的条件下,可以中断当前程序的运行,保护好被中断的主程序的断点及现场信息。
然后,根据中断源提供的信息,找到中断服务子程序的入口地址,转去执行新的程序段,这就是中断响应。
一、实验背景嵌入式系统在现代工业、消费电子、智能家居等领域扮演着越来越重要的角色。
为了让学生深入了解嵌入式系统的设计原理和开发过程,提高学生的实践能力和创新精神,我们开设了嵌入式实训课程。
本次实验报告将针对实训课程中的部分实验进行总结和分析。
二、实验目的1. 掌握嵌入式系统的基本原理和开发流程。
2. 熟悉嵌入式开发工具和环境。
3. 熟练使用C语言进行嵌入式编程。
4. 学会调试和优化嵌入式程序。
三、实验内容本次实训课程共安排了五个实验,以下是每个实验的具体内容和实验步骤:实验一:使用NeoPixel库控制RGB LED灯带1. 实验目的:学习使用NeoPixel库控制RGB LED灯带,实现循环显示不同颜色。
2. 实验步骤:(1)搭建实验平台,连接NeoPixel LED灯带。
(2)编写程序,初始化NeoPixel库,设置LED灯带模式。
(3)通过循环,控制LED灯带显示不同的颜色。
实验二:使用tm1637库控制数码管显示器1. 实验目的:学习使用tm1637库控制数码管显示器,显示数字、十六进制数、温度值以及字符串,并实现字符串滚动显示和倒计时功能。
2. 实验步骤:(1)搭建实验平台,连接tm1637数码管显示器。
(2)编写程序,初始化tm1637库,设置显示模式。
(3)编写函数,实现数字、十六进制数、温度值的显示。
(4)编写函数,实现字符串滚动显示和倒计时功能。
实验三:使用ds18x20库和onewire库读取DS18B20温度传感器的数据1. 实验目的:学习使用ds18x20库和onewire库读取DS18B20温度传感器的数据,并输出温度值。
2. 实验步骤:(1)搭建实验平台,连接DS18B20温度传感器。
(2)编写程序,初始化ds18x20库和onewire库。
(3)编写函数,读取温度传感器的数据,并输出温度值。
实验四:使用ESP32开发板连接手机热点,并实现LED1作为连接指示灯1. 实验目的:学习使用ESP32开发板连接手机热点,并通过LED1指示灯显示连接状态。
嵌入式技术及应用实验报告嵌入式技术及应用实验报告一、实验目的本实验旨在通过学习嵌入式技术及应用,掌握嵌入式系统的基本原理和应用方法,培养学生的嵌入式系统设计和开发能力。
二、实验内容1. 嵌入式系统的概念和特点2. 嵌入式系统的硬件平台和软件开发环境3. 嵌入式系统的应用案例分析4. 嵌入式系统的设计和开发实践三、实验原理1. 嵌入式系统的概念和特点嵌入式系统是一种专门设计用于特定应用领域的计算机系统,它通常由硬件和软件两部分组成。
嵌入式系统的特点包括:实时性要求高、资源受限、功耗低、体积小、成本低等。
2. 嵌入式系统的硬件平台和软件开发环境嵌入式系统的硬件平台通常由处理器、存储器、输入输出设备等组成。
常用的处理器有ARM、MIPS等,存储器包括RAM、ROM、Flash等,输入输出设备有键盘、显示器、传感器等。
嵌入式系统的软件开发环境包括编译器、调试器、仿真器等工具。
3. 嵌入式系统的应用案例分析嵌入式系统广泛应用于各个领域,如智能手机、汽车电子、医疗设备、工业控制等。
以智能手机为例,它是一种集成了通信、计算、娱乐等功能的嵌入式系统,通过操作系统和应用软件实现各种功能。
4. 嵌入式系统的设计和开发实践嵌入式系统的设计和开发包括硬件设计和软件开发两个方面。
硬件设计主要包括电路设计、PCB设计等,软件开发主要包括驱动程序开发、应用程序开发等。
在设计和开发过程中,需要考虑系统的性能、可靠性、安全性等因素。
四、实验步骤1. 学习嵌入式系统的概念和特点,了解嵌入式系统的基本原理。
2. 学习嵌入式系统的硬件平台和软件开发环境,掌握常用的处理器、存储器和输入输出设备。
3. 分析嵌入式系统的应用案例,了解不同领域的嵌入式系统的设计和开发方法。
4. 进行嵌入式系统的设计和开发实践,包括硬件设计和软件开发两个方面。
5. 调试和测试嵌入式系统,验证系统的功能和性能。
6. 总结实验结果,撰写实验报告。
五、实验结果与分析通过本次实验,我对嵌入式系统的概念和特点有了更深入的了解。
目录嵌入式系统实践实验报告1(使用GCC编译C语言程序) (1)嵌入式系统实践实验报告2(Linux 中通过minicom串口下载程序) (14)嵌入式系统实践实验报告1五、实验结果与分析(含程序、数据记录及分析和实验总结等):图5-1 实验结果截图1图5-2 实验结果截图2图5-3 实验结果截图3 图5-4 实验结果截图4图5-5 实验结果截图5 图5-6 实验结果截图6图5-7 实验结果截图7 图5-8 实验结果截图8图5-9 实验结果截图9图5-10 实验结果截图10本次实验按照实验步骤进行,完全符合实验要求,达到了实验预期。
嵌入式系统实践实验报告2二、实验环境:硬件:Mini6410嵌入式实验平台。
软件:PC机操作系统CentOS+Minicom+Arm-Linux 交叉编译环境。
图2-1 嵌入式开发板顶视图四、实验步骤:1.建立工作目录图4-1此时我们新建的hello工作目录,在home目录下,已出现,说明,我们此次操作成功(这里我们要注意,记清楚自己在创建目录时,所在的位置),如下图所示:图4-2编写程序源代码在Linux 下的文本编辑器有许多,常用的是vi 和Xwindow界面下的gedit 等,我们在开发过程中推荐使用vi。
hello.c 源代码较简单,如下:/*****hello.c*****/#include <stdio.h>int main(){printf("Hello,World!\n");return0;}我们可以是用下面的命令来编写hello.c 的源代码,进入hello 目录使用vi 命令来编辑代码(如果不会使用vi命令来编辑,我们也可以使用gedit命令来编辑hello.c文件,命令为:gedithello.c)vi命令中常用命令有: esc i :wq :q!图4-3按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按Esc 键进入命令状态,再用命令“:wq”保存并退出。
《嵌入式系统原理与应用》实验报告实验序号:5 实验项目名称:定时器实验11计算机学号XXX 姓名XX 专业、班实验地点实验楼1#416 指导教师XX 实验时间2013-5-10一、实验目的1. 掌握LPC2200 专用工程模板的使用;2. 熟悉LPC2000 系列ARM7 微控制器的VIC的使用;3. 熟悉LPC2000 系列ARM7 微控制器的定时器的控制。
二、实验设备(环境)及要求硬件:PC机;软件:PC机操作系统windows XP,ADS1.2集成开发环境,Proteus软件。
三、实验内容与步骤实验内容:设置P0.2 脚为GPIO 功能,外接一个LED灯。
配置并初始化ARM的定时器0,并使能定时器中断,中断服务程序在2秒钟将LED灯控制输出信号取反,然后清除中断标志并退出中断。
四、实验结果与数据处理1.实验效果截图2.源程序#include "config.h"void __irq Timer0_ISR(void) {if((IO0SET&0x00000004)==0) IO0SET=0x00000004;elseIO0CLR=0x00000004;T0IR=0x01;VICVectAddr=0;}int main (void){PINSEL0&=0xFFFFFFCF;IO0DIR |=0x00000004;T0TC=0;T0PR=0;T0MCR=0x03;T0MR0=Fpclk/2.5;T0TCR=0x01;VICIntSelect=VICIntSelect&(~(1<<4)); VICVectCntl0=0x20|4;VICVectAddr0=(uint32)Timer0_ISR; VICIntEnable=(1<<4);}3.流程图开始设置Timer0_ISR函数定时器0定时中五、分析与讨论又忘了打开中断开关。
还有就是取反操作中IO0SET不能为IO0PIN不然会一直亮,这个比较不能理解,又是虚拟环境问题。
嵌入式系统实验指导书襄樊学院物理与电子信息学院实验要求1.进入实验室前完成的部分1)认真阅读实验指导书,弄懂实验原理和实验内容。
2)编写实验所要用到的程序,将其放在U盘上。
3)写出预习报告。
2. 进入实验室后完成的部分1)建立工程,加入已准备好的程序文件。
2)对程序进行调试,修改错误,获得要求的结果。
3)保存调试后的程序。
3.实验结束后的部分对实验结果进行分析、总结,写出实验报告。
实验报告内容及格式1.实验目的2.实验设备3.实验原理及环境4.实验内容只做文字叙述,程序部分放在程序清单中。
流程图也可不画。
5.程序清单本实验使用的完整程序。
如果使用了本实验或前面实验中完全相同的子程序,可不列写,只做注明即可。
6.实验步骤7.实验总结主要包括对实验结果、调试过程、错误及产生的原因的分析,以及本次实验的重要收获等。
此项为实验成绩评定的重要依据。
实验1 Keil C51的使用(汇编语言)实验目的:初步掌握Keil C51(汇编语言)和ZY15MCU12BD型综合单片机实验箱的操作和使用,能够输入和运行简单的程序。
实验设备:ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装Keil C51的计算机一台。
实验原理及环境:在计算机上已安装Keil C51软件。
这个软件既可以与硬件(ZY15MCU12BD型综合单片机实验箱)连接,在硬件(单片机)上运行程序;也可以不与硬件连接,仅在计算机上以虚拟仿真的方法运行程序。
如果程序有对硬件的驱动,就需要与硬件连接;如果没有硬件动作,仅有软件操作,就可以使用虚拟仿真。
实验内容:1.掌握软件的开发过程:1)建立一个工程项目选择芯片确定选项。
2)加入C 源文件或汇编源文件。
3)用项目管理器生成各种应用文件。
4)检查并修改源文件中的错误。
5)编译连接通过后进行软件模拟仿真。
6)编译连接通过后进行硬件仿真。
2.按以上步骤实现在P1.0输出一个频率为1Hz的方波。
嵌入式系统原理与应用实验指导书南航金城学院2013.2目录目录 (1)第一部分试验箱硬件结构 (2)第二部分实验 (11)实验一ADS1.2集成开发环境练习 (11)实验二汇编指令实验1 (17)实验三汇编指令实验2 (20)实验四汇编指令实验3 (23)实验五ARM微控制器工作模式实验 (28)实验六 C语言程序实验 (33)实验七 C语言调用汇编程序实验 (36)实验八GPIO输出控制实验 (39)实验九GPIO输入实验 (46)实验十外部中断实验 (50)实验十一UART通讯实验 (56)实验十二I2C接口实验 (64)实验十三定时器实验 (75)实验十四PWM DAC实验 (81)实验十五ADC实验 (87)实验十六RTC实验 (94)实验十七步进电机控制实验 (101)实验十八直流电机控制实验 (105)附录1 DeviceARM2410 专用工程模板 ..................................................... 错误!未定义书签。
第一部分试验箱硬件结构MagicARM2410教学实验开发平台是一款可使用μC/OS-II、Linux和WinCE操作系统、支持QT、MiniGUI图形系统、集众多功能于一身的ARM9教学实验开发平台。
采用Samsung公司的ARM920T内核的S3C2410A微处理器,扩展有充足的存储资源和众多典型的嵌入式系统接口。
MagicARM2410实验箱参考如图1.1所示。
图1.1 MagicARM2410实验箱外观图MagicARM2410实验箱功能框图如图1.2所示。
图1.2 MagicARM2410实验箱功能框图1.1 S3C2410A芯片简介S3C2410A是Samsung公司推出的16/32位RISC处理器(ARM920T内核),适用于手持设备、POS机、数字多媒体播放设备等等,具有低价格、低功耗、高性能等特点。
嵌入式rtc原理
嵌入式RTC(Real-TimeClock,实时时钟)是一种在嵌入式系统中广泛使用的时间计数器。
它通常用于计算时间、日期以及时钟周期等。
与其他计数器不同的是,RTC能够在系统关闭后继续计数,使得下一次系统启动时能够准确地获取上一次关闭时的时间信息。
RTC由计数器电路、时钟振荡器和电池等部分组成。
计数器电路负责计算时间,时钟振荡器则提供时钟信号,而电池则保证了RTC在系统关闭时依然能够继续计数。
在使用RTC时,需要根据具体的应用场景设置好计数器的起始时间和日期,并利用相关的软件算法来实现准确的时间计数和时钟同步等功能。
由于嵌入式RTC在许多领域都有广泛应用,如智能家居、自动化控制、工业监控等,因此深入了解嵌入式RTC的原理和功能对于开发嵌入式系统具有重要意义。
- 1 -。
嵌入式rtc工作原理
嵌入式RTC(实时时钟)是一种集成在微控制器芯片中的时钟芯片,用于提供计时和日期功能。
它具有以下特点:
1. 精度高:嵌入式RTC可以提供非常高的计时精度,通常在几
秒内的误差范围内。
2. 低功耗:由于它集成在微控制器中,因此不需要额外的电路,整个系统的功耗也相对较低。
3. 可编程:嵌入式RTC可以通过寄存器进行编程,以便设置日
期和时间,闹钟和定时器等功能。
4. 独立电源:嵌入式RTC通常具有独立的电源,以便在主电源
关闭时继续计时。
嵌入式RTC通常使用晶体振荡器作为计时基准。
晶体振荡器是一种高精度的时钟源,它利用晶体的固有振荡频率来提供稳定的时钟信号。
在嵌入式RTC中,晶体振荡器通常工作在32.768 kHz的频率下,这是因为它是常用的时钟芯片的标准频率。
嵌入式RTC的工作原理如下:晶体振荡器提供一个稳定的时钟信号,该信号经过分频器后变成可用于计时的时间单元,例如秒、分、小时等。
计时器计算经过的时间,并将其存储在寄存器中。
同时,时钟芯片还可以提供闹钟和定时器功能,以便在特定时间触发外部事件。
总结来说,嵌入式RTC是一种高精度、低功耗、可编程、具有独立电源的时钟芯片,其工作原理是利用晶体振荡器提供稳定的时钟信号,通过计时器和寄存器实现计时和日期功能,并提供闹钟和定时器
等功能。
学号:08083572班级:信科08-3 姓名:刘俊迪专业:电子信息科学与技术实验五:uC/OS-II内核移植实验1.实验目的:⏹了解uC/OS-II内核的基本原理和主要结构⏹掌握将uC/OS-II内核移植到ARM处理器上的基本方法⏹掌握uC/OS-II下基本多任务应用程序的编写2.实验内容:学习uC/OS-II再ARM处理器上的移植过程编写简单的多任务应用程序,同时实现跑马灯和数码管显示的功能3.实验原理:(1)uC/OS-II的移植1、汇编语言、C语言代码需要移植2、移植工作集中在多任务切换的实现上3、在ARM处理器上的移植,需要完成的工作包括:修改三个和体系结构相关的文件,代码量大约是500行。
这三个文件是OS_CPU_C.c、OS_CPU_C.H以及OS_CPU_A.S(2)OS_CPU.H的移植1、数据类型定义INT8U -> unsigned charINT8S -> signed charINT16U -> unsigned shortINT16S -> signed shortINT32U -> unsigned intINT32S -> signed int2、ARM处理器相关宏定义退出临界区#define OS_ENTER_CRITICAL() ARMDisableInt()进入临界区#define OS_EXIT_CRITICAL() ARMEnableInt()3、堆栈增长方向堆栈由高地址向低地址增长,这个也是和编译器有关的,当进行函数调用时,入口参数和返回地址一般都会保存在当前任务的堆栈中,编译器的编译选项和由此生成的堆栈指令就会决定堆栈的增长方向。
#define OS_STK_GROWTH 1(3)OS_CPU.c的移植1、任务堆栈初始化1、由OSTaskCreate或OSTaskCreateExt调用2、用来初始化任务的堆栈并返回新的堆栈指针stk。
嵌⼊式实验报告讲解⽬录实验⼀跑马灯实验 (1)实验⼆按键输⼊实验 (3)实验三串⼝实验 (5)实验四外部中断实验 (8)实验五独⽴看门狗实验 (11)实验七定时器中断实验 (13)实验⼗三 ADC实验 (15)实验⼗五 DMA实验 (17)实验⼗六 I2C实验 (21)实验⼗七 SPI实验 (24)实验⼆⼗⼀红外遥控实验 (27)实验⼆⼗⼆ DS18B20实验 (30)实验⼀跑马灯实验⼀.实验简介我的第⼀个实验,跑马灯实验。
⼆.实验⽬的掌握STM32开发环境,掌握从⽆到有的构建⼯程。
三.实验内容熟悉MDK KEIL开发环境,构建基于固件库的⼯程,编写代码实现跑马灯⼯程。
通过ISP 下载代码到实验板,查看运⾏结果。
使⽤JLINK下载代码到⽬标板,查看运⾏结果,使⽤JLINK在线调试。
四.实验设备硬件部分:PC计算机(宿主机)、亮点STM32实验板、JLINK。
软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。
五.实验步骤1.熟悉MDK KEIL开发环境2.熟悉串⼝编程软件ISP3.查看固件库结构和⽂件4.建⽴⼯程⽬录,复制库⽂件5.建⽴和配置⼯程6.编写代码7.编译代码8.使⽤ISP下载到实验板9.测试运⾏结果10.使⽤JLINK下载到实验板11.单步调试12.记录实验过程,撰写实验报告六.实验结果及测试源代码:两个灯LED0与LED1实现交替闪烁的类跑马灯效果,每300ms闪烁⼀次。
七.实验总结通过本次次实验我了解了STM32开发板的基本使⽤,初次接触这个开发板和MDK KEILC 软件,对软件操作不太了解,通过这次实验了解并熟练地使⽤MDK KEIL软件,⽤这个软件来编程和完成⼀些功能的实现。
作为STM32 的⼊门第⼀个例⼦,详细介绍了STM32 的IO⼝操作,同时巩固了前⾯的学习,并进⼀步介绍了MDK的软件仿真功能。
实验⼆按键输⼊实验⼀.实验简介在实验⼀的基础上,使⽤按键控制流⽔灯速度,及使⽤按键控制流⽔灯流⽔⽅向。
嵌入式系统实验报告一、实验目的本次嵌入式系统实验的主要目的是深入了解嵌入式系统的基本原理和开发流程,通过实际操作和项目实践,提高对嵌入式系统的设计、编程和调试能力。
二、实验设备与环境1、硬件设备嵌入式开发板:_____计算机:_____调试工具:_____2、软件环境操作系统:_____开发工具:_____编译环境:_____三、实验内容1、基础实验熟悉开发板的硬件结构和接口,包括处理器、存储器、输入输出端口等。
学习使用开发工具进行程序编写、编译和下载。
2、中断实验了解中断的概念和工作原理。
编写中断处理程序,实现对外部中断的响应和处理。
3、定时器实验掌握定时器的配置和使用方法。
利用定时器实现定时功能,如周期性闪烁 LED 灯。
4、串口通信实验学习串口通信的协议和编程方法。
实现开发板与计算机之间的串口数据传输。
5、 ADC 转换实验了解 ADC 转换的原理和过程。
编写程序读取 ADC 转换结果,并进行数据处理和显示。
四、实验步骤1、基础实验连接开发板与计算机,打开开发工具。
创建新的项目,选择合适的芯片型号和编译选项。
编写简单的程序,如控制 LED 灯的亮灭,编译并下载到开发板上进行运行和调试。
2、中断实验配置中断相关的寄存器,设置中断触发方式和优先级。
编写中断服务函数,在函数中实现相应的处理逻辑。
连接外部中断源,观察中断的触发和响应情况。
3、定时器实验初始化定时器相关的寄存器,设置定时器的工作模式和定时周期。
在主程序中启动定时器,并通过中断或查询方式获取定时时间到达的标志。
根据定时标志控制 LED 灯的闪烁频率。
4、串口通信实验配置串口相关的寄存器,设置波特率、数据位、停止位等参数。
编写发送和接收数据的程序,实现开发板与计算机之间的双向通信。
使用串口调试助手在计算机上进行数据收发测试。
5、 ADC 转换实验配置 ADC 模块的相关寄存器,选择输入通道和转换精度。
启动 ADC 转换,并通过查询或中断方式获取转换结果。
实验名称:嵌入式系统开发与调试实验日期:2021年10月15日实验地点:实验室一、实验目的1. 熟悉嵌入式系统的基本组成和原理。
2. 掌握嵌入式系统开发的基本流程和工具。
3. 学习嵌入式系统调试的方法和技巧。
4. 提高实际操作能力,为以后从事嵌入式系统开发打下基础。
二、实验内容1. 嵌入式系统概述2. 嵌入式系统开发环境搭建3. 嵌入式系统编程4. 嵌入式系统调试三、实验步骤1. 嵌入式系统概述(1)了解嵌入式系统的定义、特点和应用领域。
(2)分析嵌入式系统的组成,包括硬件、软件和中间件。
(3)学习嵌入式系统的分类,如按处理器架构、操作系统和应用领域等。
2. 嵌入式系统开发环境搭建(1)安装开发工具,如Keil、IAR等。
(2)搭建硬件开发平台,如STM32、ARM等。
(3)配置开发环境,包括编译器、链接器、调试器等。
3. 嵌入式系统编程(1)学习C语言编程,掌握基本语法和数据结构。
(2)学习嵌入式系统编程技巧,如中断、定时器、串口通信等。
(3)编写示例程序,如LED控制、按键检测等。
4. 嵌入式系统调试(1)学习调试器的基本操作,如设置断点、单步执行、观察变量等。
(2)掌握调试技巧,如逻辑分析、代码优化等。
(3)调试示例程序,找出并修复程序中的错误。
四、实验结果与分析1. 嵌入式系统概述(1)掌握了嵌入式系统的定义、特点和应用领域。
(2)了解了嵌入式系统的组成,包括硬件、软件和中间件。
(3)熟悉了嵌入式系统的分类,如按处理器架构、操作系统和应用领域等。
2. 嵌入式系统开发环境搭建(1)成功搭建了Keil开发环境。
(2)完成了STM32硬件开发平台的搭建。
(3)配置了编译器、链接器、调试器等开发工具。
3. 嵌入式系统编程(1)掌握了C语言编程基本语法和数据结构。
(2)学会了嵌入式系统编程技巧,如中断、定时器、串口通信等。
(3)编写了LED控制、按键检测等示例程序,并成功运行。
4. 嵌入式系统调试(1)熟悉了调试器的基本操作,如设置断点、单步执行、观察变量等。
嵌入式系统实验报告实验题目:嵌入式系统设计与开发实验时间:2021年10月10日实验地点:实验室一号机房实验目的:通过完成嵌入式系统的设计与开发实验,掌握嵌入式系统的基本原理和开发方法。
实验设备:ARM开发板、电脑、网络连接器、编程软件、USB数据线等实验步骤:1. 配置开发环境将ARM开发板与电脑通过USB数据线连接,并安装相应的开发软件,包括编程软件和编译器。
2. 设计嵌入式系统根据实验要求和功能需求,设计嵌入式系统的硬件和软件部分。
确定所需的传感器、执行器和其他硬件模块,并设计系统的软件架构。
3. 开发嵌入式系统编写系统的底层驱动程序,包括对各个硬件模块的控制和通信。
使用C语言或汇编语言进行编程,并进行编译和调试。
4. 系统测试与调试将开发板与相应的传感器和执行器连接,并进行系统测试。
通过调试程序代码,确保系统的各个功能正常运行。
5. 性能优化与扩展根据实际的需求和性能要求,对系统进行优化和扩展。
可以优化程序的运行效率、增加系统的功能模块等。
实验结果:经过一段时间的设计、开发和调试,我成功地完成了嵌入式系统的设计与开发。
该系统具有以下功能:1. 实时监测温度和湿度,并将数据实时显示在LCD屏幕上。
2. 当温度或湿度超过设定阈值时,系统会自动发出警报并记录异常。
3. 根据用户的输入,可以手动控制执行器的开关状态。
实验总结:通过本次实验,我对嵌入式系统的设计和开发有了更深入的了解。
我学到了如何在嵌入式系统中进行硬件和软件的协同设计,以及如何使用相应的开发工具进行开发和调试。
通过不断实践和调试,我也提高了自己的问题解决能力和编程能力。
在以后的学习和工作中,我将继续学习和探索嵌入式系统的更多知识,并应用于实际项目中。
嵌⼊式实验报告_电⼦钟实验报告电⼦钟实验报告班级电⼦班学号******* 姓名**实验名称电⼦钟⼀、设计⽬标和要求:1、理解rtc模块的结构,并掌握rtc的配置和读写操作。
2、学习使⽤UC GUI。
3、对⽆操作系统的应⽤,设计任务的切换和协调运⾏。
4、完成考核要求:①驱动RTC模块,设置和读取RTC时间(在液晶上⽤⽂字显⽰当前时间,年⽉⽇、星期⼏、时分秒)。
②添加液晶绘图函数,在液晶上绘制电⼦表表盘。
③设计任务,添加ucos2操作系统。
添加任务1(时间设置、报警闹钟设置和绘图参数)和任务2(绘制表盘),并协调2个任务。
④通过UC GUI丰富图形界⾯(添加GUI任务,添加对应任务的图像窗⼝)。
⼆、实验环境:硬件:嵌⼊式开发平台、JTAG仿真器、PC机、嵌⼊式系统实验箱,串⼝线。
软件: WinXP、RVDS集成开发环境、仿真器驱动程序、超级终端通讯程序。
三、设计思路和实现步骤、内容:1、设计思路:(1)⽤函数画出⼀个时钟表盘,写出实时的时间。
⾸先,定义边⾓点坐标,确定屏幕范围;接着,⽤清屏函数清屏;然后,⽤ILI93××程序画图,定义⼀点作为中⼼坐标,画⼀个确定半径的为R的圆;最后画三条直线,分别为秒针、分针、时针(都是使⽤坐标来确定的)。
(2)实现对时间的更改功能,并可以将更改过的时间赋值给现实的时间。
STM32中RTC模块计数器,秒针每次+1,每次+1后,秒针指向下⼀个刻度的时候,上⼀个刻度的位置⽤清屏函数清掉,然后重新画好指针;(3)⽤时钟来控制⼀个闹钟时间,中断后让液晶做出相应的反应。
在源程序中加⼊UCOS2操作系统,在系统中进⾏时间设置,报警和闹钟等等功能。
2、程序流程图:3、具体实现程序:1、主程序int main(void){KEY_Init();Stm32_Clock_Init(9);//系统时钟设置delay_init(72); //延时初始化uart_init(72,9600); //串⼝1初始化LED_Init();LCD_Init();RTC_Init();EXTIX_Init();DrawClock();while(1){if(alarmflag==1)//闹钟标志Alarm(); //闹钟显⽰elseTimeshow(); //时间显⽰if(set==1) //设置时间标志{LCD_Clear(WHITE);Set_timeshow(); //设置时间}}}时钟、led、lcd、rtc初始化后,进⼊⼀个死循环,如果没有进⼊闹钟中断,就开始时钟显⽰,按下第⼀个使能按键后,进⼊第⼆个界⾯,开始时间更改,然后再返回更改值。
嵌入式rtc工作原理
嵌入式RTC是一种非常常见的嵌入式系统设备,其作用是为设备提供精确的时间戳和定时功能。
RTC的全称是Real Time Clock,即
实时时钟。
它是一种独立的硬件设备,具有自己的电源和晶体振荡器,可以在设备关闭时继续运行。
RTC的主要功能是提供精确的日期和时间,并能够进行定时操作,如设置定时器、闹钟等。
RTC的工作原理是通过晶体振荡器产生一个稳定的高精度时钟信号,该信号被送至RTC芯片内的计数器进行计数。
由于晶体振荡器的高精度,RTC可以提供高精度的时间戳。
同时,RTC还会内置一个电池,用于在设备关闭时维持其内部的时间计数器和RAM内存中的数据。
在实际应用中,嵌入式RTC可以被用于各种场合,如电子表格、计时器、数据记录等。
例如,在一些工业控制系统中,RTC可以被用于记录设备的状态和故障信息,以便后续进行分析和维护。
此外,RTC 还可以被用于车载电子系统中,以精确地记录车辆行驶时间、里程等信息。
总之,嵌入式RTC是一种功能强大、应用广泛的嵌入式系统设备,具有高精度、稳定性和可靠性等优点。
它的应用范围非常广泛,包括工业控制系统、车载电子系统等各个领域。
- 1 -。
嵌入式系统实验报告安卓闹钟的实现学院电信专业电科学生姓名实验台号指导教师提交日期年月日一、实验目的综合前面几次实验以及自主学习的知识,做一个小应用,体验安卓应用的开发过程二、实验内容实现一个简单的闹钟程序所具备功能有:显示系统当前时间,添加或者删除闹钟,能够设置在一定时间间隔内重复响起的闹钟。
三、实验原理AlarmManagerAlarmManager是安卓中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent。
简单的说就是我们设定一个时间,然后在该时间到来时,AlarmManager 为我们广播一个我们设定的Intent,通常我们使用PendingIntent。
设置闹钟设置一次性的闹钟(闹钟不会重复响起)public void set(int type, long triggerAtTime, PendingIntent operation)type:表示要设置的alarm类型。
triggerAtTime:表示alarm“理应激发”的时间。
operation:指明了alarm闹铃激发时需要执行的动作,比如执行某种广播通告。
设置重复响起的闹钟public void setRepeating(int type, long triggerAtTime, long interval,PendingIntent operation) 其参数基本上和set()函数差不多,只是多了一个“时间间隔”参数。
事实上,在AlarmManager Service一侧,set()函数内部也是在调用setRepeating()的,只不过会把interval 设成了0。
闹钟的类型AlarmManager. ELAPSED_REALTIME:表示闹钟在手机睡眠状态下不可用,该状态下使用相对时间(相对于系统启动开始),状态值为3;AlarmManager. ELAPSED_REALTIME_WAKEUP:表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下也使用相对时间,状态值为2;AlarmManager. RTC:表示闹钟在睡眠状态下不可用,该状态下闹钟使用绝对时间内,即当前系统时间,状态值为1;AlarmManager. RTC_W AKEUP:表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟使用绝对时间,状态值为0;AlarmManager.POWER_OFF_WAKEUP:表示闹钟在手机关机状态下也能正常进行提示功能,所以是5个状态中用的最多的状态之一,该状态下闹钟也是用绝对时间,状态值为4;不过受SDK版本的影响,某些版本不支持。
实验5-1 实时时钟设计实验1、实验目的了解S3C2410A 的实时时钟硬件控制原理及设计方法。
掌握S3C2410A 的实时时钟的使用方法2、实验内容编程实现实时时钟功能,每秒显示实时时钟实现实时时钟Alarm,控制蜂鸣器3、实验设备GEC2410 开发板ADS1.2 集成开发环境,ARM 仿真器、串口连接线4、实验原理实时时钟(RTC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号和参数设置存储电路。
RTC 具有计时准确、耗电低和体积小的特点,特别是在各种嵌入式系统中用于记录事件发生的时间和相关信息,如通信工程、电力自动化、工业控制等自动化程度高的领域无人职守环境。
随着集成电路技术的不断发展,RTC 器件的新品也不断推出,这些新品不仅具有准确的RTC,还有大容量的存储器、温度传感器和A/D 数据采集通道等。
4.1 S3C2410A 实时时钟模块介绍S3C2410A 实时时钟单元模块在系统电源掉电的时候可以通过备份电源来完成供电。
RTC 提供8bit 时间数据。
其中包括秒、分、时、日、星期、月、年等时间信息。
RTC 要有外部晶振提供32.768kHZ 的外部时钟。
RTC 也可以提供闹钟定时的功能。
1.特点:BCD 数字,:秒、分、时、日、星期、月、年.定时功能。
解除了千年虫的问题。
独立的电源引脚支持毫秒时钟2.读/写寄存器访问RTC 模块的寄存器,首先要设RTCCON 的bit0 为1,CPU 通过读取RTC 模块中寄存器BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDMON 和BCDYEAR 的值,得到当前的相应时间值,然而,由于多个寄存器依次读出,所以有可能产生错误。
例如:用户依次读取年(18)、月(12)、日(31)、时(23)、分(59)、秒(59)。
当秒数为1 到59时没有任何问题,但是当秒数为0 时,但前时间和日期就变成了19 年1 月1 日0 时0 分。
这种情况下(秒数为0),用户应该重新读取年份到分钟的值。
3.闹钟功能RTC 在制定的时间产生报警信号,包括CPU 工作在正常模式和休眠模式(power off)下,在正常工作模式下,报警中断信号(ALMINT)被激活。
在休眠模式,报警中断信号和唤醒信号(PMWKUP)同时被激活。
RTC 报警寄存器(RTCALM)决定报警功能的使能/ 屏蔽和完成报警时间检测。
4.时间片中断RTC 时间片中断用于中断请求。
寄存器TICNT 有一个中断使能位和中断计数。
中断计数自动递减,当达到0 时,则产生中断,中断周期按照下列公式计算:Period=(n+1)/128 second其中,n 为RTC 时钟中断计数,课取值1~1274.2 实时时钟的寄存器实时时钟的特殊寄存器主要有RTC控制寄存器(RTCCON)、TICK计数寄存器(TICNT)、RTC 定时寄存器(RTCALM)还有6 个定时时间寄存器和7 个BCD 时间寄存器。
主要时用来设置时间常数和读取当前的时间。
在具体应用的过程中主要时注意三个控制寄存器的应用:RTCCON――实时时钟控制寄存器这个寄存器中比较关键的是RTCEN 位,这一位用来使能RTC 模块时间寄存器的读写,在对RTC 的寄存器操作之前一定要把这一位置1,在系统电源关闭的时候这一位要置0,用来防止对寄存器的误操作。
TICNT ――Tick 时钟计数寄存器这个寄存器主要时来控制产生实时时钟中断的频率,可以设置的频率是1 到128。
寄存器中还有一位是中断使能位。
BCDSEC――BCD 秒数据寄存器BCDMIN――BCD 分数据寄存器BCDGOUR――BCD 小时数据寄存器BCDDATE――BCD 日数据寄存器BCDDAY――BCD 星期数据寄存器BCDMON――BCD 月数据寄存器BCDYEAR――BCD 年数据寄存器RTCALM ――RTC 定时控制寄存器这个寄存器用来使能定时功能。
在这个寄存器中可以对年、月、日、分、秒等时间信息分别定时控制,可以最大限度满足用户的需求。
ALMSEC――闹钟秒数据寄存器ALMMIN――闹钟分钟数据寄存器ALMHOUR――闹钟小时数据寄存器ALMDATE――闹钟日数据寄存器ALMMON――闹钟月份寄存器ALMYEAR――闹钟年份数据寄存器5、程序实现5.1 设置闹钟时间void setRTCalm(U8 almyear,U8 almmon,U8 almdate,U8 almhour,U8 almmin,U8 almsec)//年、月、日、时、分、秒{ rRTCCON=0x0001;rALMYEAR = almyear;rALMMON = almmon;rALMDATE = almdate;rALMHOUR = almhour;rALMMIN = almmin;rALMSEC = almsec;rRTCCON = 0; //disable RTC write}5.2 设置时钟时间void setRTCtime(U8 wRTCyear,U8 wRTCmon,U8 wRTCdate,U8 wRTCday,U8 wRTChour,U8 wRTCmin,U8 wRTCsec)//年、月、日、星期、时、分、秒{rRTCCON=0x01;rBCDYEAR = wRTCyear;rBCDMON = wRTCmon;rBCDDATE = wRTCdate;rBCDDAY = wRTCday;rBCDHOUR = wRTChour;rBCDMIN = wRTCmon;rBCDSEC = wRTCsec;rRTCCON = 0x00; //disable RTC write}5.3 时钟和闹钟的开关操作//开实时时钟void OpenRtc(void){pISR_TICK=(unsigned)Tick_Isr;rTICNT=0xFF;//Tick time interrupt enable;Tick time count value=127EnableIrq(BIT_TICK);//open RTC TICK INTERRUPT}//关实时时钟void CloseRtc(void){rTICNT &= ~(1<<7);DisableIrq(BIT_TICK);}//开闹钟函数void OpenAlarm(){pISR_RTC = (unsigned)IsrAlarm;ClearPending(BIT_RTC);rRTCALM = (0x7f); //enable alarmEnableIrq(BIT_RTC);}//关闹钟函数void CloseAlarm(void){rRTCALM = 0; //disable alarmDisableIrq(BIT_RTC);}5.4 利用实时时钟中断,显示当前时间void __irq Tick_Isr(void){Get_Rtc();Uart_Printf("RTC TIME : %4x-%02x-%02x - %s –%02x:%02x:%02x\n",year,month,date,week[weekday],hour,min,sec); ClearPending(BIT_TICK);}void Get_Rtc(void){rRTCCON = 0x01; //RTC 读写使能,选择BCD 时钟、计数器,无复位,1/32768 if (rBCDYEAR == 0x99)year = 0x1999;elseyear = 0x2000 + rBCDYEAR;month=rBCDMON;date=rBCDDATE;weekday=rBCDDAY;hour=rBCDHOUR;min=rBCDMIN;sec=rBCDSEC;rRTCCON = 0x0; //RTC 读写禁止,选择BCD 时钟、计数器,无复位,1/32768 }5.5 实时时钟闹钟中断void __irq IsrAlarm(void){ClearPending(BIT_RTC);Uart_Printf("s3c244A RTCALM oucer \n");enable_beep = 0;CloseAlarm();}5.6 主程序void xmain(void){ChangeClockDivider(3,1);ChangeMPllValue(0xa1,0x3,0x1); //Uart_Init(0, 115200);Uart_Select(0);Uart_Printf("the main is running\n");setRTCalm(06,04,15,1,5,1);//年、月、日、时、分、秒setRTCtime(06,04,15,2,1,4,29);//年、月、日、星期、时、分、秒OpenAlarm();OpenRtc();while(1);}6、实验步骤1. 连接好实验环境.2. 将串口线一端接到PC 机,另一端接到GEC2410 的UART0 接口(即P1 口);打开串口超级终端dnw.exe,设置串口Baud Rate 为115200,选择COM1。
3. 重起GEC2410,开发板会执行flash 中的BIOS 程序,选择GEC2410_RTC 目录下的可执行映象文件GEC2410_RTC.bin 将该文件下载到SDRAM。
4. 下载结束后,会提示是否要立即运行,这时输入“Y”,执行GEC2410_RTC.bin。
5. 在dnw 中观察实验结果。
7、实验要求(1)利用ticktime中断,控制LED灯每1s变化一次,并显示当前时间。
#include "2410lib.h"#include "2410addr.h"#include "def.h"#define GPFCON *(volatile unsigned int *)0x56000050#define GPFDAT *(volatile unsigned int *)0x56000054#define GPFUP *(volatile unsigned int *)0x56000058int i;int year;int month,date,weekday,hour,min,sec;void __irq RTC_ISR(void);/******************************************************************** Function name: Rtc_InitParameter : voidDescription : 实时时钟初始化程序Return : voidArgument : 设置当前时钟Autor & date :********************************************************************* /void Rtc_Init(void) //年、月、日、星期、时、分、秒{rRTCCON=1;rBCDYEAR=0x18;rBCDMON=0x05;rBCDDATE=0x30;rBCDDAY=0x03;rBCDHOUR=0x15;rBCDMIN=0x20;rBCDSEC=0x00;rRTCCON=0;}/******************************************************************** Function name: Display_RtcParameter : voidDescription : 实时时钟显示程序Return : voidArgument : 读出当前的时间,然后显示Autor & date :********************************************************************* /void Get_Rtc(void){rRTCCON=1;year = 0x2000 + rBCDYEAR;month=rBCDMON;date=rBCDDATE;weekday=rBCDDAY;hour=rBCDHOUR;min=rBCDMIN;sec=rBCDSEC;rRTCCON=0;}/******************************************************************** *******Function name: MainParameter : voidDescription : 初始化系统,串口,并调用RTC实验函数Return : voidArgument :Autor & date :********************************************************************* *******/void xmain(void){ChangeClockDivider(1,1);ChangeMPllValue(0xa1,0x3,0x1);Port_Init();Uart_Select(0);Uart_Init(0,115200);Uart_Printf("s3c2410x RTC Test\n");Rtc_Init(); //实时时钟初始化ClearPending(BIT_TICK); //Tick中断初始化EnableIrq(BIT_TICK);pISR_TICK=(unsigned)RTC_ISR;rTICNT=0xff;while(1);}/******************************************************************** *****/void __irq RTC_ISR(void){char *week[8] = { "","SUN","MON", "TUES", "WED", "THURS","FRI", "SAT" } ;ClearPending(BIT_TICK);i++;Get_Rtc(); //读时间并显示Uart_Printf("RTC TIME : %04x-%02x-%02x - %s- %02x:%02x:%02x\n",year,month,date,week[weekday],hour,min,sec);rGPFDAT=0xff;if(i==1) //控制LED灯状态变化rGPFDAT=0x00;Delay(5000);rGPFDAT=0xff;Delay(5000);rGPFDAT=0x00;}(2)利用报警中断,使启动2分钟后报警(蜂鸣器响)#include "2410lib.h"#include "2410addr.h"#include "def.h"char *week[8] = { "","SUN","MON", "TUES", "WED", "THURS","FRI", "SAT" } ; int year,month,date,weekday,hour,min,sec;int enable_beep = 1;extern void Buzzer_PWM_Run(void);void __irq Alarm_Isr(void);void __irq Tick_Isr(void);void Buzzer_Stop( void ){rGPBCON |= 1;rGPBCON = rGPBCON & ~3|1; //set GPB0 as outputrGPBDAT &= ~1;//output 0}void setRTCalm(U8 almyear,U8 almmon,U8 almdate,U8 almhour,U8 almmin,U8 almsec)//设置ALARM 时间{rRTCCON = 0x0001;rALMYEAR = almyear;rALMMON = almmon;rALMDATE = almdate;rALMHOUR = almhour;rALMMIN = almmin;rALMSEC = almsec;rRTCCON = 0x0000;}void setRTCtime(U8 wRTCyear,U8 wRTCmon,U8 wRTCdate,U8 wRTCday,U8 wRTChour,U8 wRTCmin,U8 wRTCsec)//置时钟时间{rRTCCON = 0x0001;rBCDYEAR = wRTCyear;rBCDMON = wRTCmon;rBCDDATE = wRTCdate;rBCDDAY = wRTCday;rBCDHOUR = wRTChour;rBCDMIN = wRTCmin;rBCDSEC = wRTCsec;rRTCCON = 0x0000;}void OpenRtcTick(void)//open rtc tick, 1s{pISR_TICK = (unsigned)Tick_Isr;rTICNT = 0xff;EnableIrq(BIT_TICK);}void CloseRtcTick(void)//close rtc tick{rTICNT &= ~(1<<7);DisableIrq(BIT_TICK);}void OpenAlarm()//open rtc alarm{pISR_RTC = (unsigned)Alarm_Isr;ClearPending(BIT_RTC);rRTCALM = (0x7f);EnableIrq(BIT_RTC);}void CloseAlarm(void)//close rtc alarm{rRTCALM = 0;DisableIrq(BIT_RTC);}void Get_Rtc(void)// get rtc{rRTCCON = 0x01;if (rBCDYEAR == 0x99)year = 0x1999;elseyear = 0x2000 + rBCDYEAR;month=rBCDMON;date=rBCDDATE;weekday=rBCDDAY;hour=rBCDHOUR;min=rBCDMIN;sec=rBCDSEC;rRTCCON = 0x0;}/****************************************************/ void xmain(void){ChangeClockDivider(1,1);ChangeMPllValue(0xa1,0x3,0x1);Port_Init();Uart_Select(0);Uart_Init(0,115200);Uart_Printf("the main is running\n");setRTCalm(0x18,0x06,0x04,0x15,0x19,0x20); //设置闹钟时间setRTCtime(0x18,0x06,0x04,0x02,0x15,0x17,0x20); //设置系统时间OpenAlarm(); //开启闹钟中断OpenRtcTick(); //开启节拍中断while(1);}void __irq Alarm_Isr(void){ClearPending(BIT_RTC);Uart_Printf("s3c244A RTCALM oucer \n");Buzzer_PWM_Run(); //闹钟响Delay(8000);Buzzer_Stop(); //闹钟不响}void __irq Tick_Isr(void){ClearPending(BIT_TICK);Get_Rtc(); //读时间并显示Uart_Printf("%04x-%02x-%02x %s %02x-%02x-%02x\n",year,month,date,week[weekday],hour,min,sec);}(3)利用菜单实现设时间、读时间、启动闹钟、启动节拍等控制。