打印
[学习资料]

Microchip Studio 7.0项目移植

[复制链接]
楼主: 漫天星yl
手机看帖
扫描二维码
随时随地手机跟帖
41
漫天星yl|  楼主 | 2022-5-31 15:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
九、移植实例

        下面将一个用ICC AVR编写的工程项目移植到Microchip Studio 7.0,所使用的MCU为ATMEGA128。

使用特权

评论回复
42
漫天星yl|  楼主 | 2022-5-31 15:19 | 只看该作者
(一)、编写include.h

           将所有的宏定义宏命令添加到一个总的头文件(include.h)中,所有c文件都引用include.h,那么在移植过程中,我们将不需要修改这方面的代码。

使用特权

评论回复
43
漫天星yl|  楼主 | 2022-5-31 15:19 | 只看该作者
//=============================================================================================
//下面两条指令是本头部文件条件编译的预处理指令,用于防止本头部文件被其他文件重复引用。
//=============================================================================================
#ifndef  __include_H__                                //        条件编译开始
#define __include_H__


#ifndef BIT
#define BIT(x)        (1 << (x))
#endif

#define WDR()         asm("wdr")
#define SEI()        asm("sei")
#define CLI()        asm("cli")
#define NOP()        asm("nop")
#define SLEEP()         asm("sleep");
#define _WDR()         asm("wdr")
#define _SEI()        asm("sei")
#define _CLI()        asm("cli")
#define _NOP()        asm("nop")
#define _SLEEP()         asm("sleep");

#endif

使用特权

评论回复
44
漫天星yl|  楼主 | 2022-5-31 15:23 | 只看该作者
  (二)、将每个.C文件中包含的#include <iom128v.h>和#include <macros.h>屏蔽,替换为#include <avr/io.h>和#include <include.h>

1、移植前

使用特权

评论回复
45
漫天星yl|  楼主 | 2022-5-31 15:24 | 只看该作者
2、移植后

使用特权

评论回复
46
漫天星yl|  楼主 | 2022-5-31 15:25 | 只看该作者
由于#include <include.h>包含了全部宏定义,所以ICC AVR下定义的宏定义移植到Microchip Studio 7.0可以不作任何改动,即:

               SEI(),CLI(),WDR(),NOP(),BIT()   等等可以不用任何改动,直接使用即可。

使用特权

评论回复
47
漫天星yl|  楼主 | 2022-5-31 15:25 | 只看该作者
(三)、移植中断函数

        1、Microchip Studio 7.0下,atmega128单片机的中断号的名称可以在iom128.h文件中查找,microchip Studio 7.0下iom128.h头文件的路径如下:

   C:\Program Files (x86)\Atmel\Studio\7.0\packs\atmel\ATmega_DFP\1.6.364\include\avr

使用特权

评论回复
48
漫天星yl|  楼主 | 2022-5-31 15:27 | 只看该作者
C:\Program Files (x86)\Atmel\Studio\7.0\packs\atmel\ATmega_DFP\1.6.364\include\avr

使用特权

评论回复
49
漫天星yl|  楼主 | 2022-5-31 15:28 | 只看该作者

使用特权

评论回复
50
漫天星yl|  楼主 | 2022-5-31 16:36 | 只看该作者

使用特权

评论回复
51
漫天星yl|  楼主 | 2022-5-31 16:36 | 只看该作者
2、移植TIMER1比较定时中断

        TIMER1的比较匹配中断号名称为:TIMER1_COMPA_vect,参见下图

使用特权

评论回复
52
漫天星yl|  楼主 | 2022-5-31 16:37 | 只看该作者

使用特权

评论回复
53
漫天星yl|  楼主 | 2022-5-31 16:38 | 只看该作者
(1)、移植前ICC AVR代码如下所示

使用特权

评论回复
54
漫天星yl|  楼主 | 2022-5-31 16:42 | 只看该作者
(2)、在移植的.C文件首行添加头函数#include <avr/interrupt.h>

使用特权

评论回复
55
漫天星yl|  楼主 | 2022-5-31 16:42 | 只看该作者
(3)、按照Microchip Studio 7.0中断的要求移植TIMER1比较匹配中断

使用特权

评论回复
56
漫天星yl|  楼主 | 2022-5-31 16:43 | 只看该作者

使用特权

评论回复
57
漫天星yl|  楼主 | 2022-5-31 16:44 | 只看该作者
3、移植TIMER0溢出定时中断

        TIMER0溢出定时中断号名称为:TIMER0_OVF_vect,参见下图

使用特权

评论回复
58
漫天星yl|  楼主 | 2022-5-31 16:44 | 只看该作者
(1)、移植前ICC AVR代码如下所示

使用特权

评论回复
59
漫天星yl|  楼主 | 2022-5-31 16:45 | 只看该作者
(2)、在移植.C文件首行添加头函数#include <avr/interrupt.h>

使用特权

评论回复
60
漫天星yl|  楼主 | 2022-5-31 16:46 | 只看该作者
(3)、按照Microchip Studio 7.0中断的要求移植TIMER0溢出定时中断

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则