您好,我在看28335的SCI例程Example_2833xSci_Echoback时,发现SciaRegs的配置代码如下
- SciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback
- // No parity,8 char bi
- // async mode, idle-line protocol
- SciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,
- // Disable RX ERR, SLEEP, TXWAKE
- SciaRegs.SCICTL2.all =0x0003;
- SciaRegs.SCICTL2.bit.TXINTENA =1;
- SciaRegs.SCICTL2.bit.RXBKINTENA =1;
- #if (CPU_FRQ_150MHZ)
- SciaRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 37.5MHz.
- SciaRegs.SCILBAUD =0x00E7;
- #endif
- #if (CPU_FRQ_100MHZ)
- SciaRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 20MHz.
- SciaRegs.SCILBAUD =0x0044;
- #endif
- SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
关于这个配置代码我有两个问题:
a: SCICTL2的bit0和bit1就是TXINTENA和RXBKINTENA,第6行已经给这两位置1了,为什么第7、8行还要再写一遍给这两位置1。我测试了一下,如果只写7,8行程序仍正常运行,实现正常收发,但是只写第6行就不能正常收发了。
b: 和a问题有点类似,第17行给SCICTL1写了0x0023,为什么不在第四行的时候直接写呢,而是第四行先写个0x0003,然后第17行再写个0x0023。我试了下只写0x0023,代码也能正常运行。所以为什么例程要分开写?
希望有懂的朋友能解答一下。谢谢。