一、前言
非常感谢EEPW举办这次活动,这已经是我第二次参加论坛活动了。
在活动中,让我不仅学到了许多新知识,还结识了许多志同道合的朋友。通过与大家讨论问题以及群里老师的帮助,我取得了很大的进步。
二、开发板介绍:STM32H503RB开发板
STM32 Nucleo-64板为用户提供了一种可负担的灵活方法,通过选择STM32微控制器提供的各种性能和功耗特性组合来尝试新概念并构建原型。对于兼容板,外部SMPS可显著降低运行模式下的功耗。
关于该开发板的详情请大家移步我的开箱贴,里面有更具体介绍:【Let'sDo第1期任务手势翻页笔】——开箱帖-电子产品世界论坛 (eepw.com.cn)
三、开环境介绍
此次开发按照个人习惯 Keil5+STM32CubeMX 的开发环境进行此次开发。
大家也可以根据个人喜好选择其他开发环境:
IAR Embedded Workbench for ARM:专业级开发环境,适用于大型项目。
STM32CubeIDE:ST官方提供的集成开发环境,免费且支持多种STM32系列。
Visual Studio Code配合PlatformIO插件:轻量级且高度可定制的开发环境,适合喜欢轻便IDE的开发者。
四、任务介绍
基本作业:
1.使用STM32CubeMX图形化配置软件,配置STM32H503RB芯片的内部参数,外设参数,引脚分配等功能;
2.在学习完成全部讲解与实验后,在STM32H503RB开发板成功烧录程序,并编写软件代码实现LED灯周期闪烁,串口打印字符串"Hello EEPW & DigiKey! Hello STM32H503!";
五、实现分析
这个任务比较简单的,在课程中,老师讲解了如何在STM32CubeMX图形化配置软件中配置外部晶振,调试口,GPIO引脚、调试串口的配置。
学习到了:
1.如何setup编程的初始环境,这里提一下,图形化配置软件是真的方便,而不用手动去copy文件构建环境。
2、如何把引脚配置为输出模式以及相关设置。
3、如何配置调试串口。
六、所需设备
STM32H503RB开发板
USB C to A数据线一根(要注意选择可以进行数据传输的,仅有供电功能的无法下载)
安装有Keil5+STM32CubeMX软件的电脑进行程序开发调试
七、环境搭建
此处需要注意:程序的安装目录下最好不要有中文!!!
此处需要注意:程序的安装目录下最好不要有中文!!!
此处需要注意:程序的安装目录下最好不要有中文!!!
下载安装软件
下载并安装Keil uVision5(简称Keil5):访问Keil官网获取最新版本的uVision IDE。社区版好像已经免费。下载并安装适用于ARM Cortex-M微控制器的Keil MDK-ARM。
下载STM32CubeMX:STM32官方提供的图形化配置工具,用于初始化外设设置,可从ST官网下载。
配置硬件驱动
安装ST-LINK驱动。
ST-LINK调试器/编程器集成在开发板上。
配置硬件驱动
安装ST-LINK驱动。
ST-LINK调试器/编程器集成在开发板上。
其他准备:
STM32Cube_FW_H5_V1.2.0软件包:这个是STM32H503的软件包,配置工具配置好管脚之后,通过软件包导出代码。
Keil需要安装H503的PACK:Keil.STM32H5xx_DFP.1.3.0.pack。
若是比较新的Keil5,可直接在Keil5中安装;
若不是最新的,可在通过下方链接下载,或者使用EEPW资料包中的,或者在ST官网中下载,直接双击安装即可。
启动STM32CubeMX
打开STM32CubeMX,点击“New Project”。
选择MCU
在“Select a Device”窗口中,选择“STM32H503xx”,然后选择具体的型号“STM32H503RB”。
配置外设
根据项目需求,在左侧的外设列表中选择要使用的外设,并进行相应的配置。例如,配置时钟系统、GPIO、串行通信等。
生成代码
配置完成后,点击“Generate Code”。这会生成一个包含STM32Cube HAL库和初始化代码的工程模板。
打开Keil5
在Keil5中,选择“File”菜单下的“New uVision Project”。
导入STM32CubeMX生成的代码
浏览并选择STM32CubeMX生成的工程文件夹中的.uvprojx文件。
至此,便可
利用STM32CubeMX创建新工程。
八、硬件原理
通过以上步骤,便已经搭建好了开发环境,下面我们来分析硬件原理:
单LED灯点亮:单片机的GPIO引脚可以配置为输入或输出。为了点亮LED,必须将相应的引脚配置为输出模式。
如果LED的正极连接到GPIO引脚,负极通过电阻接地,那么设置GPIO引脚为低电平(0)将点亮LED;如果LED的负极连接到GPIO引脚,正极通过电阻接电源,那么设置GPIO引脚为高电平(1)将点亮LED。
该开发板LED所在位置以及硬件原理图:
九、软件编程
此处不得不提到STM32CubeMX:STM32官方提供的图形化配置工具,用于初始化外设设置。
打开STM32CubeMX,点击“ACCESS TO MCU SELECTOR”开始创建工程
在commercial part number栏中选择STM32H503RBT6。
根据自己的需要配置时钟,这里配置为:High Speed Clock(HSE)设置为Crystal/Ceramic Resonator。点击“Clock Configuration”,设置时钟频率:晶振频率设置为24MHz,选择HSE通道,最高频率设置为250MHz
点击“Trace and Debug“- ”Debug“,设置Debug模式为Serial Wire。
点击“Pinout& Configuration”将PA5配置为GPIO_Output。
点击“Connectivity”-“USART3”,设置USART3 Mode为Asynchronous;点击“Parameter Settings”,设置Baud Rate为115200 Bits/s;点击“NVIC Settings”,勾选“USART3 global interrupt“为enable。
在Project Manager填写Project Name,设置ToolChain/IDE为MDK-ARM,设置Min Version为V5.37。
点击“Generate Code“即可完成代码的生成。
点击“Open Project”便可以直接使用Keil打开该工程。
十、编写代码
在生成的代码中,我们就可以编译了。
while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_Delay(500); //延时 HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5); //PA5 }
此处需要注意:所有的代码都要写在注释区BEGIN和END中间!!!
此处需要注意:所有的代码都要写在注释区BEGIN和END中间!!!
此处需要注意:所有的代码都要写在注释区BEGIN和END中间!!!
此时点击编译和LOAD即可看到LED灯开始闪烁。
此时加入HAL_UART_Transmit(&huart3, (uint8_t*)hello_str, strlen( hello_str),100); 和引入相关头文件#include "string.h"
while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_Delay(500); //延时 HAL_UART_Transmit(&huart3, (uint8_t*)hello_str, strlen( hello_str),100); HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5); //PA5 }
即可完成串口输出
效果演示