STM32CubMx自学笔记(一)LED灯翻转

STM32CubMX自学笔记(一)---LED灯翻转

工程创建

首先得安装STM32CubMx软件。具体安装步骤参照 保姆级安装步骤,这里将不再赘述,第一节主要是介绍新工程的创建,首先在桌面打开新安装的STM32CubMx软件,主界面如下所示。
界面为英文我们点击File->NewProject(或者Ctrl+N)创建新工程,如下图所示,我们在输入框中搜索用到的STM32芯片,我的开发板是正点原子的STM32F407ZGT,所以我在输入框输入STM32F407ZGTx,如果以后一直用这块开发板可以在复选框选择五角星收藏,下次使用时,直接双击五角星就出现收藏的芯片了。

系统具体配置

创建好工程后主界面显示分为以下几个模块,左侧为系统外设。右侧为STM32F4主控芯片。使用一块芯片首先要对系统时钟进行配置,而系统时钟配置之前,首先要做的是使能系统时钟。
在这里插入图片描述点击System Core->RCC分别开启系统时钟,配置如下图所示。

在这里插入图片描述然后打开正点原子的探索者F4芯片原理图,查看LED等挂载在哪个引脚下。如下图所示,因此,我们需要使能PF9和PF10引脚。

正点原子LED灯挂载

这里把PF9、PF10分别配置为输出模式。
PF9配置PF10配置
点击左侧GPIO,根据原理图,可以配置GPIO的具体特性,这里配置输出电平为高电平。输出模式为推挽输出,上拉,高速。具体的GPIO不同输出模式可参照: GPIO的详细介绍
在这里插入图片描述

在这里插入图片描述
配置完毕后进入项目管理,给文件命名,并设置生成的IDE版本,这里生成的是MDK5版本。
在这里插入图片描述为了减少代码的编译时间在Project选择第二个,而在Code Generator选择第一个 添加.c和.h文件,避免生成的代码杂糅在一起,全部配置完毕之后,选择GENERATOR CODE

在这里插入图片描述首先我们编译一下,发现有1个error,这是软件问题,生成文件时,没有添加启动文件。
在这里插入图片描述我们右键第二个文件夹,点击 Manage Project Items。

在这里插入图片描述

点击右边的Add File,文件类型选择All files 选择 xx.s文件,添加即可。

在这里插入图片描述
至此我们再编译一下,0error,0warnings。
在这里插入图片描述至此,新工程创建完毕。

工程代码编写

实验实现的功能是每隔0.5S实现2个LED灯的翻转,在此,调用了HAL库的库函数实现功能。打开main.c 文件,在while(1)循环中插入如下代码,(注意:要把代码插入在 BEGIN与END之间,这样在下次添加系统配置的时候,此段代码不会被系统删除)。

/* USER CODE BEGIN 3 */
		HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);
		HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);
		HAL_Delay(500);

此段代码来源于,hal_gpio.c,此文件夹下,详尽描述了所有关于GPIO外设功能是使用以及初始化配置,其他用法均可参照文件中描述。
在这里插入图片描述

下载验证

将写好的程序,下载入正点原子开发板,符合实验现象,实验完毕。
在这里插入图片描述

结语

本实验主要讲述了一个新的工程的创建,以及如何时候使用HAL库中的库函数来实现我们想要的功能,HAL库的简便之处,就是我们可以使用图形界面对系统进行初始化配置,不会需要管理底层系统配置问题,极大的方便了对应用层面的开发。
码字不易,点个赞再走吧~

  • 10
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是实现 STM32 通过一个按键控制 LED 状态翻转的步骤和代码: 1. 首先,需要配置 LED 和按键的引脚。假设 LED 连接到 PB5 引脚,按键连接到 PA0 引脚。这可以通过以下代码实现: ``` GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); ``` 2. 接下来,需要在主函数中进行轮询扫描按键的状态。当按键按下时,需要改变 LED 的状态。这可以通过以下代码实现: ``` while (1) { if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == RESET) { GPIO_ToggleBits(GPIOB, GPIO_Pin_5); while (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == RESET) { } } } ``` 3. 在上述代码中,`GPIO_ReadInputDataBit` 函数用于读取 PA0 引脚的输入电平,如果 PA0 引脚接收到按键按下的信号,函数返回 RESET,否则返回 SET。如果函数返回 RESET,说明按键被按下,需要改变 LED 的状态。这可以通过 `GPIO_ToggleBits` 函数实现,该函数用于将 PB5 引脚的输出电平取反。 4. 为了避免按键在短时间内被多次触发,需要在按键按下后添加一个等待循环,直到按键被松开为止。这可以通过以下代码实现: ``` while (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == RESET) { } ``` 以上就是实现 STM32 通过一个按键控制 LED 状态翻转的全部步骤和代码。希望对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值