导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→ARM7定时器的问题

* 6080: ARM7定时器的问题

   gaix 
gaix发表的帖子 

 ARM7定时器的问题
请教大侠们一个ARM7定时器的问题:
源程序如下
#include "config.h"

#define BEEP  1   <  < 7 /* P0.7控制BEEP,低电平蜂鸣  */

/*
*********************************************************************************************************
** 函数名称 :IRQ_Timer0()
** 函数功能 :定时器0中断服务程序,取反LED9控制口。
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************
*/
void __irq IRQ_Timer0 (void)
{
 if ((IO0SET & BEEP) == 0)
  IO0SET = BEEP;   /* 关闭BEEP          */
 else
  IO0CLR = BEEP;
 
 T0IR = 0x01;    /* 清除中断标志         */
 VICVectAddr = 0x00;   /* 通知VIC中断处理结束       */
}

/*
*********************************************************************************************************
** 函数名称 :main()
** 函数功能 :使用定时器实现1秒钟定时,控制LED9闪烁。中断方式。
** 调试说明 :需要将跳线JP11连接BEEP。
*********************************************************************************************************
*/
int main (void)
{
 PINSEL1 = 0x00000000;   /* 设置管脚连接GPIO       */
 IO0DIR  = BEEP;     /* 设置BEEP控制口输出      */
 
 IRQEnable();     /* IRQ中断使能        */
 
 /* 定时器0初始化 */
 T0TC   = 0;   /* 定时器设置为0          */
 T0PR   = 0;   /* 时钟不分频           */
 T0MCR  = 0x03;  /* 设置T0MR0匹配后复位T0TC,并产生中断标志    */
 T0MR0  = Fpclk / 2; /* 0.5秒钟定时           */
 T0TCR  = 0x01;  /* 启动定时器           */
 
 /* 设置定时器0中断IRQ */
 VICIntSelect = 0x00;    /* 所有中断通道设置为IRQ中断   */
 VICVectCntl0 = 0x20 | 0x04;   /* 设置定时器0中断通道分配最高优先级 */
 VICVectAddr0 = (uint32)IRQ_Timer0; /* 设置中断服务程序地址     */
 VICIntEnable = 1   <  < 0x04;   /* 使能定时器0中断      */

 
 while (1);
    return 0;
}
我试着把while(1)语句屏蔽了,程序仍能实现功能“蜂鸣器每秒蜂鸣一次”,不知是怎么回事?

发表时间:2007年7月14日14:20:32

  
回复该帖

本主题共有 2 帖,分页:>>>>>该主题的所有内容[2]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  6406.[详细]定时器设好就不变了
摘要:你为什么要屏蔽掉whilie(1);呢 。......(33字)
- [哈佛][1223次] 2007年7月16日

[上一篇帖子]:长期优惠供应S3C2440开发板,欢迎咨询 基于S3C2440A的开发平台——[B]AT24
[下一篇帖子]:供应AX88796网卡芯片本处有大量AX88796LF 有需要请联系