STM32hal库考试整理

前提

在这里插入图片描述

一、点灯

(1)图形配置

在这里插入图片描述

(2)代码实现

  1. 主函数中添加–代码只执行一次
  2. while中添加–代码一直执行
  3. 相关代码
    • HAL_GPIO_WritePin(led0_GPIO_Port, led0_Pin, 1);
      (用户自定义名字的引脚组,用户自定义的引脚号,1是输出高电平)
    • HAL_GPIO_TogglePin(led0_GPIO_Port, led0_Pin);
      (用户自定义名字的引脚组,用户自定义的引脚号)
    • HAL_Delay(100);
      (写100延时100ms)

(3)例子

  HAL_GPIO_WritePin(led1_GPIO_Port, led1_Pin, 1);//给高
  HAL_Delay(100);//100ms后
  HAL_GPIO_WritePin(led1_GPIO_Port, led1_Pin, 0);//给低
  HAL_Delay(100);//100ms后

二、LCD1602

(1)图形配置

在这里插入图片描述

(2)代码实现

  1. 加载头文件
    • #include “lcd1602.h”
    • #include “stdio.h”
  2. 主函数中初始化LCD1602
    • LCD_Init();
  3. 向屏幕写字符串
    • LCD_Puts(3, 0, “I LOVE YOU”);(3列,1行 ”XXXXX“)最好16个XXXX
  4. 将数值转化成字符写到屏幕
    • 定义temp:----uint8_t temp[16];
    • 定义adcvalue:----uint32_t adcvalue=0;
    • sprintf(temp,“ADC = %d”,adcvalue);将adcvalue变成字符型temp ”是temp的内容“
    • LCD_Puts(0, 1, temp);//将整形变量写入屏幕

三、外部中断按键

(1)图形配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)代码实现

  1. 回调函数实现 写主函数外面
    • void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
      在这里插入图片描述
  2. 回调函数实现模板
    void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
    {
    if(GPIO_Pin == key_Pin) // 固定 =自定义的引脚号
    {
    //用户代码
    }
    }

四、定时器

(1)图形配置

在这里插入图片描述

(2)代码实现

  1. 计算公式
    xxxus = x1*x2/8 其中x1 Pr;x2是Pe
    在这里插入图片描述
  2. 模板在主函数外面写
    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
    {
    if( htim == &htim2 )
    {
    //HAL_GPIO_TogglePin(led0_GPIO_Port, led0_Pin);
    //HAL_GPIO_WritePin(led0_GPIO_Port, led0_Pin, 1);
    }
    }
  3. 初始化操作
    在主函数中写启动定时器的函数 HAL_TIM_Base_Start_IT(&htim2);

五、串口

(1)图形配置

在这里插入图片描述

(2)代码实现

  1. HAL_UART_Transmit(&huart1, a, sizeof(a), 0xffff);
    (哪个串口,发送哪个变量,这个变量的大小,时间500/0xffff)
  2. 定义变量 uint8_t a[32]=“HELLO WORD”; / uint8_t a[32];
  3. 计算变量大小sizeof(a)
  4. 如果写在主函数 执行一次
  5. 如果写While中一直执行
  6. 如果发送ADC到串口
    • sprintf(temp,“ADC = %d”,adcvalue);将adcvalue变成字符型temp ”是temp的内容“
    • HAL_UART_Transmit(&huart1, temp, sizeof(temp), 0xffff);//将ADC写入串口黑框框

六、ADC

(1)图形配置

在这里插入图片描述
在这里插入图片描述

(2)代码实现

    HAL_ADC_Start(&hadc1);//启动ADC(ADC几)
    HAL_ADC_PollForConversion(&hadc1, 500);(等待读取数值)(ADC几,等待时间)
    adcvalue=HAL_ADC_GetValue(&hadc1);//将读取到的值给adcvalue

adcvalue是定义的变量:uint32_t adcvalue=0;必须32位 在主函数中定义

(3)例子

uint32_t adcvalue=0;
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, 500);
adcvalue=HAL_ADC_GetValue(&hadc1);
sprintf(temp,"ADCgg = %d",adcvalue);//将整型转化为字符型 只有字符型才能用下面两个函数显示
//LCD_Puts(0, 1, temp);//lcd显示ADC数值
HAL_UART_Transmit(&huart1, temp, sizeof(temp), 0xffff);//串口显示ADC数值

猜你喜欢

转载自blog.csdn.net/m0_58326153/article/details/130523868