[学习资料] Microchip Studio 7.0项目移植

[复制链接]
1930|79
 楼主| 漫天星yl 发表于 2022-5-31 15:18 | 显示全部楼层
九、移植实例

        下面将一个用ICC AVR编写的工程项目移植到Microchip Studio 7.0,所使用的MCU为ATMEGA128。
 楼主| 漫天星yl 发表于 2022-5-31 15:19 | 显示全部楼层
(一)、编写include.h

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 漫天星yl 发表于 2022-5-31 15:19 | 显示全部楼层
  1. //=============================================================================================
  2. //下面两条指令是本头部文件条件编译的预处理指令,用于防止本头部文件被其他文件重复引用。
  3. //=============================================================================================
  4. #ifndef  __include_H__                                //        条件编译开始
  5. #define __include_H__


  6. #ifndef BIT
  7. #define BIT(x)        (1 << (x))
  8. #endif

  9. #define WDR()         asm("wdr")
  10. #define SEI()        asm("sei")
  11. #define CLI()        asm("cli")
  12. #define NOP()        asm("nop")
  13. #define SLEEP()         asm("sleep");
  14. #define _WDR()         asm("wdr")
  15. #define _SEI()        asm("sei")
  16. #define _CLI()        asm("cli")
  17. #define _NOP()        asm("nop")
  18. #define _SLEEP()         asm("sleep");

  19. #endif
 楼主| 漫天星yl 发表于 2022-5-31 15:23 | 显示全部楼层
  (二)、将每个.C文件中包含的#include <iom128v.h>和#include <macros.h>屏蔽,替换为#include <avr/io.h>和#include <include.h>

1、移植前

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 漫天星yl 发表于 2022-5-31 15:24 | 显示全部楼层
2、移植后

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 漫天星yl 发表于 2022-5-31 15:25 | 显示全部楼层
由于#include <include.h>包含了全部宏定义,所以ICC AVR下定义的宏定义移植到Microchip Studio 7.0可以不作任何改动,即:

               SEI(),CLI(),WDR(),NOP(),BIT()   等等可以不用任何改动,直接使用即可。
 楼主| 漫天星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
 楼主| 漫天星yl 发表于 2022-5-31 15:27 | 显示全部楼层
  1. C:\Program Files (x86)\Atmel\Studio\7.0\packs\atmel\ATmega_DFP\1.6.364\include\avr
 楼主| 漫天星yl 发表于 2022-5-31 15:28 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 漫天星yl 发表于 2022-5-31 16:36 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 漫天星yl 发表于 2022-5-31 16:36 | 显示全部楼层
2、移植TIMER1比较定时中断

        TIMER1的比较匹配中断号名称为:TIMER1_COMPA_vect,参见下图
 楼主| 漫天星yl 发表于 2022-5-31 16:37 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 漫天星yl 发表于 2022-5-31 16:38 | 显示全部楼层
(1)、移植前ICC AVR代码如下所示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 漫天星yl 发表于 2022-5-31 16:42 | 显示全部楼层
(2)、在移植的.C文件首行添加头函数#include <avr/interrupt.h>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 漫天星yl 发表于 2022-5-31 16:42 | 显示全部楼层
(3)、按照Microchip Studio 7.0中断的要求移植TIMER1比较匹配中断
 楼主| 漫天星yl 发表于 2022-5-31 16:43 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 漫天星yl 发表于 2022-5-31 16:44 | 显示全部楼层
3、移植TIMER0溢出定时中断

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 漫天星yl 发表于 2022-5-31 16:44 | 显示全部楼层
(1)、移植前ICC AVR代码如下所示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 漫天星yl 发表于 2022-5-31 16:45 | 显示全部楼层
(2)、在移植.C文件首行添加头函数#include <avr/interrupt.h>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 漫天星yl 发表于 2022-5-31 16:46 | 显示全部楼层
(3)、按照Microchip Studio 7.0中断的要求移植TIMER0溢出定时中断

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

快速回复 在线客服 返回列表 返回顶部