1猪哥234 2015-09-27 02:30 采纳率: 0%
浏览 2048

dm642的串口中断程序的配置问题

 我在用dm642的开发板,通过TL16C752B 实现485串口通信,现在需要一个串口中断程序。
   自己也做了一些工作,比如asm的配置,用的是vector 5 , 
     程序中,用的是,irq_evt_extint5, 
    也配置好了,752的寄存器,比如ier=0x03,mcr=0x08;fcr=0x57;lcr=0x03;
    但是,就是触发不了中断,不知道为什么?求帮助。
    同时,对如何触发串口中断也存在疑问。大家帮我看一下吧,555,我实在是没辙了,不知道原因在哪啊。
    /********************************************************************/

/* Copyright 2006 by VisionMagic Ltd. /
/
All rights reserved. Property of VisionMagic Ltd. /
/
Restricted rights to use, duplicate or disclose this code are /
/
granted through contract. /
/
*******************************************************************/
#include
#include
#include
#include
#include

#include
#include

#include "vmd642.h"
#include "vmd642_uart.h"

/*VMD642-A的emifa的设置结构*/
EMIFA_Config g_dm642ConfigA ={
0x00052078,/*gblctl EMIFA(B)global control register value /
/
将CLK6、4、1使能;将MRMODE置1;使能EK2EN,EK2RATE*/
0xffffffd3,/*cectl0 CE0 space control register value*/
/*将CE0空间设为SDRAM*/
0x73a28e01,/*cectl1 CE1 space control register value*/
/*Read hold: 1 clock;
MTYPE : 0000,选择8位的异步接口
Read strobe :001110;14个clock宽度
TA:2 clock; Read setup 2 clock;
Write hold :2 clock; Write strobe: 14 clock
Write setup :7 clock
-- ---------------
\ 14c /1c
----------------/ /
0x22a28a22, /*cectl2 CE2 space control register value
/
0x22a28a42, /*cectl3 CE3 space control register value*/
0x57116000, /*sdctl SDRAM control register value*/
0x0000081b, /*sdtim SDRAM timing register value*/
0x001faf4d, /*sdext SDRAM extension register value*/
0x00000002, /*cesec0 CE0 space secondary control register value*/
0x00000002, /*cesec1 CE1 space secondary control register value*/
0x00000002, /*cesec2 CE2 space secondary control register value*/
0x00000073 /*cesec3 CE3 space secondary control register value*/
};

VMD642_UART_Config g_uartConfig ={
0x03,/*寄存器IER*/
0x57,/*寄存器FCR*/
0x03,/*寄存器LCR*/
0x08,/*寄存器MCR*/
};

extern far void vectors();

VMD642_UART_Handle g_uartHandleA;
Uint16 cout=0;
char* p_RT485 = (char*)0x9008001D;

void main()
{

// int cnt = 0, total = 0;

/*-------------------------------------------------------*/
/* perform all initializations */

EMIFA_config(&g_dm642ConfigA);


//Initialise CSL

CSL_init(); 


    g_uartHandleA = VMD642_UART_open(VMD642_UARTB, 
                                      UARTHW_VMD642_BAUD_9600, 
                                      &g_uartConfig);

IRQ_setVecs(vectors);




IRQ_globalEnable();




IRQ_nmiEnable();





IRQ_map(IRQ_EVT_EXTINT5, 5);



//Reset the timer events

IRQ_reset(IRQ_EVT_EXTINT5);
IRQ_enable(IRQ_EVT_EXTINT5);

/*----------------------------------------------------------*/
/*EMIFA的初始化,将CE0设为SDRAM空间,CE1设为异步空间
注,DM642支持的是EMIFA,而非EMIF*/
/*----------------------------------------------------------*/
/*中断向量表的初始化*/

// GPIO_RSET(GPGC, 0x0);

/*将GPIO5做为输入*/

// GPIO_RSET(GPDIR, 0x00);

/*GPIO0输出为高,选择IIC0总线*/

// GPIO_RSET(GPPOL, 0x0);
// GPIO_RSET(GPVAL, 0x0);

// GPIO_RSET(GPEN, 0x20); //shineng GPIO5

/*----------------------------------------------------------*/
/*测试串口A*/
/* Open UART */

while(1){
*p_RT485 = 1;
VMD642_UART_putChar(g_uartHandleA, (cout++&0xff));
VMD642_waitusec(200);}
}

interrupt void Uartio(void)
{

Uint16 tmp=0;

   *p_RT485 = 0;
   tmp=VMD642_UART_getChar(g_uartHandleA);
   VMD642_waitusec(20);
   printf("%d\n",tmp);

printf("i am here \n");
VMD642_waitusec(10);
return;

}

  • 写回答

1条回答 默认 最新

  • 1猪哥234 2015-09-27 02:35
    关注

    在线等,急!!!!!

    评论

报告相同问题?

悬赏问题

  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面