当前位置:   article > 正文

STM32——使用cubemx和keil点亮第一个灯_用cube生成后keil要重新设置reset and run

用cube生成后keil要重新设置reset and run

一、环境
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 */
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
代码解释
使用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 */
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

这段代码的含义和上面差不多,就是让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 */
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

实验结果
在这里插入图片描述
③难度升级,加一个按键操作控制灯的亮灭
我们首先看一下原理图。
在这里插入图片描述
这里拿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)
		}
		else
		 HAL_GPIO_ReadPin(GPIOH,GPIO_PIN_10,GPIO_PIN_SET)	
  }
  /* USER CODE END 3 */
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

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

GPIO_PinState k1
  • 1

Ⅱ、读取按键状态

	k1 = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0);
  • 1

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

	if(k1 == GPIO_PIN_SET)
		{
			HAL_GPIO_WritePin(GPIOH,GPIO_PIN_10,GPIO_PIN_RESET);
		}
		else
		 HAL_GPIO_WritePin(GPIOH,GPIO_PIN_10,GPIO_PIN_SET);	
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/220030?site
推荐阅读
相关标签
  

闽ICP备14008679号