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

问题描述

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
",tmp);

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

}

解决方案

dm642的中断定时器
DM642基于CSL的EDMA配置方法
DM642基于CSL的EDMA配置方法

解决方案二:

在线等,急!!!!!

解决方案三:

还没人看到吗?哎。。

时间: 2024-10-01 03:28:17

dsp-dm642的串口中断程序的配置问题的相关文章

求解答-C语言51单片机串口通信程序求教

问题描述 C语言51单片机串口通信程序求教 #include #include #include #define INBUF_LEN 4 //数据长度 unsigned char inbuf1[INBUF_LEN]; unsigned char checksum,count3; bit read_flag=0; void init_serialcomm(void) { SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr TMOD

嵌入式开发-stm32串口中断和定时器中断冲突

问题描述 stm32串口中断和定时器中断冲突 串口1每1秒给32发一串数据,通过中断接收:串口而是被动的,只有32给他发送数据0x01,它才给32回一串数据,定时器中断产生定时时长,用来发送那个0x01,现在的问题是32在定时器和串口同时工作的情况下,接收到的串口数据有错. 解决方案 用串口调试程序看下是不是数据不完整造成的. 解决方案二: 这个没看到程序不好说 解决方案三: 单片机学习笔记--外部中断,定时器,串口中断STM32串口中断方式接收STM32 串口接收中断 代码

我在写串口通信程序遇到的坑

我在做基于HC6800的51单片机上,写串口通信程序遇到了许多坑. 一个大坑:为什么HC6800上U转串口不能发送数据. 因为我们向HC6800烧程序都是使用图1所示的软件,所以我想当然地认为可以直接通过HC6800上的U转串进行串口通信,而我的同学信誓旦旦地告诉我可以.坑爹.并且这个软件好像也在提示可以用直接用U转串,进行串口通信(见图2).但是当我打开串口调试助手的时候(如图3),却发现单片机掉电了(如图4).其实HC6800上有另一个串口的,我们只要把连接图5黄框处串口.并且在图4中的6处

在CB6下基于api函数编写串口通信程序简介

1-在C++ Builder 6.0下基于api函数编写串口通信程序简介: 在dos/win95/win98的年代,操作系统对串口是不保护的,也就是说将串口的的资源完全开放给用户,用户可以用直接操作硬件的函数(比如说TC2.0下的inport()和outport()函数) 跟串口直接打交道,这时候用户使用直接操作串口的函数怎样"折磨"串口都是没有问题的,操作系统根本就不管不问,对串口操作所造成的一切后果都是用户一个人承担的,这时候用户对串口具有高度自由的支配权:但是,这种情况好景不长,

使用Win32创建串口通讯程序

介绍: 本文的目的是介绍如何在Win32中处理串口.串口通讯可以通过多种技术实现,例如:ActiveX,I/O存取和文件操作.本文介绍Win32平台下通过文件操作技术使用串口.程序员可以使用 Microsoft Visual C++ Version 6.0所提供的kernel32.lib.在Microsoft Windows(2000,Me,XP and 95/98)中,串口作为文件处理.因此可以通过Windows文件创建函数打开串口. 文章不仅介绍了串口通讯,也介绍了在串口通讯应用程序中实现多

控制-自己编的程序运行时串口被程序自己占用,如何用代码强制关闭重新连接?

问题描述 自己编的程序运行时串口被程序自己占用,如何用代码强制关闭重新连接? 我用vs2010基于MFC编一个小程序,其中有一部分是用单片机转USB串口与电脑程序相连.现在问题是: 不小心动了Usb线的话,程序会卡住,在想打开串口会显示串口被占用(就是自己的程序占用).需要把USB线拔下来才能解决问题.求大侠指导,能不能用代码控制,按个软件上的button,就能自动连接上com1. 求大侠指导! 解决方案 结束进程再重启看看行不行.首先要确定卡死不是驱动的问题,如果是驱动的问题,程序就无能为力了

汇编语言 内中断-关于汇编语言中断程序的问题

问题描述 关于汇编语言中断程序的问题 中断错误实例,中断类型码是0,也就是div溢出,根据书本的课后的习题,我做了之后,来测试,发现,在发生div溢出的时候,为什么打在屏幕上的字符居然出现在第一个命令执行后的ax中,这是怎么搞的.第一幅图片是正常显示,默认是divide flow,第二幅图片是我自定义,但是提示信息却不在下面,而是在中间,下面的代码是第二幅图的自定义代码,第三幅图中断程序返回来的信息为什么覆盖在了第一个-t后的ax中呢?![![ assume cs:codecode segmen

串口通信-WindowsServer2008运行Delphi6串口通讯程序问题

问题描述 WindowsServer2008运行Delphi6串口通讯程序问题 最近因迁移一套老系统,是N年前用Delphi6开发的串口通讯程序,该程序在 WindowsServer2000服务器上能正常运行.现在要把这套程序拷贝到一台新 的WindowsServer2008服务器上运行时,发现访问不要前端串口设备,经 检查发现问题的情况大概是这样的:程序中建立串口通讯的参数中波特率是2400, 这个参数用于新服务器上,就不能建立与前端串口设备的通讯,除非改为9600就 可以了(采集程序和前端设

C51串口中断接收多字节数据,并解析数据,问题是不能解析,哪错了?

问题描述 C51串口中断接收多字节数据,并解析数据,问题是不能解析,哪错了? #include #include #include #define uchar unsigned char #define uint unsigned int uchar code SZDLJ[13]={0x41,0x54,0x2B,0x43,0x49,0x50,0x4D,0x55,0x58,0x3D,0x31,0x0D,0x0A};//AT+CIPMUX=1 uchar code KQFU[21]={0x41,0x