编程案例 使用MPLAB®X开发AVR®MCU 写C程序框架

描述

从新建一个空白程序开始,从头写一个程序框架,能有助于更好的理解MPLAB® X开发环境所提供的各种编程资源。

1. 新建一个空白程序。其项目属性如下:

 

mcu

 

2. 新建main.c文件

在Projects列表页面中,选中项目名称,点右键,通过弹出菜单,新建main.c文件。

Main.c中默认已经有了几行代码: 包含xc.h头文件和主函数main()。

mcu

 

3. 头文件结构

在main.c文件编辑区,右键,Navigate -> View Includes Hierarchy, 可以查看xc.h,以及下层包含的头文件。

mcu

 

当前main.c文件的头文件包含结构:

mcu

 

xc.h 头文件中,主要是对cci.h 和avr/io.h进行了包含,并且定义了使能/禁止中断的宏定义。

mcu

 

Avr/io.h文件,是通用的“索引”型头文件,对各个AVR器件的头文件进行了条件包含。

mcu

 

Iotn817.h 文件具体定义了ATtiny817芯片的IO口,外设寄存器等信息。

mcu

 

4. IO口操作

    PORTA.DIR = 0x55;

    PORTA.OUTSET = 0x55;

    uint8_t pinvalue = PORTA.IN & 0xAA;

    PORTA.OUTTGL = 0x55;

数据类型uint8_t 是标准头文件stdint.h中定义,根据上面的头文件结构,已经包含,所以不需要再进行包含。

5. 中断

-        包含中断头文件 

#include

-        中断处理函数:

ISR(NVMCTRL_EE_vect){

//添加中断处理函数代码

}

-        中断使能函数 ei() 或 sei().

-        中断禁止函数 di() 或 cli()

6. 延迟

-        定义 F_CPU 宏为系统频率 

#define F_CPU 33333333 //3.3MHz

-        包含延迟头文件 

#include

-        使用延迟函数

    _delay_ms(1000);

7. FUSE 

FUSES = 

{

        .APPEND = 0,

        .BODCFG = ACTIVE_DIS_gc | LVL_BODLEVEL0_gc | SAMPFREQ_1KHz_gc | SLEEP_DIS_gc,

        .BOOTEND = 0,

        .OSCCFG = FREQSEL_20MHZ_gc,

        .SYSCFG0 = CRCSRC_NOCRC_gc | RSTPINCFG_UPDI_gc,

        .SYSCFG1 = SUT_64MS_gc,

        .WDTCFG = PERIOD_OFF_gc | WINDOW_OFF_gc,

};

Fuse结构体定义在iotn817.h中

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分