mirrorball 发表于 2024-5-23 11:14:39

STC32单片机系统学习打卡

本帖最后由 mirrorball 于 2024-5-24 10:46 编辑

Day01
一、单片机和桌面系统的基本架构

[*]OSC晶体振荡器通过MCU内部的相位锁相环电路基于该时钟源可以产生不同频率和相位的其他时钟信号。现已在MCU内部集成。
[*]ISA(指令集架构)指令集架构(ISA)是计算机架构的一部分,它定义了处理器可以理解和执行的指令集。ISA包括:

[*]数据类型:处理器能处理的数据类型,如整数、浮点数等。
[*]指令:处理器可以执行的操作,例如算术运算、数据传输、逻辑操作等。
[*]寄存器:处理器内部的存储单元,用于临时存放数据和指令。
[*]地址模式:如何计算和访问数据的内存地址。
[*]微架构微架构是实现指令集架构的具体方法和设计。它涵盖了处理器内部的组件布局和它们如何交互以执行ISA定义的指令。微架构的设计影响了处理器的性能、功耗和生产成本。
[*]CPU处理信息并将处理后的数据送到存储器或者外设。
[*]SRAMSRAM是一种随机存取存储器,用于存储数据,直到电源关闭。它的主要特点包括:

[*]速度快:SRAM比动态随机存取存储器(DRAM)快,因为它不需要定期刷新。
[*]成本高:由于其复杂的内部结构,SRAM比DRAM更昂贵。
[*]低功耗:在不进行数据读写的时候,SRAM的功耗较低。
在单片机中,SRAM常用作内部存储器,存储程序的变量和中间数据。[*]Flash(闪存)用于保存程序代码,不需要上电保存信息。
[*]GPIO用以读取数字信号或输出数字信号,从而与各种电子设备交互。
[*]Timer提供定时和计数功能。
[*]Int Controller(中断控制器)提供处理内部和外部事件的能力。
[*]EMIF(外部存储接口)可拓展外界SRAM芯片。
[*]ADC&DAC模数&数模转换。


二、指令集类型


三、硬件开发基础





四、开发环境基础
对于开发环境配置的相关解释,
Device & Target
[*]Device: 显示当前选择的微控制器型号,本例中为STC STC32G12K128系列。
[*]Xtal: 设置外部晶振的频率,本例中设置为24.0 MHz。这个频率对于设置时钟、定时器等硬件功能至关重要。
CPU Mode
[*]CPU Mode: 设置CPU工作模式。本例选择的是“Source (251 native)”,此处指使用251系列指令集的本地模式。
Memory Model
[*]Memory Model: 决定编译器如何处理内存。内存模型是指编译器如何处理和组织内存中的数据(变量和常量)以及指针的大小。STC32单片机使用XSmall。1. Tiny: data vars, near const, ptr-2
[*]data vars: 数据变量使用默认的数据空间。
[*]near const: 常量使用近地址模式存储,这意味着它们被存放在距离CPU较近的内存区域,通常访问速度较快。
[*]ptr-2: 指针大小为2字节,适用于较小的地址空间。
             2. XTiny: near vars & const, ptr-2
[*]near vars & const: 变量和常量都使用近地址模式存储。
[*]ptr-2: 同上,指针大小为2字节。
             3. Small: data vars, far const, ptr-4
[*]data vars: 数据变量使用默认数据空间。
[*]far const: 常量使用远地址模式存储,允许它们被放置在更大的地址空间内。
[*]ptr-4: 指针大小为4字节,适合较大的内存模型。
             4. XSmall: near vars, far const, ptr-4
[*]near vars: 变量使用近地址模式。
[*]far const: 常量使用远地址模式。
[*]ptr-4: 指针大小为4字节。
             5. Large: xdata vars, far const, ptr-4
[*]xdata vars: 变量使用扩展数据空间,这是针对更大的或特别分配的内存区域。
[*]far const: 常量使用远地址。
[*]ptr-4: 指针大小为4字节。

[*]Code Rom Size: 代码ROM的大小,本例设置为“Large: 64K program”,适用于最大64KB的程序空间。
Data Threshold
[*]data, near, xdata: 这些阈值用于确定变量应当存放在哪部分内存。0值通常表示没有特定限制。
Code Banking
[*]Code Banking: 如果启用,允许程序分区存储在不同的内存块中。

[*]Banks: 代码存储区的数量。
[*]Bank Area: 每个代码存储区的起始和结束地址。

External Memory
[*]Start, Size: 如果使用外部内存,可以在这里设置每个外部内存块的起始地址和大小。本例中没有配置外部内存。
其他选项
[*]Use On-Chip Code Rom: 使用芯片内置的代码ROM。
[*]4 Byte Interrupt Frame Size: 设置中断帧大小为4字节。
[*]Treat far pointer as huge pointer: 将远指针视为巨大指针处理。

代码优化(Code Optimization)
见图,若选择8、9级别,需要勾选“Linker Code Packing”前面的复选框





size和speed的影响无明显差别
register coloring:可以减少对内存的访问次数,还可以优化整个程序的执行时间。


生成目标文件




页: [1]
查看完整版本: STC32单片机系统学习打卡