0

我正在使用 PlatformIO 和 CLion 对 ATMega324P 微控制器进行编程。该项目是在 mac 上使用 PlatformIO 创建的,并在 CLion 中打开。我可以成功构建程序并在 ATMega324p 上运行它。我成功运行了以下代码。

主文件

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
    DDRB |= 1 << PINB0; 

    while (true)
    {
        PORTB ^= 1 << PINB0; 
        _delay_ms(100);
    }
}

Platformio.ini

[env:mightycore324]
platform = atmelavr
board = mightycore324
framework = arduino
upload_protocol = usbtiny
board_f_cpu = 16000000L

尽管此代码运行延迟似乎明显不准确。我有没有做任何事情来确保延迟正常工作?

4

2 回答 2

1

您的 MCU 可能正在耗尽其内部 RC 振荡器。这个振荡器不是特别精确——它被指定为 8 MHz,但个别部件可以在 7.3 到 8.1 MHz 的任何地方运行。

为了获得更准确的时序,您需要连接一个外部晶体并相应地对时钟熔丝进行编程。

于 2017-10-30T03:37:42.397 回答
0

以下设置解决了我的问题。

Platformio.ini

[env:mightycore324]
platform = atmelavr
board = mightycore324
framework = arduino
upload_protocol = usbtiny
board_f_cpu = 800000L
于 2017-11-01T02:27:40.373 回答