当前位置:网站首页>蓝桥杯嵌入式学习总结(新版)

蓝桥杯嵌入式学习总结(新版)

2022-06-26 07:11:00 Yinzz2

1.LED

GPIO_output level 设置为 high

void led_show(uint16_t led,uint8_t state)
{
	if(state == 1)
	{
   HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);
     HAL_GPIO_WritePin(GPIOC,led<<8,GPIO_PIN_RESET);
	   HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
     HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
  }
	else
	{
	  HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);
     HAL_GPIO_WritePin(GPIOC,led<<8,GPIO_PIN_SET);
	   HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
     HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
	}
}

2.KEY

GPIO输入设置为上拉,三行式按键消抖具体上其他博客了解

_Bool key_flag=0;

unsigned char Trg;
unsigned char Cont;
void key_read(void)
{
  unsigned char ReadData = (KEYPORT)^0xff;
  Trg = ReadData & ( ReadData ^ Cont );
  Cont = ReadData;
}

//具体用法搜索三行式消抖
//inter.h

#ifndef  _INTER_H_
#define _INTER_H_

#include "main.h"

#define KB1 	HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)
#define KB2 	HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)
#define KB3 	HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2)
#define KB4 	HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)

#define KEYPORT KB1 | (KB2 << 1) | (KB3 << 2) | (KB4 << 3) | 0xf0
void key_read(void);
	
extern unsigned char Trg;
extern unsigned char Cont;
extern _Bool key_flag;
#endif
//在主函数上记得加上
HAL_TIM_Base_Start_IT(&htim3);


void    HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef * htim)
{
	static uint16_t key_count =0;
      if(htim->Instance == TIM3)
			{
				  key_count++;
				if(key_count==10)
				{
					key_count=0;
          key_flag=1;
			}
}
}

//定时器1ms触发一次,key_count为10时,相当于0.1s令key_flag置一

 3.PWM输出

主要是在Cubemx开启选择  PWM Generation CH1  自己按照需求设置Period,Prescaler和Pulse

//主函数上加入	HAL_TIM_PWM_Start(&htim16,TIM_CHANNEL_1);

//设置占空比     __HAL_TIM_SetCompare(&htim16,TIM_CHANNEL_1,pa6duty);
//相当于一个周期内设置了pa6duty个脉冲数


//设置频率      __HAL_TIM_SetAutoreload(&htim16,2000-1);
//相当于设置一个周期内有2000个脉冲

原网站

版权声明
本文为[Yinzz2]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_51062259/article/details/125380373