实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验

目录

三、硬件部分

【1】点灯实验

【2】按键控制灯实验

【3】uart串口实验

核心代码:

实验视频

实现流水灯

uart串口实验


三、硬件部分

GPIO

【1】点灯实验

1.首先找到要点的灯,在板子上看到对应的白色丝印,比如绿灯D10.然后打开底板原理图找到LED灯

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验_第1张图片

点亮绿灯只需要将网络标号LED4设置为低电平即可导通,绿灯亮。

CON1的5引脚

2.然后去核心板原理图去找对应的网络标号LED4,看到对应的引脚为PB0,即将PB0设置为低电平即可点亮

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验_第2张图片

  1. 配置STM32CubeMX

1)打开STM32CubeMX

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验_第3张图片

  1. 双击第二个Ux

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验_第4张图片

然后:

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验_第5张图片

然后:

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验_第6张图片

然后:

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验_第7张图片

然后:

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验_第8张图片

打开keil

1)打开创建文件的路径下MDK-ARM里面的工程文件

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验_第9张图片

2)打开main.c

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验_第10张图片

  1. 编写代码,注意写在BEGIN和END之间

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验_第11张图片

4)编译(F7)烧写(F8),烧写插入STLink,打开stm32电源

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验_第12张图片

  1. 按复位键

效果:


任务:

        实现流水灯:

        黄灯亮一秒

        蓝灯亮一秒

        绿灯亮一秒

【2】按键控制灯实验

  1. 找到按键的位置PA8
  2. 配置STM32CubeMX,PA8,输入,PB0输出
  3. 生成KEIL工程
  4. 写代码

读PA8引脚状态,如果按下反转灯

HAL_Delay(100);//延时消抖

int  ret  = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8);

if(ret == 1)

{

HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);//反转PB0

}

【3】uart串口实验

配置PA9,PA10分别为发送端和接收端

CubeMX

File->new project 输入stm32f051k8,选择ux

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验_第13张图片

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验_第14张图片

打开生成后的工程文件中的main.c

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验_第15张图片

打开串口调试工具:

实训4---硬件部分---点灯实验--按键控制灯实验--uart串口实验_第16张图片

核心代码:

uint8_t buttonState=0;   //记录按键时灯的状态
  
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		//HAL_Delay(1000);
	  
	 //按下就亮,放开就灭
	/*
	   
	  if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8)){
		  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
		  
	  }else{
		  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);

	  }
	 */
	 

  //按下就亮,再按就灭
/*
    if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8) == GPIO_PIN_SET) {
        HAL_Delay(50); // 增加延时以避免抖动
        if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8) == GPIO_PIN_SET) {
            if(buttonState == 0) {
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
                buttonState = 1;
            } else {
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
                buttonState = 0;
            }
            while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8) == GPIO_PIN_SET); // 等待按键释放
        }
    }
*/
	 
	 
	 
	 

  
  char buf[32]={0};
  HAL_UART_Receive(&huart1,buf,sizeof(buf),100);
  
  HAL_Delay(1000);
  //串口1
   HAL_UART_Transmit(&huart1,buf,sizeof(buf),1000);
   HAL_Delay(2000);
  
  }
  /* USER CODE END 3 */
}

实验视频

实现流水灯

流水灯

uart串口实验

uart串口实验

你可能感兴趣的:(平时学习,课外新知识,单片机,单片机,嵌入式硬件,c++,arm开发)