首页/新闻资讯/正文详情

STM32 自学笔记 02

发布时间:2026/9/24 21:33:16 来源:云帆数科 栏目:资讯中心
STM32 自学笔记 02
# GPIO#软件平台 STM32CubeIde#软件包 STM32Cube_FW_F0_V1.11.6#系统平台 Win7初始化void MX_GPIO_Init(void){GPIO_InitTypeDef GPIO_InitStruct {0};/* GPIO Ports Clock Enable */__HAL_RCC_GPIOC_CLK_ENABLE();__HAL_RCC_GPIOF_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_RESET);/*Configure GPIO pin Output Level */HAL_GPIO_WritePin(GPIOB, LED3_Pin|LED1_Pin, GPIO_PIN_RESET);/*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_LOW;HAL_GPIO_Init(LED2_GPIO_Port, GPIO_InitStruct);/*Configure GPIO pins : PBPin PBPin */GPIO_InitStruct.Pin LED3_Pin|LED1_Pin;GPIO_InitStruct.Mode GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull GPIO_NOPULL;GPIO_InitStruct.Speed GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOB, GPIO_InitStruct);}有关Cubeide中的相关配置读者可自己设置遇到问题可自行解决HAL库参考手册STM32F072xB参考手册有关于HAL库各外设的相关函数、变量的定义读者可根据所学内容进行翻看本章重点学习内容①GPIO引脚输出控制②GPIO引脚电平状态获取③GPIO引脚翻转控制控制函数如下void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)以上函数源自 stm32f0xx_hal_gpio.c该文件包含8个函数功能实现读者可自行查阅---------------------------------------------------------------为了实现控制LED灯的闪烁控制如本章中控制LED1的闪烁其实是控制LED1所连接的PB1引脚电平变化从而实现了LED灯的闪烁代码如下/* USER CODE BEGIN Header *//********************************************************************************* file : main.c* brief : Main program body******************************************************************************* attention** Copyright (c) 2026 STMicroelectronics.* All rights reserved.** This software is licensed under terms that can be found in the LICENSE file* in the root directory of this software component.* If no LICENSE file comes with this software, it is provided AS-IS.********************************************************************************//* USER CODE END Header *//* Includes ------------------------------------------------------------------*/#include main.h#include gpio.h/* Private includes ----------------------------------------------------------*//* USER CODE BEGIN Includes *//* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*//* USER CODE BEGIN PTD *//* USER CODE END PTD *//* Private define ------------------------------------------------------------*//* USER CODE BEGIN PD *//* USER CODE END PD *//* Private macro -------------------------------------------------------------*//* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV *//* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/void SystemClock_Config(void);/* USER CODE BEGIN PFP *//* USER CODE END PFP *//* Private user code ---------------------------------------------------------*//* USER CODE BEGIN 0 *//* USER CODE END 0 *//*** brief The application entry point.* retval int*/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 */HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1);HAL_Delay(500);/* USER CODE BEGIN 3 */}/* USER CODE END 3 */}/*** brief System Clock Configuration* retval None*/void SystemClock_Config(void){RCC_OscInitTypeDef RCC_OscInitStruct {0};RCC_ClkInitTypeDef RCC_ClkInitStruct {0};/** Initializes the RCC Oscillators according to the specified parameters* in the RCC_OscInitTypeDef structure.*/RCC_OscInitStruct.OscillatorType RCC_OSCILLATORTYPE_HSE;RCC_OscInitStruct.HSEState RCC_HSE_ON;RCC_OscInitStruct.PLL.PLLState RCC_PLL_NONE;if (HAL_RCC_OscConfig(RCC_OscInitStruct) ! HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB buses clocks*/RCC_ClkInitStruct.ClockType RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1;RCC_ClkInitStruct.SYSCLKSource RCC_SYSCLKSOURCE_HSE;RCC_ClkInitStruct.AHBCLKDivider RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider RCC_HCLK_DIV1;if (HAL_RCC_ClockConfig(RCC_ClkInitStruct, FLASH_LATENCY_0) ! HAL_OK){Error_Handler();}}/* USER CODE BEGIN 4 *//* USER CODE END 4 *//*** brief This function is executed in case of error occurrence.* retval None*/void Error_Handler(void){/* USER CODE BEGIN Error_Handler_Debug *//* User can add his own implementation to report the HAL error return state */__disable_irq();while (1){}/* USER CODE END Error_Handler_Debug */}#ifdef USE_FULL_ASSERT/*** brief Reports the name of the source file and the source line number* where the assert_param error has occurred.* param file: pointer to the source file name* param line: assert_param error line source number* retval None*/void assert_failed(uint8_t *file, uint32_t line){/* USER CODE BEGIN 6 *//* User can add his own implementation to report the file name and line number,ex: printf(Wrong parameters value: file %s on line %d\r\n, file, line) *//* USER CODE END 6 */}#endif /* USE_FULL_ASSERT */

相关推荐

Claude Opus 5.5 深度解析:旗舰能力、定价革命与国内接入实战指南
Claude Opus 5.5 深度解析:旗舰能力、定价革命与国内接入实战指南

摘要2026 年 9 月 22 日,Anthropic 正式发布 Claude Opus 5.5,作为 Claude 5.5 系列的首款旗舰模型,它在多数工作任务上达到顶级旗舰 Claude Fable 5.1 的水平,在智能体编码、计算机操作、知识工作等多项基准测试中全面领先。更值… · 2026/9/24 21:33:10

联机游戏卡顿掉线原因排查:从路由器到游戏服务器的五步诊断法
联机游戏卡顿掉线原因排查:从路由器到游戏服务器的五步诊断法

1. 卡顿掉线先别急着骂服务器,先搞清楚问题出在哪一环玩代号鸢联机被卡掉线,大多数人的第一反应是“网易服务器又炸了”,这个判断有时候对,但更多时候冤枉了服务器。我玩这游戏从公测断断续续跟到现在的密探版本,联机翻… · 2026/9/24 21:33:10

BIND解析、nginx虚拟主机与Squid缓存配置:从域名到后端的完整链路实战
BIND解析、nginx虚拟主机与Squid缓存配置:从域名到后端的完整链路实战

最近在整理一套线上环境的访问链路,顺手把几台新机器的解析从公共 DNS 迁到了自建 BIND,后面挂着 nginx 虚拟主机跑不同业务,再在 nginx 和后端应用之间塞了一层 Squid 做缓存加速。这套组合不新鲜,BIND 管解析、nginx 管路由分流… · 2026/9/24 21:33:10

电路板元器件检测:YOLO小目标漏检与密集框调参实战
电路板元器件检测:YOLO小目标漏检与密集框调参实战

简介:本资源面向从事电子制造质检、PCB缺陷检测及YOLO目标检测实战的开发者与研究人员,提供一套可直接用于训练的电路板元器件图像数据集,覆盖目标检测、小目标检测与密集检测等典型场景。压缩包共约2000个文件,以1660个txt标签、… · 2026/9/24 22:03:04

单片机基础核心知识点汇总(四十三)
单片机基础核心知识点汇总(四十三)

目录 前言 一、软件定时器的核心本质 1、核心工作原理 2、核心特性 二、定时器服务任务:软件定时器的核心载体 1、服务任务的特点 2、核心影响 三、两种工作模式与核心 API 1、两种定时模式 2、核心 API 1. 创建定时器 2. 启动 / 停止 / 重置 3. 回调函数格式 四… · 2026/9/24 22:03:04

2009年408真题:Cache组相联映射地址计算三步拆解
2009年408真题:Cache组相联映射地址计算三步拆解

最近在复盘408真题的计组部分时,又把2009年第14题翻了出来。这道题本身只有短短几行字,考的是Cache组相联映射中最基础的一类计算:给定Cache总块数、每组路数和块大小,让你算主存某个字节地址会被装入到Cache的哪一个组。题目不长… · 2026/9/24 22:03:04

车辆检测数据集实战:从VOC转YOLO到yolov5训练避坑指南
车辆检测数据集实战:从VOC转YOLO到yolov5训练避坑指南

简介:这份资源是面向计算机视觉初学者与目标检测实践者的YOLOv5车辆检测数据集,类别聚焦为car,可用于交通监控、自动驾驶、安全驾驶等场景下的模型训练与验证。压缩包共2000个文件,以1285个txt标签、1284张jpg图像和1284个xml标注… · 2026/9/24 22:03:04

需求获取方法
需求获取方法

· 2026/9/24 22:03:04

WorkBuddy实操指南:从作业批改到错题重练,打造家庭AI助教
WorkBuddy实操指南:从作业批改到错题重练,打造家庭AI助教

家里有个正在上小学的孩子,你就会发现一个残酷的现实:不是每个题家长都讲得明白,更不是每个晚上都有耐心陪着磨作业。作文不会写,数学不会做,英语读完也不知道对不对,这组三连问大概能让一半家长当场破防。… · 2026/9/24 22:02:58

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码