首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

MC9S08AW32串口进不了中断[求助]

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,串口只能读数据,不能发送数据
我看你的中断是读数据,你说串口能读数据,但又说串口进不了中断。怎么回事呢?
海纳百川  有容乃大
就是串口的端角RXD上有电平,但是进中断的话应该IsSCI=1,可是在FOR循环中IsSCI=0,且不能发送数据,即TXD上没有输出
就是在实时仿真环境中的IsSCI的值一直就是没改变,一直为1
IsSCI到底是1还是0?
海纳百川  有容乃大
版主,你好。通讯的问题解决了。问题出在对中断函数的__interrupt void Vsci0rx_isr(void)-----不是AW32能执行的中断函数,改成void interrupt 17 Vsci0rx_isr(void),就能进中断了

CodeWarrior有多种方式可以定义中断矢量地址。也可以在PRM文件中定义。
海纳百川  有容乃大
返回列表