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

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

时钟配置
STM32——使用cubemx和keil点亮第一个灯_第13张图片
6.进入工程管理页面,进行路径的选择,以及其他的配置。
STM32——使用cubemx和keil点亮第一个灯_第14张图片
点击code generator
STM32——使用cubemx和keil点亮第一个灯_第15张图片
j进行其他的设置
STM32——使用cubemx和keil点亮第一个灯_第16张图片
设置完成之后,点击GENERATER CODE
STM32——使用cubemx和keil点亮第一个灯_第17张图片
在弹出的页面的指示下,点击OPEN PROJECT。
CUBEMX的操作结束,下面进入KEIL界面。

三、keil操作以及实验现象
1.首先是各个地方的基本配置
STM32——使用cubemx和keil点亮第一个灯_第18张图片
edit >configuration
STM32——使用cubemx和keil点亮第一个灯_第19张图片
STM32——使用cubemx和keil点亮第一个灯_第20张图片
STM32——使用cubemx和keil点亮第一个灯_第21张图片
STM32——使用cubemx和keil点亮第一个灯_第22张图片
勾选Browse Information之后,可以实现程序的跳转。
STM32——使用cubemx和keil点亮第一个灯_第23张图片
点击debug选项,将ST—LINK换成CMSIS
STM32——使用cubemx和keil点亮第一个灯_第24张图片
之后继续点击settings
STM32——使用cubemx和keil点亮第一个灯_第25张图片
这里就表示可以识别到仿真器,并可以进行程序的下载。
点击Flash Download
STM32——使用cubemx和keil点亮第一个灯_第26张图片
勾选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进行操作
STM32——使用cubemx和keil点亮第一个灯_第27张图片
STM32——使用cubemx和keil点亮第一个灯_第28张图片
GPIO_PIN_10,代表的是H组的引脚10。
STM32——使用cubemx和keil点亮第一个灯_第29张图片
RESET代表是0,SET代表的是1。
这行代码就实现了一个简单的点灯操作。
实验现象
STM32——使用cubemx和keil点亮第一个灯_第30张图片
②咱们继续尝试,继续玩

 /* 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相连的发光二极管。
实验现象
STM32——使用cubemx和keil点亮第一个灯_第31张图片
同样的对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 */

实验结果
STM32——使用cubemx和keil点亮第一个灯_第32张图片
③难度升级,加一个按键操作控制灯的亮灭
我们首先看一下原理图。
STM32——使用cubemx和keil点亮第一个灯_第33张图片
这里拿PA0举例。
打开CUBEMX,搜索PA0,找到PA0这个引脚,并将其设置为输入模式。
STM32——使用cubemx和keil点亮第一个灯_第34张图片
STM32——使用cubemx和keil点亮第一个灯_第35张图片
那么按键就设置好了。我们点击GENERATE CODE。

原来的就被覆盖了,我们按照窗口提示,同意reload。
接下来进行对按键进行编码。
STM32——使用cubemx和keil点亮第一个灯_第36张图片


  /* 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 */
}

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

GPIO_PinState k1

Ⅱ、读取按键状态

	k1 = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0);

STM32——使用cubemx和keil点亮第一个灯_第37张图片
第一个参数为端口,第二个参数为具体的引脚编号。
Ⅲ、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);	
  }

你可能感兴趣的:(32单片机基础,stm32,嵌入式硬件,单片机)