查看: 3782|回复: 0

AVR之裸奔框架C++程序源码(菜农C++裸奔大法之四)

[复制链接]

该用户从未签到

发表于 2008-6-14 20:41:28 | 显示全部楼层 |阅读模式
分享到:
[table=98%]                        [tr]                        [td]hotpower 发表于 2008-6-14 04:41 AVR 单片机 ←返回版面 [/td]                [/tr]                [tr]                        [td]
                        楼主: AVR之裸奔框架C++程序源码(菜农C++裸奔大法之四)[/td]                [/tr]                [tr]                        [td]
                        [table=95%]                                                                        [tr]                                                [td]/*------------------------------------------------------------------------
                                                                 AVR之裸奔框架C++程序源码(菜农C++裸奔大法之四)
                                                本程序主要表现了C++多文件系统的MCU构建方法,任何支持C++的MCU/ARM/DSP都可用
                                                此法构建。
                                                特别要注意变量的重复定义问题:
                                                      最好每个C/CPP文件包含与自己同名的H头文件,在其H头文件中再包含一个中间
                                                起桥梁作用的H头文件,我一般喜欢main.h
                                                    变量或函数要在C/CPP中定义,绝对不要在H头文件中定义!
                                                但一定要在H头文件中用extern加变量或函数声明。
                                                    C++中要切记全局的类的构造函数肯定要在main()前运行,对于IAR编译器有个
                                                __low_level_init()函数也会在main()前运行,它主要控制所有变量或类的初始化
                                                    一般类的成员函数是不能作为中断服务程序ISR()的,但Cortex-M3确是一个意外
                                                总之中断程序要用__interrupt修饰的ISR()的,其类成员函数不能为ISR()
                                                    最好用一个单独的文件interrupt.cpp来编写所有中断服务程序ISR(),可能其
                                                H头文件什么都没有也最好加上。
                                                    每个头文件的构成结构基本如下:
                                                #include "main.h"
                                               
                                                #ifdef  __IAR_SYSTEMS_ICC__
                                                #ifndef _SYSTEM_BUILD
                                                #pragma system_include
                                                #endif
                                                #endif
                                               
                                                //上面的是IAR特有的
                                               
                                                #ifndef __M48_INTERRUPT_H
                                                #define __M48_INTERRUPT_H
                                               
                                                #ifdef __cplusplus
                                                extern "C"
                                                {
                                                #endif
                                               
                                                //在此添加C++代码
                                               
                                                #ifdef __cplusplus
                                                }
                                                #endif
                                               
                                                #endif//__M48_INTERRUPT_H
                                               
                                                "桥梁"H头文件要包含所有用到的H头文件!!!否则"桥梁"倒塌~~~
                                               
                                                菜农HotPower@126.com   2008.6.14 4:18 作于特殊的节日来奉贤给大家~~~
                                                -------------------------------------------------------------------------*/
                                               
                                                #include "main.h"
                                                /*-------------------------------------------------
                                                IAR对位的支持举例如下:
                                                    PORTB_Bit2 = 1;//等同下句
                                                    PORTB |= (1
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条



手机版|小黑屋|与非网

GMT+8, 2024-12-28 05:17 , Processed in 0.114468 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.