【问题标题】:AVR IO Ports can not be globalAVR IO 端口不能是全局的
【发布时间】:2017-08-16 23:04:40
【问题描述】:

我在 Atmel Studio 上编写 AVR 代码时,我忘记在 main 中写入 IO 端口设置(DDRx、PORTx、...等),而是将其放在 main 之外,如下所示:

#include <avr/io.h>
#define F_CPU 1000000UL
#include <util/delay.h>
#include <avr/interrupt.h>

void delay_250ms();
uint8_t t_hr = 0 , t_min = 0 , t_sec = 0 , i = 0 , tempp;
uint8_t start_stopwatch = 0;
DDRA |= 0xFF;
PORTA = 0x00;
DDRD = 0x00;
PORTD |= 0xFF;

然后我得到了那个错误:

  • 预计 )( 令牌之前
  • 预期标识符或(volatile 之前
  • ( 令牌之前应为)
  • 预期标识符或(volatile 之前
  • 预计 )( 令牌之前 …

当我将它们添加回主函数时,没有错误

问题是为什么我不能将它们添加到 main 之外? 我错过了什么吗?

【问题讨论】:

  • 将相关代码放入您的问题中(复制粘贴,然后选择它并单击{} 图标,使其格式正确)。

标签: c compiler-errors microcontroller avr atmelstudio


【解决方案1】:

DDRA |= 0xFF 这样的代码行就是一个语句。它在执行时执行特定的操作(例如设置DDRA 的所有位)。

语句必须出现在函数中,这样它才能作为该函数的一部分执行。它不能放在源文件的顶层,因为不执行源文件——只有函数。

【讨论】:

  • 哦 :O 非常感谢。
  • 源文件永远不会被执行。编译和链接的可执行文件 - 是的
猜你喜欢
  • 2019-11-25
  • 1970-01-01
  • 1970-01-01
  • 2016-04-13
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 1970-01-01
  • 2017-07-06
相关资源
最近更新 更多