gpt4 book ai didi

c - 读取 MSP430 IO 寄存器太快?

转载 作者:行者123 更新时间:2023-12-02 02:20:02 27 4
gpt4 key购买 nike

我正在开发一个系统,其中 MSP430 通过其 SPI 总线与另一个芯片通信。我正在通过 SPI 总线发送一系列设置命令并轮询从属芯片的就绪线。我使用 IAR 作为我的 IDE,并且我在没有任何优化的情况下编译代码。代码看起来像这样:

for(int i = 0; i < NUM_SETUP_COMMANDS; i++)
{
SendSetupCommand(); //puts data in SPI Tx buffer, sets Chip select low

while(P1IN & 0x40) //wait for Chip ready line to go low
{
for(int x; x < 1024; x++)
{
//do nothing
}
}

HandleReadyLine(); //Transmit/Receive data on SPI bus
}

无论有无内部空循环,这段代码都能正常工作。所有设置消息都通过 SPI 总线正确传输。如果没有内部 for 循环,此代码块大约需要 10 秒。使用内部 for 循环,此代码块大约需要 100 毫秒。

似乎尽可能快地读取 P1IN,没有内部 for 循环,导致 P1IN 没有尽快更新。这有道理吗?添加/删除内部 for 循环会导致如此剧烈的时间变化是否有明确的原因?

最佳答案

应该没什么区别。

一些调试建议:

我建议将内部循环的迭代次数减少到零,看看这是否会改变系统计时。还可以尝试将内部循环换成 nop,看看是否有相同的效果。您还可以查看生成的程序集,看看这两个编译之间是否有明显的区别。最后,(如果可以的话)确定 SPI 线的范围,看看两者之间的行为是否有任何差异。

关于c - 读取 MSP430 IO 寄存器太快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8690710/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com