STM32CubMX + Keil5 MDK(HAL库)实验基础(自我记录)

本文详细介绍了如何使用STM32CubMX和Keil5在STM32F103RCT6开发板上进行点灯、按键控制、串口通信和定时器控制PWM的基本实验,包括GPIO配置、代码编写和模拟效果展示。
摘要由CSDN通过智能技术生成

运行环境:Window11 

软件环境:STM32CubMX + Keil 5.39 

硬件环境:STM32F103RCT6开发板

一、玩转开发板小实验

1、点灯大师:闪烁灯实验(经典第一步)

①打开STMCubMX,点击新工程;

②输入开发板芯片类型,双击右下角对应型号;

③由于查阅开发板资料可知:PD2为蓝灯,故设置PD2为GPIO_Output,接着点击右上角蓝色框;

④输入对应信息;(工程名,路径等);

⑤选Code Generator,勾选对应选项;

⑥点Advanced Settings,可以观察到以下情况,然后点击右上角即可生成对应工程。

⑦紧接着就可以观察到文件存放位置,并且点击MDK_ARM文件,再点击Keil文件即可在KEIL5软件中生成对应工程。

⑧打开Keil文件后,在while中输入以下语句,即可点亮闪烁灯。

2、按键控制LED灯实验

描述:按下按键(PC5),点亮LED并在500ms后熄灭;

分析:按键需要人为按键,认为是Input;按键按下后灯亮,认为是开发板Output。

由开发板硬件原理图可知:按键PD5初始化应设为上拉模式,当按键按下时按键电路通路。

PD2初始化应设为高电平,推挽输出模式,上拉当输入给低电平时,电路通路,LED亮。

对上图进行说明:

  1. GPIO output level: 当前输出电平为 "High",意味着该引脚输出高电平。

  2. GPIO mode: 模式设置为 "Output Push Pull",这表示该引脚被配置为推挽输出模式,可以输出高电平或低电平。

  3. GPIO Pull-up/Pull-down: 配置了 "Pull-up",意味着当引脚未被驱动时会呈现高电平状态。

  4. Maximum output speed: 输出速度设置为 "Low",这可能意味着该引脚支持的输出速度较低,适用于低速信号。

因此,在Kiel5文件中设置如下程序即可实现上述功能:

程序解释:当检测到PC5由低变高时,将PD2输出一个宽脉冲,脉冲宽度为500毫秒。

当这个引脚的状态是低电平(GPIO_PIN_RESET)时,程序会执行以下操作:

  1. 继续检查GPIO_PIN_5是否仍然是低电平,直到它变为高电平(GPIO_PIN_SET)。
  2. GPIO_PIN_5不再低电平时,将GPIOD的第2个引脚(GPIO_PIN_2)设置为低电平。
  3. 使用HAL_Delay(500)延迟500毫秒。
  4. 之后,将GPIO_PIN_2设置为高电平。

即可出现以上要求现象。

(注:该代码复用性低,由上述原理图可知道除PC5外仍有PA15按键,这里若不适用PC5改用PA15,那么需要重新回到STM32CubMX将PC5资源释放,并且重新设置PA15生成代码,并需要在原main.c文件中改while(1)中的代码。)

对于以上提到的问题,可以使用User Label来降低代码复用性,如下:

然后生成工程,可以看到:

这样,通过预处理命令define,当需要修改引脚时直接在上图处修改即可。

3、USART串口发送实验

首先,在STM32CubMX中配置串口引脚信息,这里有两种方法,

第一种:手动模式;

通过原理图可以知道PA9,10为串口收发引脚,点击配置后可以观察到PA9,PA10显示为黄色模块,这是还需要手动配置异步模式,如下:

可以看到,配置模式后串口引脚显示为绿色模块,同时左下角会给出相关串口配置信息,这里需要和后面使用串口调试助手时信息需一致。(注:左下角信息分别为:①波特率 115200 位/秒;②字长 8 位(包括奇偶校验);③奇偶校验 :无 ;④停止位 1 ⑤数据方向:接收和发送 ⑥过采样 :16 个样本。)

第二种:自动配置。(点击connectivity,选择USART1,将mode设置为Asynchronous,此时系统会自动配置单片机上空闲的串口引脚,并且出现左下角串口信息)

介绍完两种方法外,接下来开始生成对应工程代码,这里偷个懒就不放图,工程文件中会出现usart.c文件,这里直接给出main.c中添加的简单的业务代码。(其中除了这种方式,还有中断和DMA方式,后面再逐一介绍~)

串口调试助手显示效果如下:

4、定时器控制PWM实验

①初步尝试:打开STM32CubMX,配置时钟树,其中需注意,

  • 高级定时器(如TIM1和TIM8)通常连接到APB2
  • 通用定时器(如TIM2、TIM3、TIM4、TIM5)和基本定时器(如TIM6、TIM7)通常连接到APB1。

如下:

②开始配置定时器1,定时器的配置主要有两个:定时时间与是否重装定时器。

其中,由相关资料可得,

定时频率 = 定时器时钟 / (预分频 +1/(计数值 + 1 Hz;

定时时间 = 1 / 定时频率 s

举个例子:假如要定时1ms,那么定时频率为:f=1/0.001=1000Hz;则
10Hz = 72MHz (72 * 10^6 Hz)/ (psc + 1) / (count + 1),假设psc为719,则所求count = 99。
故设置如下:
        
这里介绍下开启中断方法(此实验不需要使用),由于Timer1为高级定时器,可选择:
这里前面忘记设置PWM通道,如下图所示:
生成工程后,在KEIL5文件中配置相关代码:

由KEIL5软件仿真,可观察到PWM波形从0到99变化。
  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值