AVR IO端口不能是全局的

时间:2017-08-16 23:04:41

标签: c compiler-errors microcontroller avr atmelstudio

我在Atmel Studio上写了一个AVR代码,但是我忘记在主要部分写了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   
  • )令牌之前预期(   ...
  •   

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

问题是为什么我不能在主要之外添加它们? 我是否会错过一些观点?

1 个答案:

答案 0 :(得分:4)

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

语句必须出现在函数中,以便它作为该函数的一部分执行。它不能放在源文件的顶层,因为源文件不会被执行 - 只有函数是。