(1)IDE就是集成开发环境,就是一套用来开发的完整的软件系统。
(1)本来只能用来开发51单片机,叫Keil
(2)后来ARM公司收购了Keil软件,基于Keil扩展了ARM开发,主要用来开发ARM Cortex-M系列单片机的程序(比如STM32),软件名改为MDk
(3)刚才我们安装的是Keil C51 ,只能用来开发51单片机程序,如果要开发ARM Cortex-M单片机要扩展安装MDK安装包。
(1)IDE(Keil)来开发软件,需要先创建一个工程项目,Keil软件需要一些工程项目文件来关联项目中的代码。
(1)工程项目中有很多文件,简单分为三:工程文件,源代码,目标文件
工程文件就是Keil软件工作需要的文件,和我们写程序没有关系。
源文件就是我们写的源代码,就是我们编程出来的
目标文件是Keil中的编译器等工具把我们源文件编译后生成的文件,最终像单片机中烧录时需要目标文件来烧录进去。
(2)我们工程刚刚创建好(空工程)时只有工程文件,此时我们要去编写添加源代码,代码写好后就有了工程文件和源文件。此时点编译操作就可以得到目标文件
(3)编译的时候有可能会报错和报警告,错误就是有很严重的问题,此时编译无效并不能生成最终需要的可烧录的程序文件,必须去排除错误重新编译才可以;警告是轻微问题,有时候可以忽略有时候不行,具体要凭经验分析。
(4)建议编译时直接点快捷图标中的rebuild
(1)再创建新代码之前先将原来的代码删除
(2)选择CPU,选择Atmel中的80C32E
(3)编译完成,发现一个问题:没有可以用来烧录的.hex文件,编译时生成的文件有很多,但是只有这个.hex文件才是我们最终需要的,可以用来烧录的文件。其他的属于中间文件(杂碎)
(4)解决没有.hex文件的方法:关闭菜单,重新rebuild
(1)汇编语言编程比C语言还难
(2)用汇编或者用c语言都可以完成任务,写出程序
(1)c语言并不是为51单片机发明的,c语言用途很广
(2)标准c语言就是独立于各种应用领域而独立成为标准的c语言,和各种平台的具体的c语言有微小差异。
(1)源代码编写
(2)编译生成可执行程序
(3)烧录
(1)单片机上电
(2)时钟模块起振,CPU有了时钟节拍,单片机内部各模块开始工作
(3)CPU从ROM中逐条读取可执行程序来执行,RAM存储变量(对应C语言程序中定义的变量)配合程序执行。直到关机。【一个单片机一定是死循环】
(1)程序不可以一次写好达到要求
(2)先解决编译时错误
(3)再解决运行时问题
(1)数据手册干什么的
(2)数据手册内容结构
(3)数据手册怎么使用:先概括读,然后按需读模块
(1)12T和1T的问题:典型的51单片机都是12T的,12T的意思是51单片机内部会对外部时钟频率进行12分频后再给CPU(如果外部晶振是12MHz,则外部时钟批量就是12MHz,内部CPU的主频就是12MHz/12-1Mhz),6T的含义就是CPU时钟频率=外部时钟频率/6,1T的含义就是内部CPU时钟频率=外部时钟频率/1,所以1T单片机是最快的。
(1)总线:单片机内部模块于模块之间的通信线
(2)模块:单片机内部独自具有一定功能的单元
(3)要求:可以看懂例图即可。当我们对XPU内部原件模块理解很少的时候其实从框图中看不出什么。
每一个引脚有编号,这个编号主要是看文档时里面用来描述这个引脚的作用时做标记用的,跟编程无关的。所以一般引脚编号并不重要。
每一个引脚除了编号外还有一个名字,这个引脚的名字比较重要。因为这引脚名字和我们将来再编程中控制这个引脚时的名字是一样的,所以引脚名字和编程有关。
(1)早期开发单片机软件时的辅助设备,早期的单片机很多只能烧录一次,或者不提供调试功能,软件开发难度很大。后来单片机厂商就专门开发了一个设备叫仿真器,仿真器可以仿真出单片机的效果,可以用来调试程序。所以我们那个时候买单片机后还要买仿真器,用仿真器来开发
(2)缺陷:1.一个仿真器对应1个单片机
2.仿真器很贵
(3)后来仿真器被放弃,升级成了调试器。调试器的思路:程序开发还是再单片机中,只不过我们用一个专用的调试器可以再单片机中直接完成仿真。典型的调试器如Jlink。调试器比仿真器来说更便宜。现在大多数单片机都支持调试器。-->主流方法
(1)有时候开发程序并不使用调试器进行单步调试,而是直接开放了程序后通过串口将程序下载到单片机中(ISP方式下载)去运行,然后根据运行的现象来直接判断定位问题,然后解决问题。最后完成程序软件开发。这种方式下不需要专用的硬件仿真器和调试器,有时候会配合使用软件仿真功能。还可以配合使用串口打印,或者LED等的指示等方法进行调试-->主流方法
51单片机阶段用软件仿真结合ISP下载方式来调式程序。STM32学习阶段是调试器和ISP下载两种方式相结合。
(1)单片机的最小系统:是指单片机加上最少的外围电路,然后还可以工作的。
(2)最小系统中有三部分:供电电路,上位复位系统,晶振电路
单片机上面有一些管脚是用来支持单片机工作的,比如VCC和GND,RST(上位复电路)
等,这些引脚和编程无关,程序也无法操控这些引脚。这些引脚软件工程不用管,硬件工程师很在意。
(1)IO端口是单片机和外部电路进行交互的窗口,外部电路通过IO向单片机内部输入(input)信息,单片机通过IO端口向外部输出(output)信息。单片机中大部分的引脚都是IO(P开头的引脚都是IO),将来单片机内部的程序运行就会通过操作这些IO来和外部电路互交,从而实现程序目的。
(1)普通引脚是一个引脚只有一个名字,一种作用;有些引脚有2个名字(比如p3.0/RxD),这种引脚就有2种作用(意思不是说这个引脚可以同时做2件事情,而是说这个引脚再不同的时候可以工作再不同的2种模式下),可以通过软件编制工作再A模式下则和B模式一点关系都没有。
(1)为什么要管脚复用???纯粹为了省引脚。
字节(Byte)与位(bit)、十进制与二进制的关系_bit和二进制位数关系_小宋同学--的博客-CSDN博客
家庭网络:
10MB 还是 10Mb【一般指这个】
100Mbit/s---->相当于12.8MB
(1)1字节=8位
(1)单片机的IO物理上表现为单片机的引脚
首先一个单片机的众多IO分为多个端口(port),一个端口由若干个IO引脚(很多时候都是8个)组成。可以理解为一个端口就是【一组】IO引脚。--->8个引脚【组成一组】,因为因引脚输入或者输出都是依靠电平(用0或者1表示),则8位组成1个B。
p0=0x00;//表示将第0组(8个引脚)全部置为低电平。