RSS

ARM7与FPGA在工业控制中的应用03

来源:网络 作者:佚名 时间:2008-05-15 Tag:ARM7   FPGA   工业控制   应用   点击:

② 串口命令接收中断服务程序

  #define USART0_INTERRUPT_LEVEL 6//设置中断优先级为6

  #define AT91C_US_USMODE_NORMAL AT91C_US_CHMODE_NORMAL//*设置通信模式(NORMAL定义为异步模式)*//

  AT91PS_USART COM0=AT91C_BASE_US0;//设置COM0为收发口

  char message[4];

  // 控制端串口中断通信程序 //

  //*----------------------------------------------------------------------------*//

  void Usart0_c_irq_handler(AT91PS_USART USART_pt)//串口中断处理函数

  { volatile unsigned int *conp;unsigned int status;

  int time;

  volatile unsigned int i;

  status = USART_pt->US_CSR &USART_pt->US_IMR;//给状态寄存器赋初值

  if ( status &AT91C_US_RXRDY)//接收通道寄存器判断是否有数据

  {

  AT91F_US_DisableIt(USART_pt,AT91C_US_RXRDY);//关闭接收通道准备好中断

  AT91F_US_EnableIt(USART_pt,AT91C_US_ENDRX);//打开接收结束中断

  AT91F_US_ReceiveFrame(USART_pt,(char*)(message),4);//调用接收数据数接收数据

  }

  if ( status &AT91C_US_ENDRX){

  AT91F_US_DisableIt(USART_pt,AT91C_US_ENDRX); // 关闭接收器传送结束中断

  { if((message[0]^0xff)==message[1])//判断接收代码

  {switch (message[0])

  {case 0x31 : {conp=(volatile unsigned int*)(0x1+0x30000000);//OPE1使能

  *conp=0x2;}; break;//0x31代码送往OPE1端口

  case 0x30 : {conp=(volatile unsigned int*)(0x2+0x30000000);//OPE2使能

  *conp=0x1;}; break; // 0x30代码送往OPE2端口

  case 0x11 : {conp=(volatile unsigned int*)(0x3+0x30000000);//OPE3使能

  *conp=0x2;};break;// 0x11代码则往OPE3端口

  case 0x10 : {conp=(volatile unsigned int*)(0x4+0x30000000);//OPE4使能

  *conp=0x1;};break; //0x10代码送往OPE4端口

  default:break;}

  }

  }

  以上程序为串口中断服务程序,各函数语句说明参见注释。中断级别设置为6(高于定时中断),这样使命令发送优先于故障查询(控制命令随机出现而故障查询总是循环进行);接收缓冲区message[4]数组类型必须设为动态分配,静态数据分配会使处理器开辟数据缓冲区到Flash芯片中,从而引发在一个中断处理程序中由于存取时间过长而导致串口收发超时的错误。因为篇幅有限,其他程序不再一一叙述。

  在ARM应用程序的编写中,应该尽量少的在主函数内使用循环操作,主函数主要完成各接口控制器应用初始化,因为主函数不间断循环操作不但会增加功耗,而且长时间频繁切换于中断服务和主循环之间会造成程序运行的不稳定,所以能用定时中断完成的循环操作尽量用中断完成。

  结语

  ARM芯片控制功能结合FPGA灵活的多硬件接口模拟特性在工程上体现出的其独特的优势,已发展为一种流行的硬件架构模式,随着芯片功能的不断强大,这种优势将使其用途更广,对任务处理变得更加灵活高效。


1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.


最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
合作站点