一、单片机简介
单片机是什么?
单片机: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