STM32的介绍及MDK

文章目录

  • 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

    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 版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的宏定义变量。

    • c/c++界面,然后填写“STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 输入框里面
    • 如果你用的是中容量那么STM32F10X_HD 修改为 STM32F10X_MD,小容量修改为 STM32F10X_LD. 然后点击 OK。

    库函数选择外设

    3.5 版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的宏定义变量。
    c/c++界面,然后填写“STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 输入框里面

    第二个图标是全部重新编译按钮(工程大的时候,编译耗时较久,建议少用)

    编译成功

  • 特别提醒:不要选择使用 RamIsp,否则,可能没法正常下载。
  • DTR 的低电平复位,RTS 高电平进 BootLoader
    • 选中这个选择项选,flymcu就会通过 DTR 和 RTS 信 来控制板载的一键下载功能电路,以实现一键下载功能。这个是必要的选项(在 BOOT0 接 GND 的条件下)。

程序下载电路

JTAG/SWD

调试原理

SWD与JTAG的端口映射

认这五个引脚复位了之后都是用来仿真的,是不能正常使用的,只有禁止了相应的端口,才能释放IO引脚

JTAG/SWD硬件

setting JLink

复位

其功能等同于硬件上按复位按钮。相当于实现了一次硬复位。按下该按钮之后,代码会重新从头开始执行。

执行到断点处

该按钮用来快速执行到断点处,有时候你并不需要观看每步是怎么执行的,而是想快速的执行到程序的某个地方看结果,这个按钮就可以实现这样的功能,前提是你在查看的地方设置了断点。

挂起

此按钮在程序一直执行的时候会变为有效,通过按该按钮,就可以使程序停止下来,进入到单步调试状态。

执行进去

该按钮用来实现执行到某个函数里面去的功能,在没有函数的情况下,是等同于执行过去按钮的。

执行过去

在碰到有函数的地方,通过该按钮就可以单步执行过这个函数,而不进入这个函数单步执行。

执行出去

该按钮是在进入了函数单步调试的时候,有时候你可能不必再执行该函数的剩余部分了,通过该按钮就直接一步执行完函数余下的部分,并跳出函数,回到函数被调用的位置。

执行到光标处

该按钮可以迅速的使程序运行到光标处,其实是挺像执行到断点处按钮功能,但是两者是有区别的,断点可以有多个,但是光标所在处只有一个。

汇编窗口

通过该按钮,就可以查看汇编代码,这对分析程序很有用。

观看变量/堆栈窗口

该按钮按下,会弹出一个显示变量的窗口,在里面可以查看各种你想要看的变量值,也是很常用的一个调试窗口。

串口打印窗口

该按钮按下,会弹出一个类似串口调试助手界面的窗口,用来显示从串口打印出来的内容。

内存查看窗口

该按钮按下,会弹出一个内存查看窗口,可以在里面输入你要查看的内存地址,然后观察这一片内存的变化情况。是很常用的一个调试窗口

性能分析窗口

按下该按钮,会弹出一个观看各个函数执行时间和所占百分比的窗口,用来分析函数的性能是比较有用的。

逻辑分析窗口

按下该按钮会弹出一个逻辑分析窗口,通过 SETUP 按钮新建一些 IO 口,就可以观察这些 IO 口的电平变化情况,以多种形式显示出来,比较直观。
点击 Setup,新建两个信 PORTB.5 和 PORTE.5

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年10月22日
下一篇 2022年10月22日

相关推荐