【STM32C5】简而不凡,锋芒自显——Nucleo-STM32C562RE快速上手很早就拿到了C562这块板子了,因为时间安排原因迟迟没有动手写测评,现在终于腾出时间来开箱这块新板子了。本文主要介绍一下Nucleo-STM32C562RE开发板,并通过STM32CubeMX2+STM32Cube IDE for VS Code环境完成按钮、点灯的实验。 首先介绍一下STM32C5系列,STM32C5 是 ST 面向成本敏感型应用推出的新一代主流 MCU 系列。相比传统意义上“入门级MCU”的定位,C5 系列在保持低门槛、低成本开发体验的基础上,把 Cortex-M33 内核、DSP/FPU、较完整的外设资源以及安全特性进一步下放到入门与主流应用场景中。STM32C5 系列最高运行频率为 144 MHz,可达到 593 CoreMark,并提供最高 1 MB Flash 与 256 KB SRAM,为成本敏感型嵌入式设计提供更高的性能起点。 一、硬件介绍本次上手的开发板是 NUCLEO-C562RE,板载 MCU 为 STM32C562RET6, Arm Cortex-M33 内核,主频最高 144 MHz,内置 512 KB Flash 和 128 KB SRAM,同时带有 AES、HASH、TRNG 等硬件安全相关模块,并提供 FDCAN、USB FS、I3C、SPI、USART/UART、I2C 等常用通信接口。对于日常的控制、通信、传感器采集以及小型工业应用来说,它的资源配置诚意满满。 板载 ST-LINK 调试下载器,不需要额外准备仿真器;同时兼容 Arduino Uno V3 扩展接口和 ST morpho 排针,可以比较方便地接入各类扩展板或外部模块。板上还有1个用户 LED、1 个用户按键和1个复位按键,惊喜的是,BOOT0也从先前的跳线帽升级为了轻触按键;以及一个CAN FD接口和USB数据接口。 与往年设计的开发板相比,这块板在接口的跳线焊盘上预留了更多的选择,给工程师提供了更灵活的开发体验。 USB1接口的设计上堆料很足,包括限流用的功率电子开关STEF05,防静电的ESD,以及CC的下拉电阻上也通过两个NMOS连接到地。当开发板供电正常时,CC1、CC2上的5.1k电阻正常下拉;当未上电或者状态异常时,CC下拉断开,防止错误识别。也就是说,当开发板5V跳线帽连接到ST-LINK而非USB1时,USB1接口不作电源输入,仅作数据接口。 板子正面提供了CAN FD的外围电路,同时背面预留了LIN总线的焊盘位置。 二、开发环境本测评使用的是STM32CubeMX2 代码生成工具+STM32CubeIDE for VS Code 开发环境,作为今年ST主推的两款新工具,都具有十分值得尝试的地方。 CubeMX2和MX一样,直接从官网获取即可,根据操作系统下载对应版本。STM32CubeIDE for VS Code 在VS Code扩展商店中下载即可。 2.1 CubeMX2创建项目来到CubeMX2主界面,选择MCU创建项目,在选择器中找到STM32C563RET6,点击Continue下一步。 填写项目名,选择项目路径。值得注意的是,项目创建时不会额外创建文件夹来存放.ioc2,所以最好给他新建一个新文件夹,否则工程项目多的话会很乱。 创建完成后进入主界面,CubeMX2的主界面与CubeMX有较大的排版差异,但是操作逻辑的核心不变。将CubeMX原本分布于顶部的导航栏和左边的表视图全部整合为左边的导航栏,操作视图上更加简洁。 2.2 CubeMX2配置项目1.配置时钟STM32C562的时钟结构和以往常见的STM32系列略有不同。它没有采用传统的通用PLL倍频配置方式,而是引入了PSI(Programmable-Speed Internal oscillator,可编程速度内部振荡器)作为高频时钟源。PSI 可以基于HSE、LSE或HSI等参考时钟,在内部通过类似PLL的方式输出预设频率,有100 MHz、144 MHz或160 MHz三档速率,配置过程明显简化,不再需要手动设置复杂的PLL参数,而是通过选择PSI时钟输出频率档位完成系统时钟配置。 不同时钟源输出频率精度不同,其典型值见下表: 首先,从外设菜单中配置RCC,启用HSE时钟源,选择石英晶体振荡器 Crystal/ceramic resonator。 2.配置GPIOCubeMX的只能从Pinout图上选择,而CubeMX2目前可以在Detail View上直接双击对应的Pin进入配置,操作上更加清晰明了。选择需要的引脚PA5和PC13,勾选上GPIO-configured,并点击左边的外设配置,可以打开GPIO的配置窗口。 如果需要同时查看Pinout图和设置,可以点击Split right将Pinout窗口分栏到右边。在Pinout中初始化引脚功能,并在Configuration中配置GPIO的具体功能:按照原理图,将PA5配置为GPIO推挽输出,无上下拉电阻;PC13配置为GPIO输入,并打开中断。 在GPIO Configuration设置好按钮和LED灯的初始化,如下图所示。在配置时可以添加好宏定义标签,在编写代码时可以直接调用。 回到Pinout界面,在Detail View中可以看到选中引脚的类型,包括是否为5V耐压引脚、是否为模拟引脚、配置的状态等。 当需要将配置的模式转移到其他引脚时,不需要清除该引脚的配置并重新配置其他引脚,可以直接通过Detail View右上角的选择框 -> Move signal将配置转移到其他引脚上方。 3.配置调试方式配置Debug,点击active按钮激活调试,设置为Single-wire trace asynchronous模式即可使用ST-Link。 4.项目生成设置因为使用的开发环境是STM32CubeIDE for VS Code,所以选择CMake-GCC工具链,并生成项目。 2.3 代码编写打开VS Code,点击资源管理器的“打开文件夹”,导入刚刚生成的项目文件。注意需要添加的是带CMake后缀的文件夹。 初次导入会询问是否配置CMake项目为STM32Cube项目,选择确定。 接下来配置调试器,点击运行和调试,创建一个launch.json文件,选择当前工作区,选择STM32Cube: STM32 Launch STLink GDB Server(如果使用的是JLink的话则选择JLink调试器)。选择后会自动生成一个launch.json文件。 此时下方工具栏会出现一个STM32Cube的调试配置,可以点击生成看看是否编译成功。 本测评将实现通过按钮外部中断,调节LED闪烁频率的简单测评代码。代码均在main.c中。 首先定义全局变量,四档LED闪烁速度及档位编号:
编写中断回调函数: 首先判断中断号、触发类型是否正确; 然后通过last_tick_ms及now_ms两个变量,获取时间戳并对比两次进入中断的时间差,用于消抖处理; 最后更新闪烁频率档位标志。
主循环中添加GPIO的翻转函数和延时函数即可。
2.4 效果展示 |
留言赢礼 | STM32CubeMX2来了!新一代STM32CubeMX正式亮相,邀你亲测体验
留言赢礼 | 适用于STM32C5系列的STM32Cube嵌入式软件包
更新:借助升级版STM32Cube生态,释放STM32C5 MCU的全部潜能
一文看懂 STM32CubeMX2:核心差异、适用场景与升级建议
【新品首发】STM32C5 重磅登场!Cortex-M33+40nm 工艺,入门级 MCU 迎来史诗级升级!(文末抽奖)
STM32C5 核心亮点总结及适配场景选型指南
STM32新品升级选型指南:从旧系列到WL3R、C5、H5F/E、U3B/3C5 性能迭代与场景迁移
STM32新品选型指南:WL3R、C5、H5F/E、U3B/3C5 特性解析与场景适配
STM32Cube生态重磅更新,支持STM32C5
配置工具STM32CubeMX2
微信公众号
手机版