Board logo

标题: MC9S08AW32串口进不了中断[求助] [打印本页]

作者: sunny_dj    时间: 2008-1-14 16:53     标题: MC9S08AW32串口进不了中断[求助]

#include /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
#include "MC9S08AW32.h"
/*************************************************************************/
/**************************define function********************************/
void InitICG();
void InitSCI0();
void InitGPIO();
__interrupt void Vsci0rx_isr(void);
void SCIProcess();
void TransSCI(byte ReceivedByte);
/*************************************************************************/
/**************************define parameter********************************/
byte ReceivedByte;
int IsSCI;
void InitSCI0()
{
SCI1C1=0x00;
SCI1C2=0x2C;
SCI1C3=0x00;
SCI1BDH=0x00;
SCI1BDL=0x1a; //baud=9600;
}
__interrupt void Vsci0rx_isr(void)
{
IsSCI=1;
if(SCI1S1_RDRF)
ReceivedByte=SCI1D;//存缓冲区内容
ReceivedByte+=1;
}
void TransSCI(byte TransByte) //发送一个字节
{
while(SCI1S1_TDRE==0);
SCI1D=TransByte;
}
/*********************main()*****************************************/
void main(void)
{
IsSCI = 0;
InitSCI0();
EnableInterrupts;
for(;;)
{
__RESET_WATCHDOG();

if(IsSCI==1)
{
TransSCI(ReceivedByte);
IsSCI=0;
}
}
}
使用8M晶振,未加PLL,串口只能读数据,不能发送数据
作者: strongchen    时间: 2008-1-15 10:22

我看你的中断是读数据,你说串口能读数据,但又说串口进不了中断。怎么回事呢?
作者: sunny_dj    时间: 2008-1-15 13:07

就是串口的端角RXD上有电平,但是进中断的话应该IsSCI=1,可是在FOR循环中IsSCI=0,且不能发送数据,即TXD上没有输出
作者: sunny_dj    时间: 2008-1-15 13:11

就是在实时仿真环境中的IsSCI的值一直就是没改变,一直为1
作者: strongchen    时间: 2008-1-15 14:57

IsSCI到底是1还是0?
作者: sunny_dj    时间: 2008-1-16 22:03

版主,你好。通讯的问题解决了。问题出在对中断函数的__interrupt void Vsci0rx_isr(void)-----不是AW32能执行的中断函数,改成void interrupt 17 Vsci0rx_isr(void),就能进中断了


作者: strongchen    时间: 2008-1-17 11:09

CodeWarrior有多种方式可以定义中断矢量地址。也可以在PRM文件中定义。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0