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