从零开始的单片机学习(五)

五、写代码之前的准备工作
    1、keil软件的介绍和安装
        a、IDE概念
            IDE就是集成开发环境,就是一套用来开发的完整的软件系统。

        b、Keil uvision介绍
            (1)发展
            (2)版本:1.2、1.3、1.4、1.5......
            (3)安装包在哪里:网络、开发板配套资料包

        c、安装和破解

        d、Keil和MDK
            (1)本来只能凯发单片机,叫keil
            (2)后来ARM公司收购了keil软件,基于keil扩展了ARM的开发,主要用来开发ARM Cortex-M系列单片机的程序
                (譬如STM32),软件改名MDK
            (3)刚才我们安装的是Keil C51,只能用来开发51单片机程序。如果要开发ARM Cortex-M单片机要扩展安装MDK
                安装包,后面第三季用到的时候再介绍。

    2、keil基本使用演示
        a、使用Keil打开已有的工程
            (1)在IDE(Keil)中开发软件,首先要新建一个工程项目(Project),Keil软件需要一些工程项目文件来管理
                项目中的代码。
            (2)别人事先创建好的工程项目,我们可以使用Keil软件直接打开。打开方法有2个:
                    第一个:进入项目文件夹后双击(项目名.uvproj)文件来打开。
                    第二个:通过快捷图标直接打开Keil软件,在软件中直接打开工程文件(步骤:点击菜单栏中的“project”
                        ->在下拉菜单栏中选择“open project”->在弹出的窗口中选择目标工程的项目文件即类似于
                        [项目名.uvproj]这样的文件即可打开目标工程项目)。当我们直接双击快捷图标打开Keil软件时,
                        会默认打开上次关闭时打开的工程项目。(如果上次关闭时没有打开工程,则本次打开也未打开任何工
                        程)。

        b、编译Keil工程
            (1)工程项目中有很多文件,简单分为三类:工程文件、源文件、目标文件。工程文件就是keil软件工作所需要的文
                件,和我们写程序没有什么关系。源文件就是我们编程编出来的。目标文件就是keil中的编译器等工具把我们的
                源文件编译后生成的文件,最终向单片机中烧录时需要目标文件来烧录进去。
            (2)我们工程刚创建好(空工程)的时候只有工程文件,此时我们需要去编写添加源代码,代码写好后就有了工程文
                件和源文件,此时点击编译操作就可以得到目标文件。
            (3)编译的时候有可能会报错(Errors)和报警告(Warnnings),错误就是由很严重的问题,此时编译无效并不
                能生成最终需要的可烧录的程序文件,必须去排除错误重新编译才可以;警告是轻微问题,有时候可以忽略有时候
                不行,具体要凭借经验。
            (4)建议编译是直接点击快捷图标栏里的Rebuild进行编译。

        c、在Keil中新建工程
            (1)建立新工程之前建议先关闭之前老旧的工程。
            (2)在菜单栏中选择project -> 在弹出的下拉菜单中选择New μVision Project -> 弹出窗口选择合适的位置
                保存工程项目,并输入项目名。
            (3)完成第二步后悔弹出窗口就要选择项目的CPU,可以在菜单中选择所需的CPU型号例如常见的选择Atmel ->
                AT89c51,也可以在上房的Search中输入CPU型号的关键字,就会在下方显示符合关键字的CPU型号,原则所需
                的CPU型号,点击OK即可。选择CPU完成后弹出来窗口要选择“是否添加标准的8051的起始代码”,选择“是”,
                确定就完成了新工程醒目的创建。
            (4)现在可以自己写代码了,或者复制一个已经写好的代码文件进来,并且添加到我们的工程项目中
            (5)编译完成,发现一个问题:没有可以用来烧录的.hex文件。编译时生成的文件有很多,但是只有这个.hex文件
                才是我们最终需要的,可以用来烧录的文件。其他都属于中间文件(杂碎)。
            (6)解决方案:进行配置的设置,打开快速菜单栏中“Target Options”,在弹出的窗口中选择“Output”选项
                卡在该选项卡下的“Create HEX File Format:HEX-80(一般是这个)”选项前打上“√”,再点击“OK”。
                我们再重新编译文件就会发现烧录所需的.hex文件就出现了。

    3、C语言基本介绍
        a、汇编语言与C语言
            (1)汇编语言编程比C语言难
            (2)用汇编或者用C语言都可以完成任务,写出程序
            (3)推荐学习路线:用C语言入门学会单片机,然后去扩展学习汇编

        b、标准C语言和Keil C51的C语言
            (1)C语言并不是专门为51单片机发明的,C语言的用途很广的
            (2)标准C语言就是独立于各种应用领域而独立成为标准的C语言,和各种平台的具体的C语言有微小的差异。

        c、学习方法和思路
            (1)学过C语言基本概念的,很容易上手
            (2)彻底没有接触过编程语言的,刚开始甚至可以靠死记硬背来上手(记忆可以辅助理解,理解可以促进记忆)
            (3)C语言关键字是英文字母缩写,可以辅助记忆
            (4)先学C语言基本概念,其余的用到在解释

    4、C语言基本概念
        a、关键字,C语言中语言本身定义的具有特殊含义的单词。

        b、函数,函数是C语言中代码的基本组成单位。

        c、变量,就是程序运行过程中可以改变的量。

        d、头文件,就是.h文件,是被源文件包含的,是对源文件的补充。

        e、源文件,就是.c文件,其实源文件就是程序文件。

        f、可执行程序,由源文件编译后生成的可以在单片机中烧录执行的.hex文件。

        g、注释,C语言中的注释有两种,一种是"/* xxx */",另一种是"//xxxx",注释内容不算是代码的正式内容,而是对
         代码的说明,注释是给人看的。注释删除掉整个程序结果是不变的。
    
    5、整体流程梳理
        a、程序开发过程
            (1)源代码编写
            (2)编译生成可执行程序
            (3)烧录

        b、单片机工作流程
            (1)单片机上电
            (2)时钟模块起振,CPU有了时钟节拍,单片机内部各模块开始工作
            (3)CPU从ROM中逐条读取可执行程序俩执行,RAM存储变量(对应C语言程序中定义的变量)配合程序执行,直到关机。

        c、程序是调出来的
            (1)程序不可能一次写好达到要求
            (2)先解决编译时错误
            (3)再解决运行时的问题
    
    6、跟着数据手册学单片机1
        a、介绍数据手册
            (1)数据手册是什么
                数据手册,其本质上就是芯片的文档。数据手册中描述的都是这个芯片/器件的物理参数、电学参数、时序图、编
                程需要的信息、别的信息。总的来说这个芯片的所有有用的信息都在数据手册中,使用这颗芯片过程中的任何疑问
                都可以去数据手册中查询。    
            (2)数据手册的内容结构
                以STC90系列芯片为例,它的数据结构总的来说可以分为三大块:芯片的总体介绍、芯片重要功能的详细介绍(比
              如:指令系统、中断系统、定时器...等等)、最后是一些附录,介绍一些比较重要的文献资料,譬如汇编和C语言
              编程的文献、芯片的电气特性、寻址的测试程序、串口扩展IO口....等等。
            (3)数据手册使用方法:先读概括、然后按需读模块

        b、STC90C51简单介绍
            (1)参考数据手册第6页
            (2)12T和6T和1T的问题:典型的51单片机都是12T的,12T的意思就是51单片机内部会对外部时钟频率进行12分频
                之后再给CPU(如果外部晶振是12MHz,则外部时钟频率就是12MHz,内部CPU的主频就是12MHz/12=1MHz),
                6T的含义就是CPU时钟频率 = 外部时钟频率/6,1T的含义就是内部时钟频率 = 外部时钟频率/1。所以1T单片
                机是最快的。
    
    7、跟着数据手册学单片机2
        a、STC90C51内部结构图
            (1)总线:单片机内部模块与模块之间的通信线。
            (2)模块:单片机内部各自独立具有一定功能的单元。
            (3)要求:大家能看懂图例,知道图中分别表示的是什么。当我们对CPU内部元件模块理解很少的时候其实从框图中
                    看不出来什么。框图向我们传达了很多信息,将来回顾的时候能看出来就行了。

        b、单片机管脚图
            (1)DIP封装和SMD封装
            (2)引脚编号和名字
                    每一个引脚都有个编号,这个编号主要是看文档时文档里用来描述这个引脚作用时做编辑用的,跟编程是无
                关的。所以引脚编号并不重要。每一个引脚除了编号外还有个名字,这个引脚的名字比较重要。因为这个引脚的
                名字和我们将来在编程中控制的这个引脚的名字是相同的,所以引脚名字和编程有关。

        c、关于仿真器和ISP
            (1)仿真器是早期开发单片机软件是的辅助设备,早期的单片机很多只能烧录一次,或者不提供调试功能,软件开发
                难度很大。后来单片机厂商就专门发明了一个设备叫仿真器,仿真器能够仿真出单片机的效果,可以用来调试程
                序。    所以那时候买了单片机之后还要买仿真器,用仿真器来开发,好了之后再烧录到单片机中运行。
                该方法的缺陷:
                            1、一个仿真器对应一个单片机型号;
                            2、仿真器很贵
            (2)因为仿真器很贵,所以有些公司开发出了软件仿真器,叫软仿真。譬如keil中就自带了软件仿真的功能。
            (3)后来仿真器被放弃,升级成了调试器。调试器的思路是:程序开发还是在单片机中,只不过我们用一个专门的调
                试器可以在单片机中直接完成仿真。典型的调试器如Jlink。调试器相比仿真器来说更便宜,所以是更好的解决
                方案。现在的单片机大都支持调试器方案。
            (4)有时候开发程序并不适用调试器进行单步调试,而是直接开发了程序之后通过串口将单片机下载到单片机中(ISP
                方式下载)去运行,然后根据运行的现象来直接判断定位问题,然后解决问题,最后完成程序软件的开发。这种方
                式下不需要专门的硬件仿真器和调试器,有时候会配合使用软件仿真功能。还可以配合使用串口打印,或者LED灯
                的指示等方式来进行调试。

            总结:3和4是我们现在开发软件的主流方式。相对来说,没经验的人更喜欢3(有经验的喜欢4);越往后(从单片机
                到嵌入式到物联网)3用的越少,4用的越多。

            本课程方向:51单片机阶段用软件仿真结合ISP下载方式来调试程序,STM32学习阶段是调试器和ISP下载两种方式相
                    结合,到嵌入式阶段就又回到了4的方式,以后往后都不会再用Jlink等调试器了。        
    
    8、跟着数据手册学单片机3
        a、选型表浏览

        b、单片机最小系统介绍
            (1)单片机最小系统,就是指的单片机加上最少的可以工作的外围电路。
            (2)最小电路有三部分电路:供电电路、上电复位电路、晶振电路

        c、管脚定义
            (1)电源等管脚是单片机上面用来支持单片机工作的一些管脚,譬如VCC和GND、RST等等,这些引脚和编程无关,程
                序也无法操控这些管脚。这些引脚软件工程师不用去管,而硬件工程师很在意这些管脚。
            (2)IO端口是单片机和外部电路交互的窗口,外部电路通过IO端口向单片机内部输入信息(input),单片机通过IO
                端口向外部输出信息(output)。单片机中大部分引脚都是IO(P开头的都是IO),将来单片机内部的程序运行
                就会通过操作这些IO来和外部电路交互,从而实现程序目的。
            (3)管脚复用:普通引脚只有一个名字,一种作用;有些引脚有2个名字(譬如P3.0/RxD),这种引脚就有2种作用
                (意思不是说这个引脚可以同时做2件事情,而是说这个引脚在不同的时候可以工作在不同的2种模式下),可以
                通过软件配置让这个引脚工作在某种工作模式下。一个引脚的两个工作模式之间没有关联,管脚复用存粹是为了
                省引脚。
    
    9、跟着数据手册学单片机4
        a、封装尺寸
        b、命名规则
    
    10、二进制和IO端口
        a、二进制和bit位

        b、位(bit,b)和字节(byte,B)
            (1)1字节 = 8位

        c、初识IO口
            (1)IO(input/output),单片机的IO口在物理上表现为单片机的引脚。
            (2)IO对单片机的重要意义:IO对于单片机就如同器官对于人一样重要。我们人类可以对外界做出反应处理事情,是
                因为有感觉器官把外界信息送入大脑,大脑处理后指挥行动器官(口、手、发声器官)做出反应。单片机也是如此,
                外界电路把信息通过IO口送入单片机,单片机依据程序进行处理,并通过IO对外围电路发出指令做出处理。因此,
                IO是单片机获得外界参数的渠道,是指挥相应的电子元件做出反应的桥梁。
            (3)单片机有多少IO:不同型号的单片机引脚数目是不同的,引脚数越多单片机可以做的事情就越多。但是引脚越多
                单片机的价格就越昂贵,因此可以根据自己的需求选择合适引脚数量的IO。因此,单片机的IO数量是不确定的,
                可以根据实际需求在性能和成本之间取得一个平衡,选择合适IO数量的单片机。
            (4)IO的组织形式:首先一个单片机的众多IO分为多个端口(port),一个端口由若干个IO引脚组成(很多时候是
                8个)组成。可以理解为一个端口就是一组IO引脚。
            (5)如何编程控制IO:通过操控电平的变化来操控IO口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值