这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【DIY手势翻页笔】课程一:点灯+串口打印

共2条 1/1 1 跳转至

【DIY手势翻页笔】课程一:点灯+串口打印

菜鸟
2024-07-02 14:55:20     打赏

    首先感谢EEPW提供的这次机会,学习了不少东西。

 一、 硬件与软件

本次课程的硬件是:STM32H503RBT6开发板,白色的pcb板很好看,如下图

图片1.png

开发板上自带了 st-link 仿真器,方便开发调试,特别好!

 

软件我还是习惯使用 Keil5,本机上安装有 Keil-MDK 版本是 v5.36, 虽然不是最新的,但它是最后一个同时自带有 arm compiler v5 和 v6 两个编译器的版本。就不升级keil了,就用v5.36吧~~

     值得一提的是,开发需要一根typeC的数据线。我之前用的typeC线,下载STC的代码都没有问题,查到这个板子上,只有红色的LED(丝印是COM)部分点亮,而标着PWR的电源LED不亮,真是奇怪。后来又网上买了根号称typeC“数据线”而不是“充电线”的,插上去才一切正常。而且开发板一插上typeC线,电脑上会多出一个U盘盘符,大小只有416K,里面有三个文件,这在其他开发板上我还没见过。

 

二、 Keil5安装STM32H503芯片支持包

要使用Keil5开发STM32H503芯片项目,需要安装对应的DFP支持包。

官网的下载地址为:https://www.keil.arm.com/packs/stm32h5xx_dfp-keil/devices/

图片5.png

点击上图中的红圈,下载后大小71.4M。双击安装,这样在Keil中就可以查看到STM32H5xx的芯片了,新建工程时候也可以选择H5xx的芯片了。如下图:

图片6.png

在图中,直接点击蓝色的文字,也可以跳转到官网的DFP包下载页面。

注意: 第一次使用ST-Link,需要安装st-link的驱动。官方ST-Link驱动下载地址:

https://www.st.com.cn/zh/development-tools/stsw-link009.html

图片7.png

安装好驱动,在设备管理器里可以看到设备:

图片8.png

可以看到,我电脑上st-link的虚拟串口为COM10

 

三、 使用CubeMX 配置外设,并生成模板

      STM32CubeMX软件是官方出的外设配置工具,可以用它很方便的生成项目模板,也可以配置引脚功能,极大提高开发效率。CubeMX可在官网下载:

https://www.st.com.cn/content/st_com/zh/stm32cubemx.html#st-get-software

     下载后直接运行。CubeMX是基于java的UI一股傻傻的工业风~~不要介意这些,先生成个模板试试:

(1)   选择MCU型号: 搜索H503RBT6

图片9.png

点击右上角,开始生成工程。通过图形界面继续配置mcu各个引脚功能和外设:

(2)   配置为外部晶振,并设定主屏为250MHz

这部分照着学习视频做即可。

(3)   配置调试串口为SWD模式

图片12.png

使用串口USART3并设置波特率等:

图片13.png

(4)      配置PA5引脚为推挽输出模式

图片14.png

(5)      生成模板和代码:

图片15.png

注意要生成 MDK-ARM 的模板,因为我的keil 版本v5.36,所以最小版本选一个小于5.36的,如图中选择v5.32.

最下方需要H5xx系列MCU的 Fireware Package固件包。可以让CubeMX自动下载,也可以手动官网下载后解压,然后指定固件的包所在的本机路径。官网下载地址:https://www.st.com/en/embedded-software/stm32cubeh5.html

最新固件包为v1.2.0,文件名:stm32cube_fw_h5_v120.zip,下载大小为:178M

(6)      生成代码,配置iCache

图片16.png

既然能提高性能,那就Yes吧。 生成代码成功,显示如下:

图片17.png

第一个按钮,在文件管理器中打开生成的代码;第二个直接在keil-MDK中打开生成的工程

  

四、 添加功能代码

(1)      首先编译下,并下载测试

图片18.png

可以看到,生成的用户程序,主要在main.c 中,有main函数,时钟配置 SystemClock_Config函数,错误处理 Error_Handler函数等几个主要函数。

点击标题栏编译按钮,最后无错误: 0 Errors,0 Warning。

接着就可以添加 自己的用户代码,来实现三个要求的功能中的后两个:

图片19.png

哦,忘了下载测试了。如果st-link的驱动都安装没问题,点击工具栏下载图标,

图片20.png

底部输出栏一闪而过,提示下载成功。

图片21.png

 

(2)      实现打印字符串到usart3

Main文件中先定义一个字串:

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
const char hello_str[]= "Hello EEPW! Hello STM32H503!\r\n";
/* USER CODE END 0 */

查看HAL库中使用串口发送的函数

图片22.png

在main函数的循环中,调用发送函数:

while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  HAL_Delay(500);  //延时200ms
	  HAL_UART_Transmit(&huart3, (uint8_t*)hello_str, strlen( hello_str),100);
  }

这里我们将 字符串hello_str转化为 HAL_UART_Transmit函数需要的类型uint8_t*, 若不转换也是可行的,如视频教程中所示会有一个 warning,不影响。

另外若找不到 strlen() 函数,添加c标准库 #include “string.h”

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "string.h"
/* USER CODE END Includes */

编译下载后,打开你喜欢的串口软件,设置好波特兰和COM10端口,正常接收到单片机发送的数据:

图片23.png


(3)      闪烁LED灯---PA5引脚

    PA5引脚,使用CubeMX已经生成了初始化代码,GPIO被设置为推挽输出模式。代码中只需要每隔一定时间,让PA5输出反向即可。

首先来看下HAL库中GPIO的相关操纵函数:

图片24.png

   在main函数的 while循环中,添加一行pin针脚翻转的代码即可:

  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  HAL_Delay(500);  //延时200ms
	  HAL_UART_Transmit(&huart3, (uint8_t*)hello_str, strlen( hello_str),100);
	  HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);  //PA5翻转
  }

编译下载,看看效果:

图片25.jpg

搞定,完工!  #

工程源码:LEDdemo.rar

讲解视频地址:

https://www.bilibili.com/video/BV1SH4y1F7Cf




高工
2024-07-02 17:30:06     打赏
2楼

谢谢分享


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]