STM32F103VET6开发板例程(一)-LED

原理图

三个LED均为上拉状态,GPIO输出低电平点亮,高电平熄灭。

CUBEMX配置

一 配置调试方式

二 选择时钟源

一般选择外部时钟源,选择晶体/陶瓷协震器模式

三 配置时钟树

注意开发板上的晶振频率,通过倍频配置为72Mhz

四 配置GPIO输出模式

根据原理图配置输出模式,初始状态设为高电平,保持熄灭状态。

五,选择生成工程

注意路径不要有中文,配置完成后勾选生成工程。

工程配置

一 创建驱动文件

新建BSP文件夹,在文件夹下新建led的驱动文件,并引入头文件驱动路径

将新建的驱动文件添加进工程中

二 编写驱动文件

bsp_led.h

objectivec 复制代码
#ifndef __BSP_LED_H__
#define __BSP_LED_H__

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include "main.h"

/*方便移植驱动文件*/
#define LED2_Pin GPIO_PIN_8
#define LED2_GPIO_Port GPIOD
#define LED0_Pin GPIO_PIN_6
#define LED0_GPIO_Port GPIOB
#define LED1_Pin GPIO_PIN_7
#define LED1_GPIO_Port GPIOB

void MYLED_GPIO_Init(void);
void LED0(uint8_t x);
void LED1(uint8_t x);
void LED2(uint8_t x);
void LED0_Toggle(void);
void LED1_Toggle(void);
void LED2_Toggle(void);





#ifdef __cplusplus
}
#endif
#endif 

bsp_led.c

objectivec 复制代码
#include "bsp_led.h"

/*复制GPIO初始化函数,方便移植*/
void MYLED_GPIO_Init(void)
{

  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOC_CLK_ENABLE();
  __HAL_RCC_GPIOD_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET);

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOB, LED0_Pin|LED1_Pin, GPIO_PIN_SET);

  /*Configure GPIO pin : PtPin */
  GPIO_InitStruct.Pin = LED2_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
  HAL_GPIO_Init(LED2_GPIO_Port, &GPIO_InitStruct);

  /*Configure GPIO pins : PBPin PBPin */
  GPIO_InitStruct.Pin = LED0_Pin|LED1_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

}

void LED0(uint8_t x)
{
	if(x== 1)
	{
		HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,GPIO_PIN_RESET);
	}
	else
	{
		HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,GPIO_PIN_SET);
	}
}
void LED1(uint8_t x)
{
	if(x== 1)
	{
		HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET);
	}
	else
	{
		HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_SET);
	}
}
void LED2(uint8_t x)
{
	if(x== 1)
	{
		HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_RESET);
	}
	else
	{
		HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_SET);
	}
}

void LED0_Toggle(void)
{
	HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);
}
void LED1_Toggle(void)
{
	HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);
}
void LED2_Toggle(void)
{
	HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);
}

main.c

objectivec 复制代码
//记得包含头文件
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		LED0_Toggle();
		LED1_Toggle();
		LED2_Toggle();
		HAL_Delay(500);


  }
  /* USER CODE END 3 */
}

实验结果

LED0-2闪烁

相关推荐
dump linux12 小时前
内核驱动调试接口与使用方法入门
linux·驱动开发·嵌入式硬件
项目題供诗13 小时前
51单片机入门(六)
单片机·嵌入式硬件·51单片机
代码游侠14 小时前
学习笔记——Linux内核与嵌入式开发1
linux·运维·前端·arm开发·单片机·嵌入式硬件·学习
宇钶宇夕14 小时前
CoDeSys入门实战一起学习(二十八):(LD)三台电机顺起逆停程序详解—上升、下降沿使用上
单片机·嵌入式硬件·学习
qq_4017004114 小时前
STM32晶振频率怎么选
stm32·单片机·嵌入式硬件
BackCatK Chen15 小时前
第 5 篇:TMC2240 寄存器体系详解|分类 + 读写逻辑 + 通用框架
单片机·嵌入式硬件·电机驱动·保姆级教程·tmc2240·寄存器详解·stm32实战
jingshaoqi_ccc15 小时前
使用GD32F103C8T6开发板的标准库实现硬件I2C协议通信(附源码下载地址)
单片机·嵌入式硬件
qq_25814297-npl15 小时前
三开门冰箱的接水盒(也称为储水盒或接水盘)正常情况下不会满水
单片机
宵时待雨15 小时前
STM32笔记归纳6:中断
笔记·stm32·嵌入式硬件
华清远见成都中心16 小时前
GPIO(通用输入输出)面试中高频问题
单片机·面试·职场和发展