avr 小问题

lllena 2012-02-20 04:57:21
刚学习avr,很多东西还不懂!之前看别人的代码,现在有几个问题不懂,希望你们都够帮忙解决一下!


#define ENABLE_TIMER_INTERRUPT( ) ( TIMSK0 |= ( 1<< OCIE0A ) )
#define DISABLE_TIMER_INTERRUPT( ) ( TIMSK0 &= ~( 1<< OCIE0A ) )
#define CLEAR_TIMER_INTERRUPT( ) ( TIFR0 |= ((1 << OCF0A) ) )
#define ENABLE_EXTERNAL0_INTERRUPT( ) ( GIMSK |= ( 1<< INT0 ) )
#define DISABLE_EXTERNAL0_INTERRUPT( ) ( GIMSK &= ~( 1<< INT0 ) )

这几个定义都不知道是什么意思!


../serial_port_24.c:187: error: `GIMSK' undeclared (first use in this function)
../serial_port_24.c:187: error: (Each undeclared identifier is reported only once
../serial_port_24.c:187: error: for each function it appears in.)
../serial_port_24.c:189: error: `TIMSK0' undeclared (first use in this function)
../serial_port_24.c:189: error: `OCIE0A' undeclared (first use in this function)
../serial_port_24.c:190: error: `TCCR0B' undeclared (first use in this function)
../serial_port_24.c:196: error: `OCR0A' undeclared (first use in this function)
../serial_port_24.c:199: error: `TIFR0' undeclared (first use in this function)
../serial_port_24.c:199: error: `OCF0A' undeclared (first use in this function)

只有一编译就会出现这个问题!
...全文
116 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jobszheng5 2012-02-22
  • 打赏
  • 举报
回复
楼主,
那个错误是由于你没有使用位定义,却调用了位定义。
如果使用IAR开发,则在 project -> general options -> system -> 选中 enable bit definitions in I/O-Include file 即可
御猫 2012-02-22
  • 打赏
  • 举报
回复
基本的宏定义,看看AVR的书吧,都有介绍!
lbing7 2012-02-21
  • 打赏
  • 举报
回复
#define ENABLE_TIMER_INTERRUPT( ) ( TIMSK0 |= ( 1<< OCIE0A ) )
#define DISABLE_TIMER_INTERRUPT( ) ( TIMSK0 &= ~( 1<< OCIE0A ) )
#define CLEAR_TIMER_INTERRUPT( ) ( TIFR0 |= ((1 << OCF0A) ) )
#define ENABLE_EXTERNAL0_INTERRUPT( ) ( GIMSK |= ( 1<< INT0 ) )
#define DISABLE_EXTERNAL0_INTERRUPT( ) ( GIMSK &= ~( 1<< INT0 ) )

这几个定义都不知道是什么意思!
这个是用宏定义了几个中断的使能和禁止位,用宏来代替位操作,增加可读性

至于后面的那些错误
感觉像是你有些头文件没有包含

27,510

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧