文章目录
- 一、单片机简介
- 二、Cortex-M系列介绍
- 三、初识STM32
- 四、STM32原理图设计
- 五、搭建开发环境
- 六、STM32初体验
- 七、MDK5使用技巧
一、单片机简介
-  单片机是什么? 单片机:Single-Chip Microcomputer,单片微型计算机,是一种集成电路芯片。 下面是电脑与单片机的对应关系:  
-  单片机的特点? - 体积小:<5mmx5mm
- 功耗低:mA级
- 集成度高:IO、TIM、AD、DA
- 使用方便:C、Debug
- 拓展灵活:IIC、SPI、FSMC
 
-  单片机有什么用? - 仪器仪表:电源、示波器、焊台
- 家用电器:空调、冰箱、洗衣机
- 工业控制:机器人、PLC、电梯
- 汽车电子:GPS、ABS、胎压监测
 
-  单片机发展历程?  
-  了解两种指令集? 对比项 复杂指令集计算机(CISC) 精简指令集计算机(RISC) 目的 为了便于编程和提高存储器访问效率 为了提高处理器运行速度 指令特点 1,指令多,模式多,格式可变 
 2,指令的执行需要的时钟周期差距很大
 3,无流水线或流水线程度较低
 4,指令由微代码翻译执行1,指令少,模式少,格式固定 
 2,大多数指令只需1个时钟周期
 3,流水线结构
 4,指令直接由硬件执行优点 1,指令丰富、功能强大 
 2,寻址方式灵活1,指令精简,易于设计,使用率均衡 
 2,程序执行效率高缺点 1,指令使用率不均衡 
 2,不利于采用先进结构提高性能
 3,结构复杂不利于超大规模集成电路实现1,指令数较少,功能不及CISC强大 
 2,寻址方式不够灵活使用CISC和RISC举例:  
-  冯诺依曼结构和哈弗结构的区别?  冯诺依曼结构的优点是占用的资源少,哈弗结构的优点是执行效率较高。 
二、Cortex-M系列介绍
-  ARM公司:只做内核设计和IP授权,不参与芯片设计。 
  
-  ARM架构为什么能风靡全球? - 低功耗、低成本、高性能
- 支持16/32位双指令集
- 拥有众多合作伙伴
 
-  Cortex内核分类及特征? 对比项 Cortex-A 
 (Application)Cortex-R 
 (Real-time)Cortex-M 
 (Microcontroller)特点 高时钟频率,长流水线,高性能 较高时钟频率,较长的流水线,实时性强 时钟频率较低,通常较短的流水线,超低功耗 应用场景 移动计算、智能手机、平板电脑、数字电视 军工、汽车电子、无线基带、硬盘控制器 工控、传感器、消费电子、家用电器、医疗器械 
三、初识STM32
-  STM32是什么? ST:意法半导体, M:MCU/MPU,32:32位  
-  STM32命名规则?  
四、STM32原理图设计
-  芯片的基本参数(STM32F103ZET6) 参数 范围 主频 72MHz FLASH 512KB SRAM 64KB 工作电压 2.0~3.6V 最大电流 150mA IO引脚接入电压范围 COMS端口:-0.3V ~ 3.6V 兼容5V端口:-0.3V ~ 5.5V 单个IO引脚最大电流 25mA 
-  STM32F103ZET6引脚分布  STM32引脚类型:电源引脚、晶振引脚、复位引脚、下载引脚、BOOT引脚、GPIO引脚。 
-  单片机最小系统? 最小系统:保证MCU正常工作的最小电路组成单元 

-  电源电路  
-  复位电路 

-  BOOT启动电路  
-  晶振电路  
-  下载调试电路  
五、搭建开发环境
-  常用开发工具 工具 名称 所属公司 说明 集成开发环境(IDE) MDK Keil STM32最常用的集成开发环境,简单易用 EWARM IAR 支持STM32开发,用的人少一些 仿真器 DAP ARM 开源、免驱、带虚拟串口功能、速度快、廉价 STLINK ST 支持全面、稳定、廉价 JLINK Segger 稳定、高速、价格贵 串口调试助手 XCOM 正点原子 功能多、稳定、简单易用 SSCOM 丁丁 稳定、小巧、简单易用 
-  STM32串口和电脑USB通信示意图?  
六、STM32初体验
-  MDK5编译例程 使用MDK5编译例程,在Program Size里面有四种数据类型,Code、 RO-Data、RW-Data、ZI-Data 数据类型 占用Flash or SRAM 说明 Code Flash 代码 RO-Data Flash 只读数据,一般是指 const 修饰的数据 RW-Data Flash and SRAM 初值为 非 0 的可读可写数据 ZI-Data SRAM 初值为 0 的可读可写数据 
-  DAP下载 -  电路连接  
-  硬件连接  
-  软件配置 配置ST-Link 
  设置下载算法  
-  开始调试  
 - 复位:其功能等同于硬件上按复位按钮。相当于实现了一次硬复位。按下该按钮之后,代码会重新从头开始执行。
- 执行到断点处:该按钮用来快速执行到断点处,有时候你并不需要观看每步是怎么执行的,而是想快速的执行到程序的某个地方看结果,这个按钮就可以实现这样的功能,前提是你在查看的地方设置了断点。
- 停止运行:此按钮在程序一直运行的时候会变为有效,通过按该按钮,就可以使程序停止下来,进入到单步调试状态。
- 执行进去:该按钮用来实现执行到某个函数里面去的功能,在没有函数的情况下,是等同于执行过去按钮的。
- 执行过去:在碰到有函数的地方,通过该按钮就可以单步执行过这个函数,而不是进入这个函数单步执行。
- 执行出去:该按钮是在进入了函数单步调试的时候,有时候可能不必再执行该函数的剩余部分了,通过该按钮就可以一步执行完该函数的剩余部分,并跳出函数,回到函数被调用的地方。
- 执行到光标处:该按钮可以迅速的使程序运行到光标处,其实是挺像执行到断点处按钮功能,但是两者是有区别的。断点可以有多个,但是光标所在处只有一个。
- 反汇编窗口:通过该按钮,就可以查看汇编代码,可以用来分析程序。
- Call Stack窗口:通过该按钮,显示调用关系和局部变量窗口,显示当前函数的调用关系和局部变量,方便查看,对分析程序非常有用。
- 观察窗口:MDK5提供了2个观察窗口,该按钮按下,会弹出一个显示变量的窗口,输入你所想要观察的变量/表达式,即可查看其值,是很常用的一个调试窗口。
- 内存查看窗口:MDK5提供4个内存查看窗口,该按钮按下,会弹出一个内存查看窗口,可以再里面输入你要查看的内存地址,然后观察这一片内存的变化情况。是很好用的调试窗口。
- 串口打印窗口:MDK5提供4个串口打印窗口,该按钮按下,会弹出一个类似串口调试助手界面的窗口,用来显示从串口打印出来的内容。
- 系统分析窗口:图标下面有6个选项,我们一般用第一个,也就是逻辑分析窗口(Logic Analyzer),点击即可调出该窗口,通过SETUP按钮新建一些IO口,就可以观察这些IO口的电平变化情况,以多种形式显示出来,比较直观。
- 系统查看窗口:该按钮可以提供各种外设寄存器的查看窗口,选择对应外设,即可调出该外设的相关寄存器表,并显示这些寄存器的值,方便查看设置的是否正确。
 -  Call Stack窗口:查看函数调用关系或局部变量  
-  Watch窗口:查看函数首地址或变量值  
-  Memory窗口:内存查看窗口  M3/M4/M7内核是小端模式,内存的值得倒着读 -  Peripheral窗口:查看寄存器的值  
 
-  
-  注意事项 -  仿真时,使用MDK的Level 0等级优化  
-  调试停止在断点处时,只是内核停止,外设会继续运行 
-  断点的设置要有时间观念,考虑是否会打断正常通信 
 
-  
 
-  
七、MDK5使用技巧
-  编辑器设置  
-  字体和颜色设置  
-  用户关键字设置  
-  代码提示/语法检查  
-  快速定位函数或变量被定义的地方  
声明:参考文献来源: 战舰STM32F103ZET6开发板资源包
- Cortex-M3权威指南(中文).pdf
- STM32F10xxx参考手册_V10(中文版).pdf
- STM32F103 战舰开发指南V1.3.pdf
- STM32F103ZET6(中文版).pdf
- 战舰V4 硬件参考手册_V1.0.pdf