打印
[学习资料]

使用MPLAB X开发AVR® MCU – 从头写一个C程序框架

[复制链接]
15290|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1. 新建一个空白程序。其项目属性如下:

2. 新建main.c文件
在Projects列表页面中,选中项目名称,点右键,通过弹出菜单,新建main.c文件。
Main.c中默认已经有了几行代码: 包含xc.h头文件和主函数main()。


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


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

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

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


使用特权

评论回复
沙发
小灵通2018|  楼主 | 2023-12-18 22:49 | 只看该作者
Iotn817.h 文件具体定义了ATtiny817芯片的IO口,外设寄存器等信息。

使用特权

评论回复
板凳
小灵通2018|  楼主 | 2023-12-18 22:49 | 只看该作者
4. IO口操作
    PORTA.DIR = 0x55;
    PORTA.OUTSET = 0x55;
    uint8_t pinvalue = PORTA.IN & 0xAA;
    PORTA.OUTTGL = 0x55;

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

使用特权

评论回复
地板
小灵通2018|  楼主 | 2023-12-18 22:50 | 只看该作者
5. 中断
-        包含中断头文件
#include <avr/interrupt.h>

-        中断处理函数:
ISR(NVMCTRL_EE_vect){
//添加中断处理函数代码
}
-        中断使能函数 ei() 或 sei().
-        中断禁止函数 di() 或 cli()

使用特权

评论回复
5
小灵通2018|  楼主 | 2023-12-18 22:50 | 只看该作者
6. 延迟

-        定义 F_CPU 宏为系统频率
#define F_CPU 33333333 //3.3MHz

-        包含延迟头文件
#include <util/delay.h>

-        使用延迟函数
    _delay_ms(1000);

使用特权

评论回复
6
小灵通2018|  楼主 | 2023-12-18 22:50 | 只看该作者
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中

使用特权

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

本版积分规则

117

主题

1444

帖子

4

粉丝