32楼的问题很好,俺就做些说明吧~~~
问题1:"我觉得要发送数据的时候直接写入UART FIFO启动发送不就行了"
我一直反对直接操作硬件~~~这和打印机的道理是一样的~~~ 我的程序要想象为"用户端"和"系统端". 不能那个用户的级别高而插入正在"打印的文本",否则这个"打印好的文本是没人能看明白的"
所以不能直接操作硬件,特别是多用户处理时.
"用户"只能写入缓冲区,"打印"是将此缓冲区的内容"发送"出去.两者互不知道~~~
既然不能操作硬件,那么如何达到"发送"呢???---只有软件激活!!! 它只是个软中断触发标志,并不破坏正常的发送流程!!!
问题2:"发送完最后一个字符它自然会中断,为什么非要去激活发送中断呢?"
因为全部数据发送完后,"用户"可能此时没输入新数据,那么发送过程就此结束.
当"用户"开始填入新数据时,由于不能操作硬件,故还要继续采用软件激活的方式才能达到发送的目的.
由于我的发送协议为回车符结束,故此时激活软中断是最佳时机.
问题3:" 而你激活了发送中断却又什么也没干,如下: case 0x01://LPCARM保留中断,可用于软件模拟激活UART0中断 if (!(VIC->SoftInt & (1 << VICIntSel_UART0))) {//硬件UART0中断 break;//正常的UART0中断退出 } } " 这个可能是我注解的不好或您没仔细分析~~~
我正是成功地利用LPCARM保留中断的漏洞才能"植入病毒体"呀~~~ case 0x01://LPCARM保留中断,可用于软件模拟激活UART0中断
下面注解应该是: if (!(VIC->SoftInt & (1 << VICIntSel_UART0))) {//硬件UART0中断继续执行 break;//不是软中断退出 }//是软中断冒充硬件UART0中断继续发送
不知俺将清楚没有~~~最好的办法是用软件仿真~~~
但是3.15B就不支持那个软串口调试助手了~~~ |
|