1.资源的获取:
关注
博主并点赞
对应博客,并在文章下留言
邮箱索取;
2.资源的类型:获取资源仅限于免费公开文章或粉丝免费专享文章,不包括付费文章;
博主分享不易,请给三连
哦(关注 + 点赞 + 收藏),你的鼓励是博主分享的动力。
STM32CubeMX 实战教程:LED 灯、蜂鸣器、按键输入实验(LL 库)
1 前言
1.1 STM32CubeMX
1.2 教程介绍
STM32CubeMX 实战教程 基于正点原子 STM32F1 精英板(STM32F103ZET6)平台,旨在通过对板载资源的使用将各种外设的配置方法讲述清楚。更多教程请订阅 [专栏]STM32CubeMX 。
本教程是 STM32CubeMX 实战教程中的第一篇,主要通过对 LED 灯、蜂鸣器、按键输入等三个实验的实现,将 STM32CubeMX GPIO 的配置方法讲述清楚。
1.3 准备工作
系统版本:Windows 10 专业版 64 位
软件版本:STM32CubeMX V6.0.0 ( STM32CubeMX 下载及安装教程 )
硬件平台:正点原子 STM32F1 精英板
编译环境:MDK_ARM V5.29 ( MDK_ARM 下载及安装教程 )
调试工具:ST-LINK/V2
1.4 硬件资源
本节教程使用的硬件资源分配:
序号 | 引脚 | 引脚功能 | 硬件连接 | 备注 |
---|---|---|---|---|
01 | PA0 | Input | 轻触按键(KEY_UP) | 按下高电平 |
02 | PE3 | Input | 轻触按键(KEY1) | 按下低电平 |
03 | PE4 | Input | 轻触按键(KEY0) | 按下低电平 |
04 | PB5 | Output | LED 灯(DS0) | 低电平亮 |
05 | PB8 | Output | 蜂鸣器(BEEP) | 高电平响 |
06 | PE5 | Output | LED 灯(DS1) | 低电平亮 |
2 配置项目
将上一篇实战教程中建立的模板复制到新的文件夹下,更改相关名称,删除 MDK-ARM 文件夹及 Template 文件;
2.1 项目导入
- 打开 STM32CubeMX,点击 File > Load project 或点击 Other Projects;(也可在文件目录下直接双击打开项目文件)
- 选择项目文件 GPIO_Test.ioc,点击 打开;
- 项目界面如下。
2.2 GPIO 配置
-
选择管脚(PB5),左键单击,选择 GPIO_Output;
-
在配置好模式的管脚上,右键单击,点击 Enter User Label,输入用户标签 DS0;
-
设置完成管脚后,进入 GPIO 配置相关管脚模式,配置完成如下图;
(关于管脚模式、上/下拉、速度这些基础知识,请自行学习)
GPIO 可选择按类别显示。
2.3 生成代码
时钟配置、项目管理配置及生成代码请参考:STM32CubeMX 实战教程:新建项目和生成 MDK_ARM 工程、STM32CubeMX 项目配置窗口介绍(一)、STM32CubeMX 项目配置窗口介绍(二)。
点击 GENERATE CODE 生成代码。
3 代码测试
- 打开 MDK_ARM 工程;
- main.h 文件中,有自动生成的用户标签管脚宏定义;
- 在
while
循环中加入测试代码;
main 函数代码如下:
/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_AFIO);
LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_PWR);
NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
/* System interrupt init*/
/** NONJTRST: Full SWJ (JTAG-DP + SW-DP) but without NJTRST
*/
LL_GPIO_AF_Remap_SWJ_NONJTRST();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
/* USER CODE BEGIN 2 */
LL_RCC_GetSystemClocksFreq(&get_rcc_clock);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
if(LL_GPIO_IsInputPinSet(KEY_UP_GPIO_Port, KEY_UP_Pin) == 1 ) // KEY_UP Press
{
LL_GPIO_SetOutputPin(BEEP_GPIO_Port, BEEP_Pin); // BEEP ON
}
else
{
LL_GPIO_ResetOutputPin(BEEP_GPIO_Port, BEEP_Pin); // BEEP OFF
}
if(LL_GPIO_IsInputPinSet(KEY0_GPIO_Port, KEY0_Pin) == 1 ) // KEY0 UnPress
{
LL_GPIO_SetOutputPin(DS0_GPIO_Port, DS0_Pin); // DS0 OFF
}
else
{
LL_GPIO_ResetOutputPin(DS0_GPIO_Port, DS0_Pin); // DS0 ON
}
if(LL_GPIO_IsInputPinSet(KEY1_GPIO_Port, KEY1_Pin) == 1 ) // KEY1 UnPress
{
LL_GPIO_SetOutputPin(DS1_GPIO_Port, DS1_Pin); // DS1 OFF
}
else
{
LL_GPIO_ResetOutputPin(DS1_GPIO_Port, DS1_Pin); // DS1 ON
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
- 编译工程;
- 使用 ST-LINK/V2 下载程序,按下复位按键,若按照下面操作看到正常现象,则说明程序正常运行,GPIO 配置成功。
Steps | 操作 | 正常现象 | 备注 |
---|---|---|---|
1 | 按下 KEY_UP 按键,不放 | 蜂鸣器响 | 松开按键默认不响 |
2 | 按下 KEY0 按键,不放 | DS0 LED 亮 | 松开按键默认不亮 |
3 | 按下 KEY1 按键,不放 | DS1 LED 亮 | 松开按键默认不亮 |
4 结束
本教程由 Brendon Tan 原创发布,版权所有。该文档仅供个人学习交流使用,不得用于其他用途, 禁止商用, 转载或公开使用请联系作者授权。
此教程由本人独立整理,如有不当之处,欢迎指正。
附录 相关教程
STM32Cube 系列软件教程总目录请参考文章:STM32Cube 生态系统之网站、视频、文档及教程汇总 。
该文章还提供:
- STM32Cube 生态系统相关文章
- STM32Cube 生态系统相关软件更新介绍
- STM32Cube 生态系统相关教程汇总
- STM32Cube 生态系统相关网站汇总
- 该文章会不定期修改更新,更多信息请进入文章查看