我提出过在LPC2214上设置外部中断极性会影响系统时钟的问题<br />https://bbs.21ic.com/club/bbs/list.asp?boardid=39&page=1&t=2520047&tp=%u7CFB%u7EDF%u65F6%u949F%u53D8%u5316%u4E4B%u8FF7<br /><br />为了确认问题,我们在周工的开发板上做了实验:<br />开发板easyArm2200(LPC2210),IDE ADS1.2 +EASYJTAG 1.05<br />实验程序:第3章第20个实验 SendStr_c<br />为方便观察现象,我将串口速率改为9600 即 #define UART_BPS 9600<br /><br />主程序如下:<br />int main(void)<br />{ PINSEL0 = 0x00000005; // 设置I/O连接到UART0<br /> <br /> UART0_Ini();<br /> while(1) <br /> { UART0_SendStr(SEND_STRING);<br /> DelayNS(10);<br /> }<br /> return(0);<br />}<br />显然没有设置、开启如何中断。<br />一切正常,串口得到9600速率的Hello World!<br /><br />更改如下<br />int main(void)<br />{ PINSEL0 = 0x00000005; // 设置I/O连接到UART0<br /> <br /> UART0_Ini();<br /> EXTMODE = newvalue; <br /> while(1) <br /> { UART0_SendStr(SEND_STRING);<br /> DelayNS(10);<br /> }<br /> return(0);<br />}<br />当newvalue = 0xff,0x01,0x04,0x08时,正常<br />但当newvalue = 0x02时,串口速率为19200。2倍!<br /><br /><br />再更改如下<br />int main(void)<br />{ PINSEL0 = 0x00000005; // 设置I/O连接到UART0<br /> <br /> UART0_Ini();<br /> EXTPOLAR = newvalue; <br /> while(1) <br /> { UART0_SendStr(SEND_STRING);<br /> DelayNS(10);<br /> }<br /> return(0);<br />}<br />当newvalue = 0xff,0x01,0x04,0x08时,正常<br />但当newvalue = 0x02时,串口速率为19200。2倍!<br /><br />确实速率加倍只是表象,实质是时钟频率加倍了,<br />但我不清楚是改变了pll还是pclk<br /><br /><br />从现象看,我认为LPC2200系列是存在某种设计缺陷的,<br />我请周立功公司的各位老师也仔细研究一下,看看是我使用得<br />不正确,还是确实有缺陷,感谢你们的答复。<br /> |
|