|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
轻松入门开发ARM程序(为初学者写的入门手册)-12- |
作者:liuq 栏目:MCU技术 |
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文件中定义的。我们在后面将对其做进一步介绍。 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |