AVR IO 端口不能是全局的
AVR IO Ports can not be global
我在 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;
然后我得到了那个错误:
- expected
)
before (
token
- expected identifier or
(
before volatile
- expected
)
before (
token
- expected identifier or
(
before volatile
- expected
)
before (
token
…
当我将它们添加回主函数时没有出现错误
问题是为什么我不能在 main 之外添加它们?
我是否漏掉了一些要点?
像DDRA |= 0xFF
这样的一行代码就是一条语句。它在执行时执行特定操作(如设置 DDRA
的所有位)。
语句必须出现在函数中,这样它才能作为函数的一部分执行。它不能放在源文件的顶层,因为不执行源文件——只有函数。
我在 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;
然后我得到了那个错误:
- expected
)
before(
token- expected identifier or
(
beforevolatile
- expected
)
before(
token- expected identifier or
(
beforevolatile
- expected
)
before(
token …
当我将它们添加回主函数时没有出现错误
问题是为什么我不能在 main 之外添加它们? 我是否漏掉了一些要点?
像DDRA |= 0xFF
这样的一行代码就是一条语句。它在执行时执行特定操作(如设置 DDRA
的所有位)。
语句必须出现在函数中,这样它才能作为函数的一部分执行。它不能放在源文件的顶层,因为不执行源文件——只有函数。