历史上的今天
返回首页

历史上的今天

今天是:2025年07月13日(星期日)

正在发生

2019年07月13日 | AVRWARE++开发笔记1:综述

2019-07-13 来源:eefocus

    从今天开始撰写AVRWARE++开发笔记,用以使用AVRWARE++程序架构,对Atmel公司的AVR系列单片机进行快速开发。对于开发笔记的任何问题,大家都可以进行留言探讨。


    1、简介

    AVRWARE++是一套开源的基于层次化软件设计思想的,用于Atmel公司AVR系列单片机开发的软件架构。相比较其它的软件架构,其具有的特点在于:

    a、采用层次化软件设计思想进行单片机程序设计;

    b、完备的单片机内部外设驱动程序库;

    c、可扩展的单片机外部芯片(模块)驱动程序库;

    d、提供硬件映射层,使得用户逻辑与硬件驱动分开,增加了系统的可读性、可扩展性、可移植性并有利于单片机程序设计的多人协作。

    e、与MSP430WARE++(一款基于TI公司MSP430系列单片机的程序架构)在架构上完全兼容,可以相互移植,混合开发。


    2、层次化软件设计思想

    一般来说,单片机程序设计包含底层驱动程序的编写和应用层程序的设计等多部分组成,这就是所谓的层次化设计思想。底层驱动主要面向片内集成功能模块以及外围扩展的元器件,负者对硬件进行工作模式设置、获取或发送各种数据对各类执行元件或机构实施实际控制等,应用层程序则通过恰当的算法,进行资源调度、系统调度、数据运算、逻辑推演和运筹决策等。由于硬件品种繁多层出不穷,使得底层驱动的编制较为复杂,相比而言,应用层的编写需要更多的知识、经验和技巧。

   AVRWARE++提供的软件开发框架大幅度屏蔽了硬件的复杂性,应用此开发框架进行单片机程序开发,用户不需熟悉硬件的结构及内部细节即可开发出结构优良的单片机程序。而且该开发框架提供所有编译前的源代码,所以读者也可根据此源代码进行程序开发的学习,以增长自身的技能。


    3、软件架构

    AVRWARE++提供6层架构用于程序开发,自上而下分别为:逻辑层(0_LogicLayer)、硬件映射层(1_AbstractionLayer)、协议层(2_ProtocolLayer)、外部模块层(3_ExternalModuleLayer)、中间层(4_MiddleLayer)和内部外设层(5_InternalPeripheralLayer),如下图所示。各层功能介绍如下:

 图片 

     

    a、逻辑层(0_LogicLayer)

    逻辑层专注于用户逻辑设计,采用AVRWARE++程序架构进行程序设计,可以做到逻辑层与硬件的无关性,说的直白一些就是在逻辑层中开不到寄存器等和硬件相关的程序代码,而只是一些和逻辑相关的函数调用,最大限度的增强程序的可读性和可移植性。

    b、硬件映射层(1_AbstractionLayer)

    硬件映射层起到承上启下的作用,实际上它是“原理图到程序代码”的直译,采用AVRWARE++程序架构进行硬件映射层设计是极简单并富有条理性的事物,用户可以在后续的文章中感受到这一点,“原理图直译程序代码”完成逻辑与硬件的分隔。

    c、协议层(2_ProtocolLayer)

    协议层主要引进现在已供认完善的、开源的协议代码,例如TCP/IP,modbus、miniXML等,此层可扩展,并受芯片容量的限制。

    d、外部模块层(3_ExternalModuleLayer)

    外部模块层提供线路板上与单片机相连接的芯片或模块的驱动程序,此层可扩展,并已做到代码与单片机的无关性,可以进行跨单片机的程序移植。

    e、中间层(4_MiddleLayer)

    中间层提供靠近底层,与硬件无关的中间代码,例如IIC。

    f、内部外设层(5_InternalPeripheralLayer)

    内部外设层提供单片机内部外设的完备驱动程序。


    4、预计写作的文章

    a、AVRWARE++开发笔记1:综述

    b、AVRWARE++开发笔记2:开发环境的建立

    c、AVRWARE++开发笔记3:开发板硬件原理介绍

    d、AVRWARE++开发笔记4:蜂鸣器的驱动(实例1)

    e、AVRWARE++开发笔记5:8路直接I/O口控制LED灯(实例2)

    f、AVRWARE++开发笔记6:74HC595串行控制LED灯(实例3)

    h、AVRWARE++开发笔记7:应用全局函数控制LED灯(实例4)

    i、AVRWARE++开发笔记8:基本IO输入实验(实例5)

    j、AVRWARE++开发笔记9:矩阵键盘输入实验(实例6)

    k、AVRWARE++开发笔记10:LED数码管显示实验(实例7)

    l、AVRWARE++开发笔记11:实时时钟显示实验(实例8)

    m、AVRWARE++开发笔记12:异步串行口通讯实验(实例9)

    n、AVRWARE++开发笔记13:温度显示实验(实例10)

    o、AVRWARE++开发笔记14:ADC转换实验(实例11)

    p、AVRWARE++开发笔记15:DAC转换实验(实例12)


推荐阅读

史海拾趣

AMERICASEMI [America Semiconductor, LLC]公司的发展小趣事

为了进一步扩大市场份额,AMERICASEMI积极寻求与其他企业的合作机会。公司与多家知名电子产品制造商建立了稳定的合作关系,为其提供优质的半导体产品和技术支持。同时,AMERICASEMI还积极开拓国际市场,将产品出口到全球多个国家和地区,实现了业务的快速增长。

Data Device Corporation公司的发展小趣事

Data Device Corporation(DDC)成立于1964年,总部位于美国纽约。在创立之初,DDC就专注于为军事和商业航空领域提供高质量的数据接口产品。凭借其卓越的技术实力和对市场的敏锐洞察,DDC迅速在电子行业中崭露头角。通过与各大军事机构和航空公司的紧密合作,DDC不断推出符合市场需求的新产品,逐步奠定了自己在行业中的领先地位。

Frolyt Condensers & Elements GmbH公司的发展小趣事

面对电子行业日益增长的定制化需求,Frolyt Condensers & Elements GmbH积极调整策略,提供从设计咨询到产品生产的全方位定制化服务。公司建立了一支专业的技术团队,能够根据客户的具体需求,快速响应并设计出符合要求的电容器产品。这种高度定制化的服务模式赢得了众多客户的信赖和好评,使得Frolyt在竞争激烈的市场中脱颖而出。

Achronix Semiconductor Corporation公司的发展小趣事

在电子元件领域,Frolyt Condensers & Elements GmbH起初是一家专注于电容器研发的小型制造商。2005年,公司研发团队成功开发出一种新型高性能铝电解电容器,该电容器在耐高温、长寿命和低阻抗方面表现出色,迅速吸引了市场的关注。通过持续的技术创新和严格的品质控制,Frolyt的电容器产品在汽车电子、通信设备等多个领域得到广泛应用,公司因此实现了市场份额的快速增长。

Azoteq公司的发展小趣事

Azoteq公司成立于1998年,由Frederick Bruwer博士创立。作为一家无晶圆厂半导体公司,Azoteq从一开始就致力于开发创新的传感解决方案。其首个产品系列——LightSense™,是针对LED手电筒和穿戴头灯的智能控制而设计的。这一产品系列的推出,为Azoteq在半导体设计制造领域奠定了坚实的基础。

DILABS公司的发展小趣事

随着全球环保意识的提高,DILABS开始注重绿色生产。他们引入了先进的环保技术和设备,确保在生产过程中最大限度地减少废弃物和污染物的排放。同时,DILABS还积极推动电子产品的环保设计,帮助客户实现绿色采购和可持续发展。

问答坊 | AI 解惑

初学者必看,如何学习单片机--转自百度

很多想学单片机的人第一句话就是怎样才能学好单片机?对于这个问题我今天就我自己是如何开始学单片机 ,如何开始上手,如何开始熟练这个过程给大家讲讲。 先说说单片机,一般我们现在用的比较多的的MCS-51的单片机,它的资料比较多,用的人也很 ...…

查看全部问答>

给初学单片机的40个实验

给初学单片机的40个实验~~~~~~~~~~~…

查看全部问答>

我爱龙芯之话题篇

**************************************************************************************************************** 我爱龙芯之话题篇--------谈“完全独立自主”和“引进先进技术” 龙芯,作为我们中国人自己的CPU,从它的问世之日起,就 ...…

查看全部问答>

中文版Cortex_M0处理器用户指南

中文版Cortex_m0处理器用户指南第一章 前言 以下资源来自UP研发中心,版权归原作者所有。 http://up.whut.edu.cn/…

查看全部问答>

请教关于51单片机之间的区别

以前用过EasyProbe 8052F单片机,现在在用C8051F060单片机 想把一个以前编写的程序移植过去 我想问下各位在外部变量的使用上有什么区别和要注意的 因为我在移植后出现了诸如下面的警告: WARNING L1: UNRESOLVED EXTERNAL SYMBOL     ...…

查看全部问答>

请教MAX7219驱动8个LED显示全亮的问题!

关于max7219的显示 我是电子爱好者,近日有个MAX7219的片子,用89C2051 想编个程序显示看看,结果不可以,我感觉没有问题,但我要显示的8个led一上电就全亮,再就没有熄灭过,怎么回事呢,软件问题还是硬件问题,百思不得其解,请问哪位大虾给各指 ...…

查看全部问答>

绝对地址读取问题

data BYTE code * PageIndices[20] = {0x2200,0x2400,0x2600,0x2800,0x2A00,0x2C00,0x2E00,0x3000,0x3200,0x3400 ,0x3600,0x3800,0x3A00,0x3C00,0x3E00,0x4000,0x4200,0x4400,0x4600}; 如何读取绝对地址内容 并将其转化为CHAR 或者STRING 型 ...…

查看全部问答>

checksum 错误 WINCE 编译过程中的错误 谢谢啊 !

编译出错,找了半天也没见什么看得懂的 唯一找到的如下 ----------------- checksum: 66C3 Checksum process NG! address = 0x0, length = 0xFFFFFFFF Calc-Checksum = 0x69DB Save-Checksum = 0x66C3, 0x993C ERROR!    ...…

查看全部问答>

具有挑战的问题EVC

在EVC怎么实现空心字,小弟刚接触EVC,请各位高手帮忙!小弟不胜感激!!…

查看全部问答>

数码相机联机拍摄的问题,或代为编写。

数码相机联机拍摄的问题,或代为编写。    要求能过通过电脑直接控制数码相机拍照,并剪切成2寸或1寸的标准证件照,然后存为JPG格式,当然如果能直接存到数据库中最好,如果能代为编写可付适当报酬,如果能提供相关SDK也感激不尽。 &nb ...…

查看全部问答>