techiall / Blog

🍋 [My Blog] See discussions
https://github.com/techiall/Blog/discussions
MIT License
8 stars 1 forks source link

利用 vscode / vim 写 avr 代码 #1

Open techiall opened 6 years ago

techiall commented 6 years ago

------------------------- 2018.05.09 update -------------------------------------

强烈安利用 Vim ,再加上配置 Makefile ,写起来更方便,保存直接编译成 hex 文件。

------------------------- 2018.05.09 update -------------------------------------

前言废话

AVR 开发环境很简单,老师让我们使用的是 ICC AVR 这个软件,基于 Mega16

AVR 开发软件链接:AVR开发软件下载

5ab120b7c29f7.png

界面如上

个人是觉得这个界面很简单,对于一个强迫症患者来说,颜值第一,再考虑实用性,可惜这个软件,这两点都达不到。

我觉得写代码也要写的舒适一点,为革命保护视力,给 Visual Studio 换颜色 ,这个是之前看的文章。我觉得一个好的编译器配色方案,可以让人写代码更加舒服。

下面介绍如何用 vscode 写 avr 程序并编译成 hex 文件。

一、配置 ICC AVR 环境变量

先安装好 ICC AVR ,接着找到 ICC AVR 安装路径。打开 bin 文件夹,复制该文件夹的路径。

假设路径为 D:\iccv7avr\bin

其实和配置 Java 和 Python 环境变量差不多。

电脑(右键) - 属性 - 高级系统设置 - 环境变量 - 系统变量 - Path - 新建 - 粘贴 bin 路径 - 保存 - 退出。

打开 cmd ,输入 imakew ,若出现以下信息则说明配置成功。

D:\iccv7avr\bin\imakew.exe: Can't open makefile

二、打开 vscode 写代码并编译

安装 vscode 的过程就省了,官网就可以下载安装即可。

新建一个文件夹,名字任意。

vscode 打开该文件夹。

接着创建三个文档。

  1. FIRST.lk 写入如下内容
main.o 
  1. FIRST.mak 写入如下内容,这些参数根据自己的板子自己调整。(其实有一个方法就是在 ICC AVR 软件中创建好一个工程,然后参数什么的调好之后,复制那个后缀名为 .mak 的文件即可)
CC = iccavr
LIB = ilibw
CFLAGS =  -e -D__ICC_VERSION=722 -DATMega16  -l -g -MLongJump -MHasMul -MEnhanced -Wf-const_is_flash -DCONST="" 
ASFLAGS = $(CFLAGS) 
LFLAGS =  -g -e:0x4000 -ucrtatmega.o -bfunc_lit:0x54.0x4000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:0.512 -fihx_coff -S2
FILES = main.o 

FIRST:  $(FILES)
    $(CC) -o FIRST $(LFLAGS) @FIRST.lk   -lcatm128
main.o: D:\iccv7avr\include\iom16v.h D:\iccv7avr\include\macros.h D:\iccv7avr\include\AVRdef.h
main.o: main.c
    $(CC) -c $(CFLAGS) main.c

D:\iccv7avr\include\iom16v.h D:\iccv7avr\include\macros.h D:\iccv7avr\include\AVRdef.h 这个 include 的路径要修改成安装 avr 的目录。 该文件为什么要这样子配置,前半部分是单片机的一些配置,后半部分类似 Makefile ,有兴趣可以去了解一下。

  1. main.c 写入如下内容
/*
imakew -f FIRST.mak
*/
#include <iom16v.h>
#include <macros.h>

int main(void)
{
    return 0;
}

按下 ctrl + ` 快捷键,打开终端,或者从 vscode 界面下方拉起。

在该文件夹的目录下,输入以下命令 imakew -f FIRST.mak ,即可编译成功。成功编译的截图如下

5ab12704e7720.png

回到项目工程的文件夹,会发现生成了一下其他的文件,其中就包括了后缀名为 hex 的文件。

修改 main.c 文件的内容,保存后使用刚才的编译命令即可编译生成新的文件。其实这个过程和用 Java 写代码,然后用命令行编译 Java 过程类似。

三、链接到 avr 头文件库

为啥用链接头文件库?因为强迫症,头文件下方有波浪线,受不了。

把鼠标放到头文件处,如下图。

edit

点击 Edit "includePath" setting ,弹出配置文件,,找到 name: "Win32" ,如下图。 在 includepath 的最后面添加 ivvavr 的 include 文件夹,记得配置好了之后记得保存。

假设路径为 E:/7/dpj/include

include

最后一个建议,开启 vscode 的自动保存功能。这样子就不需要每一次写完就 Ctrl + S 。那只要写完之后,在下方的 shell 编译成 hex 即可。(很容易没保存,然后生成的 hex 文件和上一次一样。

开启方法: 文件 - 自动保存

这样子就链接到了 avr 的头文件库了。这样子就可以在 vscode 愉快的写 avr 代码。

WeChat Image_20180321093501.png

vscode and vcc 对比图

Aurora-kite commented 11 months ago

您好,很感谢您的教程!我们学校也要求我们使用ICCAVR开发mega16,同样迫于颜值转而想要使用VScode开发mega16,按照您的教程已经完成使用VScode生成hex文件,但是我想问ICCAVR导入已写的库文件如何实现?(比如#include pwm.h,需要修改.lk,.mak文件)