STM32---嵌入式学习--开发板上官二号

758 阅读3分钟

STM32

先上废话

简介=--=

STM32是一系列由意法半导体(STMicroelectronics)推出的32位微控制器。STM32微控制器系列采用了ARM Cortex-M内核,这种内核提供了高性能、低功耗、高代码密度和易于开发的特点。因此,STM32微控制器广泛应用于嵌入式系统、智能家居、工业控制、汽车电子、医疗设备等领域。 STM32系列微控制器具有多种不同的系列和型号,这些型号具有不同的内存大小、外设和性能特点。此外,STM32还提供了丰富的开发工具和软件库,包括ST-Link调试器、CubeMX配置工具和HAL库等,这些工具和库可以使开发人员更快、更简便地开发STM32应用程序。

image.png

开发工具

  • keil5Keil uVision5是一种集成开发环境(IDE),用于嵌入式系统的开发。它支持多种编程语言和微控制器,并提供了强大的调试功能,使得开发人员可以在同一个环境中完成开发,提高了开发效率和可靠性。
  • STM32CubeMX是一个可视化配置工具,帮助STM32微控制器的开发人员更快、更简单地创建和配置项目。它可以自动生成初始化代码,并将其与用户的IDE集成,从而简化了代码编写过程。同时,它也集成了HAL库,使用户能够轻松地访问STM32微控制器的各种外设。使用STM32CubeMX可以提高开发效率和可靠性。
  • st-linkST-Link驱动是ST公司的开发工具,用于与STM32微控制器进行调试和编程,支持JTAG、SWD等多种调试接口,是STM32开发过程中必不可少的工具。通过官网提供的资源,开发人员可以更好地了解ST-Link的功能和使用方法,从而提高开发效率和开发质量。

keil5的安装过程我就不复述,配置也不需要灰常简单
STM32CubeMX的安装过程也并不是很复杂,有什么问题可以在评论区留言

详细截图与解说

image.png 我们安装好软件后会出现这个界面,点击ACCESS TO MCU SELECTOR我们会进入下一个界面,

image.png 在画圈圈的位置输入stm32芯片的型号,我用的芯片是STM32F101C8T6,在画圈圈的位置点击一下

image.png 会进入下一步

image.png 此处就是图文配置界面

image.png

项目名称和选择ide

image.png image.png image.png 经过这一系列的配置我们就可以得到一个配置好的32项目,我们只需要在项目里面的main函数里写代码就好了

image.png 我们点击打开项目,就是中间的那个
我们来到了这个界面

image.png

我使用的开发板

猿学社 “上官二号”开发板 014041ad3763934963670571b286ffc.jpg

cdc64e1c974dacc26917d5a2f6cf8db.jpg

代码(跑马灯的小程序)

由于开发板的不同,定义的引脚不同,故代码并不通用
思维方式相同,不要盲目抄袭喔

#include "main.h"
#include "gpio.h"


void SystemClock_Config(void);

int main(void)
{
 
  HAL_Init();


  SystemClock_Config();

  MX_GPIO_Init();
 
 
  while (1)             //这个里面是跑马灯的主要实现
  {
   
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8,GPIO_PIN_RESET);
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9,GPIO_PIN_SET);
	HAL_Delay(1000);//自带的库
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8,GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9,GPIO_PIN_RESET);
	HAL_Delay(1000);
   
  }

}


void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }


  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  {
    Error_Handler();
  }
}
void Error_Handler(void)
{

  __disable_irq();
  while (1)
  {
  }

}

#ifdef  USE_FULL_ASSERT

void assert_failed(uint8_t *file, uint32_t line)
{
 
}
#endif 

由于无法上传视频,所以,他成功了,只是你们看不到 今天32的分享就到这里了