文章目录
- STM32介绍
-
- STM32命名
- armV7的三个系列
- STM32F103
-
- STM32F103资源
- STM32F103总线架构
- STM32F103引脚
- STM32F407
-
- 芯片
- STM32F407资源
- F407总线架构
- STM32F407系统框图
- STM32F407地址分配
- STM32开发
-
- 固件库概念
- 容量
- STM32启动模式
- STM32软件
-
- MDK介绍
- MDK安装
- 生成HEX文件
- 支持包安装
- 添加宏
- 添加头文件路径
- 库函数选择外设
- 编译输出
- 编译成功
- flymcu使用
- XCOM
- 程序下载电路
- STM32调试
-
- JLink
- JTAG/SWD
- SWD与JTAG的端口映射
- 默认的五个口不能作为IO口输出
- JTAG/SWD硬件
- 设置禁止JTAG
- JLink配置
- Debug介绍
-
- 复位
- 执行到断点处
- 挂起
- 执行进去
- 执行过去
- 执行出去
- 执行到光标处
- 汇编窗口
- 观看变量/堆栈窗口
- 串口打印窗口
- 内存查看窗口
- 性能分析窗口
- 逻辑分析窗口
STM32介绍
STM32命名
四个驱动单元是:
- 内核 DCode 总线;
- 该总线将 M3 内核的 DCode 总线与闪存存储器的数据接口相连接,常量加载和调试访问在该总线上面完成。
- 系统总线;
- 系统总线:该总线连接 M3 内核的系统总线到总线矩阵,总线矩阵协调内核和 DMA 间访
- 通用 DMA1;
- 通用 DMA2;
- DMA总线将 DMA 的 AHB 主控接口与总线矩阵相连,总线矩阵协调 CPU 的DCode 和 DMA 到 SRAM,闪存和外设的访问。
四被动单元是:
- AHB 到 APB 的桥:连接所有的 APB 设备;
- AHB/APB 桥:这两个桥在 AHB 和 2 个 APB 总线间提供同步连接,APB1 操作速度限于36MHz,APB2 操作速度全速。
- 内部 FlASH 闪存;
- 内部 SRAM;
- FSMC;
总线矩阵
- 总线矩阵协调内核系统总线和 DMA 主控总线之间的访问仲裁,仲裁利用轮换算法。
ICode总线
- 该总线将 M3 内核指令总线和闪存指令接口相连,指令的预取在该总线上面完成。
STM32F103引脚
STM32F407资源
- 内核
- 32位 高性能ARM Cortex-M4处理器
- 时钟: 高达168MHz,实际还可以超频一点点
- stm32f407的主频通过PLL倍频后能够达到168MHz,而且芯片内置一个16MHz的晶振和一个32KHz的晶振,可以满足不同功耗的需求。
- 支持FPU(浮点运算)和DSP指令
- 144引脚 114个IO口
- 存储器容量: 1024K FLASH, 192K SRAM
- 4~26M的外部高速晶振
- 内部16MHz的高速RC振荡器
- 外部低速32.768K的晶振,主要做RTC时钟源
- 主系统由 32 位多层 AHB 总线矩阵构成。
- 总线矩阵用于主控总线之间的访问仲裁管理。
- 仲裁采取循环调度算法。
- 总线矩阵可实现以下部分互联:
八条主控总线是:- Cortex-M4 内核 I 总线, D 总线和 S 总线;
- DMA1 存储器总线, DMA2 存储器总线;
- DMA2 外设总线;
- 以太 DMA 总线;
- USB OTG HS DMA 总线;
七条被控总线: - 内部 FLASH ICode 总线;
- 内部 FLASH DCode 总线;
- 主要内部 SRAM1(112KB)
- 辅助内部 SRAM2(16KB);
- 辅助内部 SRAM3(64KB) (仅适用 STM32F42xx 和 STM32F43xx 系列器件);
- AHB1 外设 和 AHB2 外设;
- FSMC
- c/c++界面,然后填写“STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 输入框里面
- 如果你用的是中容量那么STM32F10X_HD 修改为 STM32F10X_MD,小容量修改为 STM32F10X_LD. 然后点击 OK。
- 特别提醒:不要选择使用 RamIsp,否则,可能没法正常下载。
- DTR 的低电平复位,RTS 高电平进 BootLoader
- 选中这个选择项选,flymcu就会通过 DTR 和 RTS 信 来控制板载的一键下载功能电路,以实现一键下载功能。这个是必要的选项(在 BOOT0 接 GND 的条件下)。
STM32F407系统框图
STM32F407地址分配
STM32开发
固件库概念
FWlib叫固件库,FW的单词是Firmware.即固件的意思。STM32的固件库包含C文件和H文件,主要用于存放STM32的一些寄存器的定义及一些底层驱动函数
容量
对于 103 系列,主要是用其中 3 个启动文件
? startup_stm32f10x_ld.s: 适用于小容量 产品,小容量:FLASH≤32K
? startup_stm32f10x_md.s : 适用于中等容量产品,中容量:64K≤FLASH≤128K
? startup_stm32f10x_hd.s: 适用于大容量产品,大容量:256K≤FLASH
STM32启动模式
B0 B1 启动模式
0 X 主闪存存储器
1 0 系统存储器
1 1 内置SRAM
STM32软件
MDK介绍
? MDK是keil公司开发的,为基于Cortex、arm7、arm9等处理器设备提供的一个完整开发环境。
? MDK(Microcontroller Development Kit,字面的意思就是“微控制器开发套装”)。
MDK安装
o 在软件资料,1,软件,MDK5
o 无脑安装
? MDK5破解
o File license Mangement 复制CID
o 在keygen破解软件中运行CID 得到秘钥,记得选择32
o 用管理员身份打开MDK5,再次进入license Management 的New ID Code粘贴
生成HEX文件
点击魔术棒,进入配置菜单,选择 Output。然后勾上下三个选项。 其中 Create HEX file 是编译生成 hex 文件,Browser Information 是可以查看变量和函数定义。
添加宏
因为 3.5 版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的宏定义变量。
库函数选择外设
3.5 版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的宏定义变量。
c/c++界面,然后填写“STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 输入框里面
第二个图标是全部重新编译按钮(工程大的时候,编译耗时较久,建议少用)
编译成功
程序下载电路
JTAG/SWD
调试原理
SWD与JTAG的端口映射
认这五个引脚复位了之后都是用来仿真的,是不能正常使用的,只有禁止了相应的端口,才能释放IO引脚
JTAG/SWD硬件
setting JLink
复位
其功能等同于硬件上按复位按钮。相当于实现了一次硬复位。按下该按钮之后,代码会重新从头开始执行。
执行到断点处
该按钮用来快速执行到断点处,有时候你并不需要观看每步是怎么执行的,而是想快速的执行到程序的某个地方看结果,这个按钮就可以实现这样的功能,前提是你在查看的地方设置了断点。
挂起
此按钮在程序一直执行的时候会变为有效,通过按该按钮,就可以使程序停止下来,进入到单步调试状态。
执行进去
该按钮用来实现执行到某个函数里面去的功能,在没有函数的情况下,是等同于执行过去按钮的。
执行过去
在碰到有函数的地方,通过该按钮就可以单步执行过这个函数,而不进入这个函数单步执行。
执行出去
该按钮是在进入了函数单步调试的时候,有时候你可能不必再执行该函数的剩余部分了,通过该按钮就直接一步执行完函数余下的部分,并跳出函数,回到函数被调用的位置。
执行到光标处
该按钮可以迅速的使程序运行到光标处,其实是挺像执行到断点处按钮功能,但是两者是有区别的,断点可以有多个,但是光标所在处只有一个。
汇编窗口
通过该按钮,就可以查看汇编代码,这对分析程序很有用。
观看变量/堆栈窗口
该按钮按下,会弹出一个显示变量的窗口,在里面可以查看各种你想要看的变量值,也是很常用的一个调试窗口。
串口打印窗口
该按钮按下,会弹出一个类似串口调试助手界面的窗口,用来显示从串口打印出来的内容。
内存查看窗口
该按钮按下,会弹出一个内存查看窗口,可以在里面输入你要查看的内存地址,然后观察这一片内存的变化情况。是很常用的一个调试窗口
性能分析窗口
按下该按钮,会弹出一个观看各个函数执行时间和所占百分比的窗口,用来分析函数的性能是比较有用的。
逻辑分析窗口
按下该按钮会弹出一个逻辑分析窗口,通过 SETUP 按钮新建一些 IO 口,就可以观察这些 IO 口的电平变化情况,以多种形式显示出来,比较直观。
点击 Setup,新建两个信 PORTB.5 和 PORTE.5
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!