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.
工具/软件:Code Composer Studio
大家好、我不熟悉 F28335电路板以及 CCS。 我正在讨论一些例子、并有一些疑问。
在 CCS 中的 SCIA 回送启用示例中:
为什么 SCICTL2寄存器在第3行中首先设置为0x0003、这会设置 TXINTENA 和 RXBKINTENA、然后立即将这两个寄存器都设置为0。 这样做有什么意义? 相反、SCICTL2可能刚刚在一行中初始化为0x0000。 为什么不能做到这一点?
2、或者无需初始化任何内容、因为复位后、寄存器本身的默认值为0x0000。 那么为什么要初始化 SCICTL1寄存器呢? 可以这么做吗?
同样、SCICCR 寄存 器也可以设置为0x0017h、而不是在第1行中单独设置0x0007、在第8行中启用 LOOPBKENA。 为什么要单独完成?
如果 SCICTL2寄存器在第2行中被初始化为0x0023、将会发生什么情况。 是否初始化所有其他寄存器、是否需要软件复位?
第1行:SciaRegs.SCICCR.all =0x0007;
第2行:SciaRegs.SCICTL1.all =0x0003;
第3行:SciaRegs.SCICTL2.all =0x0003;
第4行:SciaRegs.SCICTL2.bit.TXINTENA=0;
第5行:SciaRegs.SCICTL2.bit.RXBKINTENA=0;
第6行:SciaRegs.SCIHBAUD =0x0000;
第7行:SciaRegs.SCILBAUD =0x000F;
第8行:SciaRegs.SCICCR.bit.LOOPBKENA=1;//启用回路
第9行:SciaRegs.SCICTL1.all =0x0023;//从复位中撤回 SCI
Anu、
您对您对示例代码的困惑是正确的。 这个代码 是在一段时间前开发的、我猜的是最初的作者尝试在所有三个示例(回声、回送和带有中断的回送)上使用一些通用初始化代码-再次只是一个猜测。
从问题1和问题2开始-正确、在回送示例中、设置 SCICTL2 = 0x0003、然后立即将 TXINTENA 和 RXBKINTENA 位设置为"0"毫无意义。 这会有效地设置 SCICTL2 = 0x0000。 回声也是如此。 但是、对于中断示例、TXINTENA 和 RXBKINTENA 位需要设置为"1"。 这可能解释了为什么 SCICTL2最初设置为0x0003 (但它没有解释为什么在中断示例 中 TXINTENA 和 RXBKINTENA 位再次设置为"1")。 我可以看到包含 SCICTL2设置的目的、即使它是默认值、用户也能了解它的价值、这使得它易于理解。
对于问题3、同样使用相同的逻辑、我可以理解设置 SCICCR = 0x0007是有道理的、因为这是所有示例类型( 1个停止位、 无环回、无奇偶校验、8个字符 位、异步模式、 和 空闲线协议)。 但是、我会在之后立即放置用于启用 LOOPBKENA 的代码、并添加注释说明"回路用于此示例"。 我同意你的看法,这两个问题都可以一起完成。
至于问题4 (我认为你是 SCICTL1),你不应将第9行与第2行合并。 第9行用于在外设配置完毕后释放 SCI、使其不再被保持在复位状态。 在 不运行时配置外设、然后在配置后运行是一种很好的编程做法。
但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。
- Ken
是的、我指 SCICTL1我的问题4。 感谢您的回复。