历史上的今天
返回首页

历史上的今天

今天是:2024年12月03日(星期二)

正在发生

2019年12月03日 | AVR_GCC程序设计基础

2019-12-03 来源:eefocus

1.在avr studio的project options(工程选项里面)在General选项里面需要注意的是:

avr_studio

edit configuratio:这个选项的意思是当前项目的默认输出文件夹是default,而且这个文件夹的名称是可以改的

Device:是我们要选择工作的芯片

Frequency:是芯片的工作频率

Optimizatio:是程序编译时优化的级别主要是优化程序输出可执行文件的大小

unsigned char(-funsigned char):默认程序中的char类型为是无符号类型

其他的设置都基本上是默认的设置。

2.makfile

   在使用avr_gcc的编译器是,makfile是必不可少,如果你是默认的话则在你的选项里面不需要选择use external makfile选项。如果你要自己编写的话就需要放到自己的工程目录下,但是一般的情况下我们不这样做,我们只是需要在avr_gcc的安装程序里面运行MFile修改里面的基本参数保存下就可以了。

PROJECT:设置输出的项目的名称,需要的话可以自己改写

MCU:设置自己当前项目所选用的cpu

TARGET:设置输出目标调试文件(xx.elf)

DF CPU:设置cpu的时钟频率

OBJECTS:列出built时使用的目标文件(xx.0)

基本的情况大致和以上差不多,但是肯能版本的关系称呼不一样,但是这几个主要的选项是比不可以少的。

3.基本的数据类型

signed char(char)         8位              -128~127

unsigned char              8位              0~255

char                            8位             以上的两种之一,关键在开始的默认选择里面是什么就是什么

int(signed int)              16位           -32768-32767

unsigned int                16位            0~65535

long(signed long)         32位          -2147483648~2147483647

unsigned long              32位           0~4294967295

float/double                 32位          -3.4*10(38)~3.4*10(38)

4.基本的技巧-分解取数

对整数的分解取数

unsigned char num=224;

unsigned char tab[3];

tab[0]=num/100;

tab[1]=num/10%10;

tab[2]=num%10;

对浮点数的分解取数

float num =123.45;

unsigned int Bum=num*100;

unsigned char tab[5],i;

for(i=4;i!=0xff;i—)

{

c[i] = y%10;

y/=10;

}注解:现在我们选择的判断条件是!=0xff不是0是因为我们要循环5次当i=0时是循环第五次,循环这次后由于i是unsigned char 类型,要是在循环一次的话就会溢出成为0xff这样就不符合条件就跳出循环。同理要是要你分解0x7f的话就只要把10换成16就可以,其他的不变


备注:/是取商求模,%是取余数。

4.基本的技巧-IO管脚的操作

要使PB端口逐位轮流循环置1:

1、可先定义变量i,并使之在0~7之间取值,然后使PORTB = 1<2、可先定义变量i,并使之在0~7之间取值,PORTB = _BV(i)

要使PB端口逐位轮流循环置0:

1、可先定义变量i,并使之在0~7之间取值,然后使PORTB = ~(1<2、可先定义变量i,并使之在0~7之间取值,PORTB = ~_BV(i)

外接LED闪烁或者蜂鸣器发声:

1.#define LED_BLINK()  PORTRD^=_BV(PD7)

2.#define BEEP()           PORTD^=_BV(PD7)

5.数组、字符串、指针

数组:定义7段数码管0~9的共阳段码

const unsigned char tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

字符数组:定义并且在数码管上显示


1.定义:

unsigned char str[20]=”xmphoenix”;

unsigned char str[20]={“xmphoenix”};

unsigned char str[20]={‘x’,’m’,’p’,’h’,’o’,’e’,’n’,’i’,’x’};


2.显示:

for(i=0;i<9;i++){显示字符};

for(i=0;ii=0;while(s[i++]!=’’){显示字符}

备注:


3.同时字符串还可以这样定义

unsigned char str[]=”xmphoenix”;

usnigned char *str=”xmphoenix”;

在数组和字符串的最后面系统默认的加上了结束标志符0x00,十进制和ASCII码之间的转换:ASCII=十进制+0x30;


4.二维字符数组

定义:unsigned char str[][20]={“xmphoenix”,”ncut”,”beijing”}

显示:for(i=0;i

5.gcc的相关函数

itoa(x,(char*)x,x) 有符号的10进制x转化成字符串保存在char *

itoa(x,(char*)x,x)无符号的10进制x转化成字符串保存在char *

还可以用sprintf来转换进制和ASCII码具体参考技术手册

指针:

unsigned char str[20]=”xmphoenix”;

unsigned char *st =str;

for(i=0;*str!=0;i++){显示字符};

推荐阅读

史海拾趣

Holmes Co Inc公司的发展小趣事

Holmes Electronics Inc. 起初是一家小型电子元件制造商,专注于生产基础电阻器和电容器。然而,随着电子行业的快速发展,公司创始人意识到技术创新的重要性。他们投入大量资源进行研发,成功开发出一种新型的高精度温度传感器,这种传感器能够在极端环境下保持高精度,迅速被智能手机、医疗设备和工业自动化系统采用。这一技术创新不仅为公司赢得了市场份额,还奠定了Holmes Electronics在电子行业的技术领先地位。

Hi-Optel Technologly Co Ltd公司的发展小趣事

面对日益增长的全球市场需求,Holmes Electronics决定实施全球化战略。他们首先在亚洲建立了生产基地,利用当地的成本优势和供应链资源,大幅提高生产效率并降低成本。随后,公司又在欧洲和美国设立了研发中心和销售网络,以更好地服务当地客户并捕捉市场机会。这一全球化战略不仅使Holmes Electronics的产品遍布全球,还增强了公司的市场响应能力和品牌影响力。

Axiomtek公司的发展小趣事

面对日益增长的全球市场需求,Holmes Electronics决定实施全球化战略。他们首先在亚洲建立了生产基地,利用当地的成本优势和供应链资源,大幅提高生产效率并降低成本。随后,公司又在欧洲和美国设立了研发中心和销售网络,以更好地服务当地客户并捕捉市场机会。这一全球化战略不仅使Holmes Electronics的产品遍布全球,还增强了公司的市场响应能力和品牌影响力。

DFRobot公司的发展小趣事

在竞争激烈的电子行业中,DFRobot始终保持创新精神和技术领先。他们不断推出具有创新性和实用性的新产品和技术解决方案,如基于RISC-V构架的开源硬件产品、人工智能教育产品等。这些新产品和技术不仅满足了客户的需求,也推动了行业的发展和进步。同时,DFRobot还注重知识产权保护,积极申请各类专利和软件著作权,保护公司的创新成果和知识产权。

通过以上五个故事,我们可以看到DFRobot在电子行业中的发展历程和成就。他们凭借对技术的热爱和不懈的努力,逐渐在机器人和开源硬件领域崭露头角,并通过拓展教育市场、国际合作和品牌建设等举措,不断提升公司的竞争力和影响力。

上海如韵(CONSONANCE)公司的发展小趣事

随着电子行业的快速发展,市场竞争日益激烈。为了应对这一挑战,如韵不断调整和优化产品线,加强与国际知名企业的合作,引进先进的技术和设备。同时,公司加大了对研发团队的投入,鼓励员工进行创新实践和技术交流。

在面对行业内的价格战和恶性竞争时,如韵始终坚持产品质量和客户满意度为首要原则。通过不断提升产品质量和服务水平,如韵赢得了客户的信任和口碑。即使在行业面临困境的时期,如韵也凭借着强大的技术实力和良好的市场口碑保持了稳健的发展态势。

Bourns公司的发展小趣事

Bourns公司一直以来都注重技术研发与创新。不论是自行研发的产品,还是通过并购或特许所取得的技术,Bourns都持续投入于开发新产品。例如,Bourns推出的最新型旋转式电位器,具备绝缘塑料轴、高额定旋转周期以及宽泛的工作温度范围等特性,这些创新产品在市场上取得了良好的反响。

问答坊 | AI 解惑

建筑智能化系统工程施工图设计主要问题(转载)

摘要:本文指出建筑设计院和系统集成商承担建筑智能化系统工程设计的状况将长期存在。由于种种原因,施工图设计质量不尽如人意,存在较多的问题。精心设计、精心施工,才能提高智能化系统工程的设计质量和工程技术水平,需要领导重视,设计人员敬业 ...…

查看全部问答>

无线电基础与收音机

基本的电子书,不错…

查看全部问答>

软复位无法正常复位系统,大家的软复位系统中硬件是如何处理的?

每次重启到解压linux时就挂了。软复位是接到74LCX00的,和硬复位相与提供整个系统的复位信号。抓了一下软复位指令,指令发出后给出的电平实在太小了,而且时间也很短,加了个RC延迟后还是不行。想问下大家有没有什么最近简单的方法来延迟这个软复位 ...…

查看全部问答>

串口不能多次写入

大家好:     我现在在学习单片机,用的周立功DP51-H和DPFLASH下载软件。刚往单片机上烧写小程序还行,但是只要一上20k的程序,就很有问题.具体的情况就是:20k以上的代码,只能烧写一次。第二次烧写,DPFLASH就会提示通讯口出现错误, ...…

查看全部问答>

PIC单片机?

我想通过PIC18F6622的芯片,来完成一个智能火焰监测系统 但我现在出现了一点问题,就是想知道,最能检测火焰的硅光电池哪种型号的比较好用?? 还有硅光电池连接AD转换器,这个AD转换器应该连接芯片的哪个引脚??? 请求帮忙。。。…

查看全部问答>

GPIO数据寄存器

谁写过操作LPC1114的GPIO数据寄存器读写数据的操作!!分享下!!…

查看全部问答>

如何设置Qt/Embedded Linux程序的桌面背景

    上面的程序为一个ARM下的QT程序通过QVFB运行时的效果图。 我们知道在桌面Linux中设置系统的背景图片是非常简单的。通常只需要右键选择设置桌面背景即可。 但在Qt for Embedded Linux的环境中,并没有桌面系统,如何来设置整个 ...…

查看全部问答>

求教:LF2407如何外扩存储器?

不知那位大哥用过LF2407,我想请教一下:如果我想用LF2407外扩一片64Kx16的数据RAM和一片64Kx16的程序RAM,我的LF2407的引脚应该怎样搭建?另想问一下:/STRB这个引脚有何作用?在外扩存储器时  是否可以不用这个脚? …

查看全部问答>

2812烧写求助

急 各位大侠看一下--2812密码保护 小弟今天第一次烧flash ,结果程序烧进去了 但是password(3f7ff8-)段被写入数值了,flash被保护了,在map文件中找到 .reset     0    003f7ff6    00000002  &n ...…

查看全部问答>

关于LM3S2B93 的CAN 使用问题,请高手帮忙。 谢~!

我在做LM3S2B93的CAN通讯的时候,出现如下两个错误:   用最新的库:driverlib.a   Error[Li005]: no definition for \"CANRegRead\" [referenced from E:\\CAN\\Debug\\Obj\\my_can.o] Error[Li005]: no definition for \"CANRegW ...…

查看全部问答>