嵌入式实验二_第1页
嵌入式实验二_第2页
嵌入式实验二_第3页
嵌入式实验二_第4页
嵌入式实验二_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于 systick秒表的实现一、实验目的学会编写中断程序学会应用lm3s9b92 的 systick 系统时钟节拍计数器。二、实验设备计算机、 lm3s9b92开发板、 usb a型公口转mini b 型 5pin 数据线 1 条三、实验原理systick 是一个简单的系统时钟节拍计数器,它属于arm cortex-m3内核嵌套向量中断控制器 nvic里的一个功能单元, 而非片内外设。 systick 常用于操作系统 (如:c/os -ii、 freertos等)的系统节拍定时。由于 systick 是属于 arm cortex-m3内核里的一个功能单元,因此使用systick 作为操作系统

2、节拍定时,使得操作系统代码在不同厂家的arm cortex-m3 内核芯片上都能够方便地进行移植。当然,在不采用操作系统的场合下systick完全可以作为一般的定时/计数器来使用。systick 是一个 24位的计数器,采用倒计时方式。systick 设定初值并使能后,每经过1个系统时钟周期,计数值就减1。计数到 0时, systick 计数器自动重装初值并继续运行,同时申请中断,以通知系统下一步做何动作。四、实验要求应用 systick系统时钟节拍计数器进行计时,实现秒表功能。开发板上的按键sw1起秒表的起始和停止作用,按下sw1键,表示秒表的启动,开始计时,再按下sw1键,则表示秒表的停止

3、。秒表时间的显示,可以采用led1 灯的闪烁方式,或者直接显示在液晶屏上。五、实验代码#include systeminit.h #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 unsigned char count=

4、0; unsigned char flag=0; void led(unsigned int n) / 根据 n 值控制 led闪烁次数 while(n0) gpiopinwrite(led_port, led_pin, 0 xff); / 点亮led sysctldelay(150 * (thesysclock / 3000); / 延时约150ms gpiopinwrite(led_port, led_pin, 0 x00); / 熄灭led sysctldelay(850 * (thesysclock / 3000); / 延时约850ms n=n-1; int main(void) /

5、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 所在管脚为输入systickperiodset(8000 * (thesysclock / 3000);

6、 / 设置systick 计数器的周期值systickintenable( ); / 使能systick 中断gpiointtypeset(key_port, key_pin, gpio_low_level); / 设置key 管脚的中断类型gpiopinintenable(key_port, key_pin); / 使能key 所在管脚的中断intenable(int_gpioj); / 使能gpioj 端口中断intmasterenable( ); / 使能处理器中断for (;) / systick 计数器的中断服务函数void systick_isr(void) count+; / 计

7、数器加 1 return; / gpioj 的中断服务函数void gpio_port_j_isr(void) unsigned char ucval; unsigned long ulstatus; intmasterdisable( ); / 关闭中断ulstatus = gpiopinintstatus(key_port, true); / 读取中断状态gpiopinintclear(key_port, ulstatus); / 清除中断状态,重要if (ulstatus & key_pin) / 如果key 的中断状态有效 if(flag=0) systickenable( ); / 使能systick 计数器flag=1; sysctldelay(50 * (thesysclock / 3000); else if(flag=1) systickdisable( ); / 关闭systick 计数器flag=0; led(count); / 闪烁 led count=0; / 计数置零sysctldelay(10 * (thesysclock / 3000); intm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论