STM32——使用cubemx和keil点亮第一个灯

news/2024/11/16 18:11:07/

一、环境
cubemx安装和搭建见博文
链接: STM32CubeMX安装
keil安装见软件安装管家,注意要是MDK版
二、cubemx操作
1.打开cubemx
在这里插入图片描述
2.选择ACCESS TO MCU SLCTOR,创建一个新的工程。
在这里插入图片描述
3.选择合适的芯片型号
在这里插入图片描述
具体的开发板芯片型号根据自己的板子来。我的是STMF429IG
在这里插入图片描述
4.选择IGTx之后,点击开始工程
在这里插入图片描述
在这里插入图片描述
5.进行引脚和时钟等的配置
在这里插入图片描述
在这里插入图片描述
引脚配置
在这里插入图片描述
要把PH10,PH11,PH12的引脚设置为输出模式。
搜索PH10,引脚会闪烁,然后点击引脚设置为输出模式
在这里插入图片描述
同样PH11,PH12都要进行这个操作。
设置完之后
在这里插入图片描述
将三个引脚的输出改为高电平。在这里插入图片描述

时钟配置
在这里插入图片描述
6.进入工程管理页面,进行路径的选择,以及其他的配置。
在这里插入图片描述
点击code generator
在这里插入图片描述
j进行其他的设置
在这里插入图片描述
设置完成之后,点击GENERATER CODE
在这里插入图片描述
在弹出的页面的指示下,点击OPEN PROJECT。
CUBEMX的操作结束,下面进入KEIL界面。

三、keil操作以及实验现象
1.首先是各个地方的基本配置
在这里插入图片描述
edit >configuration
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
勾选Browse Information之后,可以实现程序的跳转。
在这里插入图片描述
点击debug选项,将ST—LINK换成CMSIS
在这里插入图片描述
之后继续点击settings
在这里插入图片描述
这里就表示可以识别到仿真器,并可以进行程序的下载。
点击Flash Download
在这里插入图片描述
勾选reset and run 。
设置完后之后,点击ok进行确定。

2.程序的编辑
要把程序写在begin和and之间,这样可以避免重新进行配置的时候把我们自己写的代码刷掉。
①点亮第一个灯的代码如下。

  /* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 */HAL_GPIO_WritePin(GPIOH,GPIO_PIN_10,GPIO_PIN_RESET);/* USER CODE END 2 */

在这里插入图片描述
代码解释
使用HAL_GPIO_WritePin对GPIO口进行设置,
其中GPIOH,代表的是对GPIOH进行操作
在这里插入图片描述
在这里插入图片描述
GPIO_PIN_10,代表的是H组的引脚10。
在这里插入图片描述
RESET代表是0,SET代表的是1。
这行代码就实现了一个简单的点灯操作。
实验现象
在这里插入图片描述
②咱们继续尝试,继续玩

 /* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 */HAL_GPIO_WritePin(GPIOH,GPIO_PIN_10,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOH,GPIO_PIN_11,GPIO_PIN_RESET);/* USER CODE END 2 */

这段代码的含义和上面差不多,就是让PH10不置0,让PH11置0,从而实现点灯操作。这里是一个灯里面有三个不同颜色的灯珠,这次点亮的是与PH11相连的发光二极管。
实验现象
在这里插入图片描述
同样的对PH12进行操作

/* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 */HAL_GPIO_WritePin(GPIOH,GPIO_PIN_10,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOH,GPIO_PIN_11,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOH,GPIO_PIN_12,GPIO_PIN_RESET);/* USER CODE END 2 */

实验结果
在这里插入图片描述
③难度升级,加一个按键操作控制灯的亮灭
我们首先看一下原理图。
在这里插入图片描述
这里拿PA0举例。
打开CUBEMX,搜索PA0,找到PA0这个引脚,并将其设置为输入模式。
在这里插入图片描述
在这里插入图片描述
那么按键就设置好了。我们点击GENERATE CODE。

原来的就被覆盖了,我们按照窗口提示,同意reload。
接下来进行对按键进行编码。
在这里插入图片描述

/* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 */// HAL_GPIO_WritePin(GPIOH,GPIO_PIN_10,GPIO_PIN_SET);//HAL_GPIO_WritePin(GPIOH,GPIO_PIN_11,GPIO_PIN_SET);//HAL_GPIO_WritePin(GPIOH,GPIO_PIN_12,GPIO_PIN_RESET);GPIO_PinState k1/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */k1 = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0);if(k1 == GPIO_PIN_SET){HAL_GPIO_ReadPin(GPIOH,GPIO_PIN_10,GPIO_PIN_RESET)}elseHAL_GPIO_ReadPin(GPIOH,GPIO_PIN_10,GPIO_PIN_SET)	}/* USER CODE END 3 */
}

Ⅰ、初始化,将Pinstate用k1来标识。

GPIO_PinState k1

Ⅱ、读取按键状态

	k1 = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0);

在这里插入图片描述
第一个参数为端口,第二个参数为具体的引脚编号。
Ⅲ、if else,如果检测到按键是高电平,那么红灯亮,否则的话。不亮。

	if(k1 == GPIO_PIN_SET){HAL_GPIO_WritePin(GPIOH,GPIO_PIN_10,GPIO_PIN_RESET);}elseHAL_GPIO_WritePin(GPIOH,GPIO_PIN_10,GPIO_PIN_SET);	}

http://www.ppmy.cn/news/892761.html

相关文章

JavaScript之赛车游戏

<!DOCTYPE html> <html><head><meta charset"utf-8"><title>赛车游戏</title></head><body><!-- <img src"https://t7.baidu.com/it/u2607436094,546726765&fm193&fGIF" height100 width1…

Promise分享

手写promise之前需要知道 宏任务 & 微任务 我们都知道 Js 是单线程的&#xff0c;但是一些高耗时操作就带来了进程阻塞问题。为了解决这个问题&#xff0c;Js 有两种任务的执行模式&#xff1a;同步模式&#xff08;Synchronous&#xff09;和异步模式&#xff08;Asynchr…

easyx赛车小游戏(新手小白)

2021新年快乐呀&#xff0c;两天都没出去玩终于写完这个小游戏。 之前上一篇博文说过要写跑酷来着&#xff0c;但因为我实在太菜了就中途放弃了&#xff0c;换成了公路障碍赛车。。。 界面如图&#xff0c;感觉是个比较劣质的游戏。。。但是它还是一个有碰撞判断&#xff0c…

C/C++游戏项目教程:《雷霆战机》

《雷霆战机》是以太空科幻世界观&#xff0c;12星座关卡模式和弹幕联袂上演掌上“星球大战”。百种战机&#xff0c;千种弹幕&#xff0c;酷炫装备&#xff0c;强劲暴走&#xff0c;演绎别样星海激情。在继承了经典飞行射击游戏爽快体验的同时&#xff0c;更添加了革命性的创新…

carx2服务器维护不足什么问题,carx2赛车漂移

carx2赛车漂移玩起来手感超级棒,漂移的时候感觉非常刺激,地图蛮大的赛道外那些跑道好玩,地图数量不怎么多,而且大部分都要金币!我存了20多万,然后买新车,改装也花了很多钱! carx2赛车漂移介绍 很喜爱carx2赛车漂移这款游戏。最先,重中之重,把自动刹车关掉,或是降低,…

Unity3D教程:赛车漂移算法

漂移的解决方案。 方案1.整个赛车干脆都用translate做坐标移动&#xff0c;这个就是无视wheelcollider物理引擎的做法&#xff0c;新手适用&#xff0c;简单方便&#xff0c;但之后的开发上会有很多问题需要解决&#xff08;如果你想解决这些问题的话&#xff09;。 方案2.用…

疯狂的赛车下载

剧情简介 黄渤饰演的自行车车手耿浩&#xff0c;因为0.01秒落败&#xff0c;成为银牌车手&#xff0c;这是一条线&#xff1b;第二条线是大贼二贼&#xff0c;他们阴差阳错成了贼&#xff0c;最后还绑票伤人&#xff1b;第三条线是台湾来的黑帮四人组&#xff0c;他们意图在内…

Unity3D赛车游戏+脚本基础

前言 游戏对象实例化 Scenes游戏场景 GameObject游戏对象 Component组件 Component使用方法 预制体 Unity事件函数 Instantiate():实例化对象 什么是Time.deltaTime Transform的移动&#xff0c;旋转和缩放 实战:赛车游戏 运行演示 具体步骤 游戏打包流程 前言 …