登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

轻松入门开发ARM程序(为初学者写的入门手册)-12-

作者:liuq 栏目:MCU技术
轻松入门开发ARM程序(为初学者写的入门手册)-12-
2.几个主要程序的功能介绍
建立一个最小结构的ARM项目,至少需要以下几个程序:
    71x_init.s
    71x_vect.s
    71x_it.c
    71x_it.h
    71x_map.h
    main.c
其中71x_init.s是启动程序。71x_vect.s生成中断向量表即段INTVEC。71x_it.c存放中断服务程序,该文件只列出函数框架,用户根据需要填写服务程序内容。main是主函数。我们在前面介绍EWARM时举的例子STR710-LED就是一个最简单结构的ARM应用例子。请注意,在71x_it.c文件中的定时器中断服务程序中添加了以下内容:
U32 counter=1;                              // 在文件开始时定义全局变量counter

void T1TIMI_IRQHandler(void)
{
TIM1->SR &= ~0x2000;                      // 清除TIM1 中断标志
GPIO2->PD = GPIO2->PD <<1 ;              // 轮流开通和关闭LED显示
counter++;
if (counter>4)
{counter=1;
GPIO2->PD = 0x0800; }
}
其主程序如下:
#include "71x_map.h"
int main(void)
{
  EIC->SIR[19] |= 0x00000001;               // 配置通道19的优先级
  EIC->IER |= 1<<19;                        // 开放通道19的中断
EIC->ICR |= 0x00000001;                  // 允许中断
// 把GPIO2 配置成Push-Pull OUTPUT模式
  GPIO2->PC0 = 0xFFFF ;
  GPIO2->PC1 = 0x0000 ;
  GPIO2->PC2 = 0xFFFF ;
  GPIO2->PD = 0x0800  ;                   // 复位引脚
  // 配置 TIM1
  TIM1->CR2 &= ~0x2000;
  TIM1->CR2  = 0x2009;
  TIM1->CR1  = 0x8000;
  TIM1->CNTR = 0xFFFF;
  while(1);                                  // 无限循环
}

启动运行上面的简单程序后,STR71-EVAL评估板上的4个发光二极管LD11,LD12,LD13 和LD14无限循环点亮。LED的轮流点亮是中断服务程序T1TIMI_IRQHandler中执行的。而定时器1的配置和启动是在主程序main中完成的。大家注意,上述程序中用到结构指针TIM1、EIC和GPIO,这些都是在71x_map.h文件中定义的。我们在后面将对其做进一步介绍。


参与讨论
昵称:
讨论内容:
 
 
相关帖子
轻松入门开发ARM程序(为初学者写的入门手册)-11-
str9 快速AD, 支持单周期的DSP指令
我是新手,请教ST7SCR单片机的问题,请帮忙啊
我用ST72F324系列单片机,用什么仿真器
3.3V的STR71x系列ARM,其IO不完全是可以承受5V电压的
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号