微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM9基础教程lessen2—定时器

ARM9基础教程lessen2—定时器

时间:11-24 来源:互联网 点击:

  1. void Timer0_init()
  2. {
  3. TCFG0 = 119; //配置定时器0,1的预分频值
  4. TCFG1 = 0x03; //配置定时器0分频值
  5. TCNTB0 = 3125; //计数缓存寄存器
  6. TCMPB0 = 0; //比较缓存寄存器
  7. TCON |= (1<1); //手动更新位且配置反相器位(开/关)(手动更行位将TCNTBn和TCMPBn的值分别给TCNTn和TCMPn寄存器)
  8. TCON = 0x09; //定时器使能并自动重载
  9. }

复制代码

? 定时器报警实验
♥ 实验设备
硬件: PC机 一台
YX-AIO嵌入式综合创新设计平台 一台
ARM9核心板 一块
软件: Windows操作系统,ADS1.2集成开发环境,H-JTAG下载环境

♥ 实验内容
使用定时器延时方式控制YX-AIO嵌入式综合创新设计平台上的蜂鸣器报警。

♥ 实验步骤
① 在ADS开发环境中使用ARM9_S3C2440工程模版创建一个工程,并将程序代码添加到该工程;
② 在ADS开发环境中编译链接并生成目标文件;
③ 将JTAG下载器连接YX-AIO嵌入式综合创新设计平台,并将该平台通电;
④ 开启H-JTAG软件检测处理器与NOR-Flash;
⑤ 使用H-JTAG软件将目标文件(.bin)下载到YX-AIO嵌入式综合创新设计平台上;
⑥ 复位平台。

源代码:

  1. voidDelayMS(U32dly)
  2. {
  3. U32 time_val;
  4. rTCFG0 = 3; //配置定时器0,1的预分频值
  5. rTCFG1 = 0<4; //配置定时器1分频值
  6. time_val = PCLK/ (3+1) / 2 / 1000 - 1; // 1ms = PCLK / prescaler / divider / 1000
  7. rTCNTB1 = time_val; //计数缓存寄存器
  8. rTCMPB1 = time_val>>1; // 50%
  9. rTCON &= ~(0xf<8); //手动更新位且配置反相器位(开/关)
  10. rTCON |= 0xb<8; //定时器使能并自动重载
  11. rTCON &= ~(2<8); //clear manual update bit
  12. while(dly--)
  13. {
  14. while(rTCNTO1>=time_val>>1);
  15. while(rTCNTO1>1);
  16. }
  17. }
  18. void Main(void)
  19. {
  20. //----------------添加自己的代码-------------------
  21. rGPACON &= ~(1<16);
  22. while (1)
  23. {
  24. rGPADAT |= (1<16);
  25. DelayMS(1000);
  26. rGPADAT &= ~(1<16);
  27. DelayMS(500);
  28. }
  29. }


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top