版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一起学mini2440裸机开发(十一-mini2440定时器0中断实验在前边讲解系统时钟和定时器时,曾给出一个实验,实现的功能是:使用定时器0的功能,使LED每秒钟闪烁一次,当时是使用查询方式实现的,现在使用中断方式实现上述功能。 下图为我的工程文件布局: 下面贴出我的代码,你也可以去这里下载, 下载下来之后,直接编译,点击Flash/Download ,下载到nor flash中运行。 main.c文件#include"led.h"
2、;#include"timer.h"#include"isrservice.h"#include"interrupt.h"unsigned int flag=0;int main( Led_Init(; /初始化LED Timer0_Init(;
3、;/定时器0初始化 Timer0_Interrupt_Init(; /定时器0中断初始化 while(1 /循环,等待中断发生 if(flag Led2_On(; else
4、; Led2_Off(; led.c文件 /* 我的mini2440开发板上4个LED灯对应的GPIO口* LED1-GPB5 LED2-GPB6* LED3-GPB7 LED4-GPB8*/#include /* 函数名称:void Led_Init(void* 全局变量:无 * 参数说明:无* 返 回
5、 值;无* 功 能:设置GPB5-8为输出功能,初始化4个LED灯灭*/void Led_Init(void GPBCON&=(3<<10|(3<<12|(3<<14|(3<<16; GPBCON|=(1<<10|(1<<12|(1<<14|(1<<16; /设置GPB5-8口为输出功能 GPBUP&=(1<<5|(1<<6|(1<
6、<7|(1<<8; /上拉电阻使能 GPBDAT|=(1<<5|(1<<6|(1<<7|(1<<8; /令GPBDAT5-8均为高电平,即令4个led灯全灭 led.h文件#ifndef _LED_H_#define _LED_H_#include #define Led1_On( GPBDAT&=(1<<5;#define Led1_Off( GPBDAT|=(1&
7、lt;<5;#define Led2_On( GPBDAT&=(1<<6;#define Led2_Off( GPBDAT|=(1<<6;#define Led3_On( GPBDAT&=(1<<7;#define Led3_Off( GPBDAT|=(1<<7;#define Led4_On( GPBDAT&=(1<<8;#define Led4_Off(
8、; GPBDAT|=(1<<8;/* 函数名称:void Led_Init(void* 全局变量:无 * 参数说明:无* 返 回 值;无* 功 能:设置GPN5-8为输出功能,初始化4个LED灯灭*/void Led_Init(void;#endif timer.c文件#include /s3c2440.h对S3C2440芯片的一些地址的宏定义#include"timer.h"/* 函数名称:void Timer0_Init(void
9、* 参数说明:无* 全局变量:无* 返 回 值:无* 功 能:对于50MHz的PCLK,经过分频获得62.5KHz的定时器0* 的输入时钟。*/void Timer0_Init(void TCFG0&=(0xff; /设置第1级分频系数,分频系数为99 TCFG0|=99; TCFG1&=(0xf; /设置第2级分频系数,分频系数为8 TCFG1|=0x02;&
10、#160; /62.5KHz=50MHz/(99+1/8 TCNTB0=62500; /1s中断一次。经过上述分频器得到定时器0的输入时钟频率为62.5kHz,即定时器 /每秒钟计数62500次。因此,初始化时,定时器0计数值初始值为62500
11、 /在这里我们可以看出TCMPBn没有设置,因为咱们用它的默认值0,所以就不需要设置 TCON|=(1<<1; /开启手动更新位,即当定时器开启后,TCMPB0和TCNTB0中的值会加载到寄存器TCMP0和TCNT0中 TCON=0x09; /关闭手动更新位,设置自动加载位,同时开启定时器,这样,TCNT0进行减1计数,当TCNT0中的计
12、160; /数值减到0时,TCNTB0、TCMPB0中的数据分别会自动加载到TCNT0、TCMP0中并进行新一轮的减1计数 timer.h文件#ifndef _TIMER_H_#define _TIMER_H_/* 函数名称:void Timer0_Init(void* 参数说明:无* 全局变量:无* 返 回 值:无* 功 能:对于50MHz的PCLK,经过分频获得62.5KHz的定时器0* 的
13、输入时钟。*/void Timer0_Init(void;#endif interrupt.c文件#include #include"interrupt.h"/* 函数名称:void Timer0_Interrupt_Init(void* 全局变量:无 * 参数说明:无* 返 回 值;无* 功 能:将定时器0中断屏蔽位设为无效*/void Timer0_Interrupt_Init(void INTMSK&=(1<<10;
14、60; /将定时器0中断屏蔽位设为无效,这样当 /定时器0发生中断时,中断请求信号可以
15、 /顺利到达CPU interrupt.h文件#ifndef _INTERRUPT_H_#define _INTERRUPT_H_/* 函数名称:void Timer0_Interrupt_Ini
16、t(void* 全局变量:无 * 参数说明:无* 返 回 值;无* 功 能:将定时器0中断屏蔽位设为无效*/void Timer0_Interrupt_Init(void;#endif isrservice.c文件#include #include"isrservice.h"extern unsigned int flag; /声明外部变量flag,该变量是在main.c文件中定义的
17、0; /当1s到来时,中断响应函数将该变量值取反,在主
18、60; /程序中通过检测该变量的值来实现不同的操作/* 函数名称:void _irq IRQ_Handler(void * 全局变量:无 * 参数说明:无* 返 回 值;无* 功 能:定时器0中断服务函数,必须加_irq*/void _irq IRQ_Handler(void /注意这个函数名字要和S3C2440.s处的跳转标号相同 flag=!flag; /1s时间到,flag值取反 SRCPND|=1<<10; /清除中断标志位 INTPND|=1<<10;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年主题班会设计与组织实施技巧
- 2026年中医养生与亚健康调理健康讲座
- 2026年农村旧房改造施工组织设计与进度计划
- 2025湖北省中考道德与法治真题(原卷版)
- 2026年铁路营业线施工安全管理细则
- 2026年酒店香氛系统选择与布置
- 2026年老年再婚情感服务市场初探
- 上海立达学院《安检设备原理与维修》2025-2026学年第一学期期末试卷(B卷)
- 2026年认知行为疗法治疗失眠手册
- 2026年小学道德与法治公开课教案
- 2025年北京服装学院教师招聘考试真题库附答案
- 国际道路运输安全生产管理制度文本
- 财务成本管理注册会计师考试试题与参考答案(2025年)
- 导学案课件设计
- 脑卒中后肩痛的发病机制和治疗
- 搬迁设备安全培训课件
- 乒乓球反手推挡教学课件
- 膀胱结石的护理查房
- 上海市杨浦区2024-2025学年(五四学制)七年级下学期期末语文试题(含答案)
- 风电场整定计算书
- 地理(江苏南京卷)(考试版)
评论
0/150
提交评论