Ken,你好
你之前有上传一个关于串口接受中断的例子,如附件。我试着用串口调试助手发数据给板子,但是没有进入中断函数。改程序你有调试成功吗?
谢谢
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Ken,你好
你之前有上传一个关于串口接受中断的例子,如附件。我试着用串口调试助手发数据给板子,但是没有进入中断函数。改程序你有调试成功吗?
谢谢
ken,你好
我试了你上传的这个例程,结果是失败的。而且有几个问题:你在主函数中调用的sciEnableNotification(scilinREG,SCI_TX_INT);这个函数应该是使能不了发送中断的吧,该函数的语句sci->SETINT = (flags & ~SCI_TX_INT); 就把发送中断给禁止了。另外,在sciNotification()中,都是空的怎么有反应呀。我在
if(flags==SCI_RX_INT){ }中加了接收函数,结果还是没有执行{}里的接收函数,我试着在主函数中加接收函数,结果能接收数据。这个又跟你说的不一样。
谢谢
首先,
这个例程我在3137的USB stick上实验是没有问题的,我刚又试了一下。串口助手上面的设置我是9600,8位数据,1位停止位。
sciEnablenotification()函数是使能SCI中断的操作,你可以在sciInit()里面看到接收中断已经置位,但是发送中断没有置位,要使能发送中断的话,还是需要调用这个函数的。另外在中断程序里面scinotification()我只做了一个发送中断的判断,接收中断你可以自己写,或是设一个断点就行。
另外为了调试方便,你可以在void linHighLevelInterrupt(void)函数的入口处设一个断点,这样比较容易观察每次中断的响应。
接收中断确实不需要加scireceive()函数,这个函数使用在查询接收的,你可以看程序的语句就明白。
另外: 你用的硬件是哪块?SCI用的那个口呢?
谢谢